1
0
mirror of synced 2025-12-19 18:14:56 -05:00

.github,tools: clean up dead files (#30011)

This commit is contained in:
Marius Posta
2023-08-31 13:34:41 -07:00
committed by GitHub
parent 25eafea36f
commit d5fdb1b982
40 changed files with 330 additions and 1785 deletions

View File

@@ -1,62 +0,0 @@
name: 🐛 Report a platform, infra or deployment bug
description: Use this template when you have a problem operating Airbyte platform
labels: [type/bug, area/platform, needs-triage]
body:
- type: markdown
attributes:
value: >
<p align="center">
<a target="_blank" href="https://airbyte.com">
<image>
<source srcset="https://raw.githubusercontent.com/airbytehq/airbyte/master/.github/octavia-issue-template.svg">
<img alt="octavia-welcome" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/.github/octavia-issue-template.svg" width="auto" height="120">
</image>
</a>
</p>
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report...
Make sure to update this issue with a concise title and provide all information you have to
help us debug the problem together. Issues not following the template will be closed.
- type: dropdown
id: deploy
validations:
required: true
attributes:
label: What method are you using to run Airbyte?
multiple: false
options:
- Docker
- Kubernetes
- type: input
id: platform-version
attributes:
label: Platform Version or Helm Chart Version
description: "Some examples are: (eg. 0.44.1, 0.30.0), you can find the version in the left bottom in Airbyte UI or in the .env / value.yaml file"
validations:
required: true
- type: dropdown
id: step
attributes:
label: What step the error happened?
multiple: false
options:
- On deploy
- During the Sync
- Upgrading the Platform or Helm Chart
- Other
- type: textarea
id: description
attributes:
label: Revelant information
description: Please give any additional information you have and steps to reproduce the problem.
- type: textarea
id: logs
attributes:
label: Relevant log output
description: |
Please copy and paste any relevant log output.
This will be automatically formatted into code, so no need for backticks.
We strongly recommend to upload the log file for further debugging.
render: shell

View File

@@ -1,23 +0,0 @@
name: "Runner CI Java Tests"
description: "Runner CI Java Tests"
inputs:
module-name:
required: true
module-folder:
required: true
runs:
using: "composite"
steps:
- name: "Build"
shell: bash
run: |
rm -rf ${{ inputs.module-folder }}/.venv ${{ inputs.module-folder }}/build
ROOT_DIR=$(git rev-parse --show-toplevel)
ARG=:$(python -c "import os; print(os.path.relpath('${{ inputs.module-folder }}', start='${ROOT_DIR}').replace('/', ':') )")
echo "./gradlew --no-daemon $ARG:build"
./gradlew --no-daemon "$ARG:clean"
./gradlew --no-daemon "$ARG:build"

View File

@@ -1,54 +0,0 @@
name: "Runner CI Python Tests"
description: "Runner CI Python Tests"
inputs:
module-name:
required: true
module-folder:
required: true
outputs:
coverage-paths:
description: "Coverage Paths"
value: ${{ steps.build-coverage-reports.outputs.coverage-paths }}
flake8-logs:
description: "Flake8 Logs"
value: ${{ steps.build-linter-reports.outputs.flake8-logs }}
mypy-logs:
description: "MyPy Logs"
value: ${{ steps.build-linter-reports.outputs.mypy-logs }}
black-diff:
description: "Black Diff"
value: ${{ steps.build-linter-reports.outputs.black-diff }}
isort-diff:
description: "Isort Diff"
value: ${{ steps.build-linter-reports.outputs.isort-diff }}
runs:
using: "composite"
steps:
- name: Build Coverage Reports
id: build-coverage-reports
shell: bash
run: |
GRADLE_JOB=$(source ./tools/lib/lib.sh; full_path_to_gradle_path ${{ inputs.module-folder }} "unitTest")
REPORT_FOLDER="${{ inputs.module-folder }}/coverage/"
./gradlew --no-daemon -Preports_folder=${REPORT_FOLDER} ${GRADLE_JOB}
echo "coverage-paths=coverage/coverage.xml" >> $GITHUB_OUTPUT
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
with:
file: ${{ steps.build-coverage-reports.outputs.coverage-paths }}
name: "UnitTests of ${{ inputs.module-name }}"
- name: Build Linter Reports
id: build-linter-reports
shell: bash
run: |
GRADLE_JOB=$(source ./tools/lib/lib.sh; full_path_to_gradle_path ${{ inputs.module-folder }} "airbytePythonReport")
REPORT_FOLDER="${{ inputs.module-folder }}/reports/"
./gradlew --no-daemon -Preports_folder=${REPORT_FOLDER} ${GRADLE_JOB}
echo "mypy-logs=reports/mypy.log" >> $GITHUB_OUTPUT
echo "black-diff=reports/black.diff" >> $GITHUB_OUTPUT
echo "isort-diff=reports/isort.diff" >> $GITHUB_OUTPUT
echo "flake8-logs=reports/flake.txt" >> $GITHUB_OUTPUT

34
.github/labeler.yml vendored
View File

@@ -1,36 +1,8 @@
# union of frontend, api, server, scheduler, protocol, worker, kubernetes
area/platform:
- airbyte-api/*
- airbyte-api/**/*
- airbyte-persistence/*
- airbyte-persistence/**/*
- airbyte-server/*
- airbyte-server/**/*
- airbyte-workers/*
- airbyte-workers/**/*
- kube/*
- kube/**/*
- charts/*
- charts/**/*
# Union of api, connectors, documentation, octavia-cli, CDK and normalization.
area/api:
- airbyte-api/*
- airbyte-api/**/*
area/server:
- airbyte-server/*
- airbyte-server/**/*
area/worker:
- airbyte-workers/*
- airbyte-workers/**/*
kubernetes:
- kube/*
- kube/**/*
- charts/*
- charts/**/*
area/connectors:
- airbyte-integrations/connectors/*
- airbyte-integrations/connectors/**/*
@@ -39,6 +11,10 @@ area/documentation:
- docs/*
- docs/**/*
area/octavia-cli:
- octavia-cli/*
- octavia-cli/**/*
CDK:
- airbyte-cdk/*
- airbyte-cdk/**/*

View File

@@ -25,13 +25,8 @@ jobs:
test
legacy-test
test-performance
build-connector
publish-connector
publish
legacy-publish
publish-external
gke-kube-test
run-specific-test
connector-performance
static-args: |
repo=${{ steps.getref.outputs.repo }}

View File

@@ -1,138 +1,420 @@
# Contributors
* [69mb](https://github.com/69mb)
* [addack](https://github.com/addack)
* [a-honcharenko](https://github.com/a-honcharenko)
* [aadityasinha-dotcom](https://github.com/aadityasinha-dotcom)
* [aaronsteers](https://github.com/aaronsteers)
* [aazam-gh](https://github.com/aazam-gh)
* [abaerptc](https://github.com/abaerptc)
* [aballiet](https://github.com/aballiet)
* [achaussende](https://github.com/achaussende)
* [ad-m](https://github.com/ad-m)
* [adam-bloom](https://github.com/adam-bloom)
* [adamf](https://github.com/adamf)
* [adamschmidt](https://github.com/adamschmidt)
* [AetherUnbound](https://github.com/AetherUnbound)
* [afranzi](https://github.com/afranzi)
* [agrass](https://github.com/agrass)
* [ahmed-buksh](https://github.com/ahmed-buksh)
* [airbyte-jenny](https://github.com/airbyte-jenny)
* [ajmhatch](https://github.com/ajmhatch)
* [ajzo90](https://github.com/ajzo90)
* [akashkulk](https://github.com/akashkulk)
* [akulgoel96](https://github.com/akulgoel96)
* [alafanechere](https://github.com/alafanechere)
* [alallema](https://github.com/alallema)
* [albert-marrero](https://github.com/albert-marrero)
* [alex-danilin](https://github.com/alex-danilin)
* [alex-gron](https://github.com/alex-gron)
* [alexander-marquardt](https://github.com/alexander-marquardt)
* [AlexanderBatoulis](https://github.com/AlexanderBatoulis)
* [alexandertsukanov](https://github.com/alexandertsukanov)
* [alexandr-shegeda](https://github.com/alexandr-shegeda)
* [alexchouraki](https://github.com/alexchouraki)
* [AlexJameson](https://github.com/AlexJameson)
* [alexnikitchuk](https://github.com/alexnikitchuk)
* [Alihassanc5](https://github.com/Alihassanc5)
* [Allexik](https://github.com/Allexik)
* [alovew](https://github.com/alovew)
* [AM-I-Human](https://github.com/AM-I-Human)
* [amaliaroye](https://github.com/amaliaroye)
* [ambirdsall](https://github.com/ambirdsall)
* [aminamos](https://github.com/aminamos)
* [amitku](https://github.com/amitku)
* [Amruta-Ranade](https://github.com/Amruta-Ranade)
* [anamargaridarl](https://github.com/anamargaridarl)
* [andnig](https://github.com/andnig)
* [andresbravog](https://github.com/andresbravog)
* [andrewlreeve](https://github.com/andrewlreeve)
* [andreyAtBB](https://github.com/andreyAtBB)
* [andriikorotkov](https://github.com/andriikorotkov)
* [andrzejdackiewicz](https://github.com/andrzejdackiewicz)
* [andyjih](https://github.com/andyjih)
* [AndyTwiss](https://github.com/AndyTwiss)
* [animer3009](https://github.com/animer3009)
* [anna-geller](https://github.com/anna-geller)
* [annalvova05](https://github.com/annalvova05)
* [antixar](https://github.com/antixar)
* [antonioneto-hotmart](https://github.com/antonioneto-hotmart)
* [anujgupta0711](https://github.com/anujgupta0711)
* [Anurag870](https://github.com/Anurag870)
* [anushree-agrawal](https://github.com/anushree-agrawal)
* [apostoltego](https://github.com/apostoltego)
* [archangelic](https://github.com/archangelic)
* [arimbr](https://github.com/arimbr)
* [arnaudjnn](https://github.com/arnaudjnn)
* [ArneZsng](https://github.com/ArneZsng)
* [arsenlosenko](https://github.com/arsenlosenko)
* [artem1205](https://github.com/artem1205)
* [artusiep](https://github.com/artusiep)
* [asafepy](https://github.com/asafepy)
* [asyarif93](https://github.com/asyarif93)
* [augan-rymkhan](https://github.com/augan-rymkhan)
* [Auric-Manteo](https://github.com/Auric-Manteo)
* [avaidyanatha](https://github.com/avaidyanatha)
* [avida](https://github.com/avida)
* [avirajsingh7](https://github.com/avirajsingh7)
* [axaysagathiya](https://github.com/axaysagathiya)
* [azhard](https://github.com/azhard)
* [b4stien](https://github.com/b4stien)
* [bala-ceg](https://github.com/bala-ceg)
* [bazarnov](https://github.com/bazarnov)
* [bbugh](https://github.com/bbugh)
* [bcbeidel](https://github.com/bcbeidel)
* [bdashrad](https://github.com/bdashrad)
* [benmoriceau](https://github.com/benmoriceau)
* [BenoitFayolle](https://github.com/BenoitFayolle)
* [BenoitHugonnard](https://github.com/BenoitHugonnard)
* [bgroff](https://github.com/bgroff)
* [Bhupesh-V](https://github.com/Bhupesh-V)
* [BirdboyBolu](https://github.com/BirdboyBolu)
* [bjgbeelen](https://github.com/bjgbeelen)
* [bkrausz](https://github.com/bkrausz)
* [bleonard](https://github.com/bleonard)
* [bnchrch](https://github.com/bnchrch)
* [bobvanluijt](https://github.com/bobvanluijt)
* [brebuanirello-equinix](https://github.com/brebuanirello-equinix)
* [BrentSouza](https://github.com/BrentSouza)
* [brianjlai](https://github.com/brianjlai)
* [brunofaustino](https://github.com/brunofaustino)
* [bstrawson](https://github.com/bstrawson)
* [btkcodedev](https://github.com/btkcodedev)
* [burmecia](https://github.com/burmecia)
* [bzAmin](https://github.com/bzAmin)
* [calebfornari](https://github.com/calebfornari)
* [cameronwtaylor](https://github.com/cameronwtaylor)
* [camro](https://github.com/camro)
* [carlkibler](https://github.com/carlkibler)
* [carlonuccio](https://github.com/carlonuccio)
* [catpineapple](https://github.com/catpineapple)
* [cgardens](https://github.com/cgardens)
* [chandrasekharan98](https://github.com/chandrasekharan98)
* [ChristoGrab](https://github.com/ChristoGrab)
* [ChristopheDuong](https://github.com/ChristopheDuong)
* [ciancullinan](https://github.com/ciancullinan)
* [cirdes](https://github.com/cirdes)
* [cjwooo](https://github.com/cjwooo)
* [clnoll](https://github.com/clnoll)
* [cobobrien](https://github.com/cobobrien)
* [coetzeevs](https://github.com/coetzeevs)
* [coeurdestenebres](https://github.com/coeurdestenebres)
* [colesnodgrass](https://github.com/colesnodgrass)
* [collinscangarella](https://github.com/collinscangarella)
* [cpdeethree](https://github.com/cpdeethree)
* [CrafterKolyan](https://github.com/CrafterKolyan)
* [cstruct](https://github.com/cstruct)
* [ct-martin](https://github.com/ct-martin)
* [cuyk](https://github.com/cuyk)
* [cynthiaxyin](https://github.com/cynthiaxyin)
* [CyprienBarbault](https://github.com/CyprienBarbault)
* [czuares](https://github.com/czuares)
* [Daemonxiao](https://github.com/Daemonxiao)
* [dainiussa](https://github.com/dainiussa)
* [dalo390](https://github.com/dalo390)
* [damianlegawiec](https://github.com/damianlegawiec)
* [dandpz](https://github.com/dandpz)
* [daniel-cortez-stevenson](https://github.com/daniel-cortez-stevenson)
* [danieldiamond](https://github.com/danieldiamond)
* [Danucas](https://github.com/Danucas)
* [danvass](https://github.com/danvass)
* [darian-heede](https://github.com/darian-heede)
* [darynaishchenko](https://github.com/darynaishchenko)
* [DavidSpek](https://github.com/DavidSpek)
* [davinchia](https://github.com/davinchia)
* [davydov-d](https://github.com/davydov-d)
* [dbyzero](https://github.com/dbyzero)
* [ddoyediran](https://github.com/ddoyediran)
* [deepansh96](https://github.com/deepansh96)
* [delenamalan](https://github.com/delenamalan)
* [denis-sokolov](https://github.com/denis-sokolov)
* [dependabot[bot]](https://github.com/apps/dependabot)
* [dictcp](https://github.com/dictcp)
* [didistars328](https://github.com/didistars328)
* [digambar-t7](https://github.com/digambar-t7)
* [dijonkitchen](https://github.com/dijonkitchen)
* [dizel852](https://github.com/dizel852)
* [dmateusp](https://github.com/dmateusp)
* [DominusKelvin](https://github.com/DominusKelvin)
* [domzae](https://github.com/domzae)
* [DoNotPanicUA](https://github.com/DoNotPanicUA)
* [Dracyr](https://github.com/Dracyr)
* [drrest](https://github.com/drrest)
* [dtt101](https://github.com/dtt101)
* [edbizarro](https://github.com/edbizarro)
* [edgao](https://github.com/edgao)
* [edmundito](https://github.com/edmundito)
* [efimmatytsin](https://github.com/efimmatytsin)
* [eliziario](https://github.com/eliziario)
* [elliottrabac](https://github.com/elliottrabac)
* [emmaling27](https://github.com/emmaling27)
* [erica-airbyte](https://github.com/erica-airbyte)
* [erohmensing](https://github.com/erohmensing)
* [etsybaev](https://github.com/etsybaev)
* [eugene-kulak](https://github.com/eugene-kulak)
* [evantahler](https://github.com/evantahler)
* [ffabss](https://github.com/ffabss)
* [flash1293](https://github.com/flash1293)
* [franviera92](https://github.com/franviera92)
* [freimer](https://github.com/freimer)
* [FUT](https://github.com/FUT)
* [gaart](https://github.com/gaart)
* [gasparakos](https://github.com/gasparakos)
* [geekwhocodes](https://github.com/geekwhocodes)
* [gingeard](https://github.com/gingeard)
* [ganpatagarwal](https://github.com/ganpatagarwal)
* [gargatuma](https://github.com/gargatuma)
* [gergelylendvai](https://github.com/gergelylendvai)
* [girarda](https://github.com/girarda)
* [git-phu](https://github.com/git-phu)
* [github-actions[bot]](https://github.com/apps/github-actions)
* [Gitznik](https://github.com/Gitznik)
* [gordalina](https://github.com/gordalina)
* [gosusnp](https://github.com/gosusnp)
* [grebessi](https://github.com/grebessi)
* [grishick](https://github.com/grishick)
* [grubberr](https://github.com/grubberr)
* [gvillafanetapia](https://github.com/gvillafanetapia)
* [h7kanna](https://github.com/h7kanna)
* [haliva-firmbase](https://github.com/haliva-firmbase)
* [haithem-souala](https://github.com/haithem-souala)
* [haoranyu](https://github.com/haoranyu)
* [harshithmullapudi](https://github.com/harshithmullapudi)
* [heade](https://github.com/heade)
* [hehex9](https://github.com/hehex9)
* [helderco](https://github.com/helderco)
* [henriblancke](https://github.com/henriblancke)
* [Hesperide](https://github.com/Hesperide)
* [hillairet](https://github.com/hillairet)
* [himanshuc3](https://github.com/himanshuc3)
* [hntan](https://github.com/hntan)
* [htrueman](https://github.com/htrueman)
* [hudsondba](https://github.com/hudsondba)
* [hydrosquall](https://github.com/hydrosquall)
* [iberchid](https://github.com/iberchid)
* [igrankova](https://github.com/igrankova)
* [igsaf2](https://github.com/igsaf2)
* [Imbruced](https://github.com/Imbruced)
* [irynakruk](https://github.com/irynakruk)
* [isaacharrisholt](https://github.com/isaacharrisholt)
* [isalikov](https://github.com/isalikov)
* [itaiad200](https://github.com/itaiad200)
* [itaseskii](https://github.com/itaseskii)
* [jacqueskpoty](https://github.com/jacqueskpoty)
* [jaimefr](https://github.com/jaimefr)
* [Jamakase](https://github.com/Jamakase)
* [Janardhanpoola](https://github.com/Janardhanpoola)
* [jinnig](https://github.com/jinnig)
* [Jagrutiti](https://github.com/Jagrutiti)
* [jamakase](https://github.com/jamakase)
* [jartek](https://github.com/jartek)
* [jbfbell](https://github.com/jbfbell)
* [jcowanpdx](https://github.com/jcowanpdx)
* [jdclarke5](https://github.com/jdclarke5)
* [jdpgrailsdev](https://github.com/jdpgrailsdev)
* [jeremySrgt](https://github.com/jeremySrgt)
* [jhajajaas](https://github.com/jhajajaas)
* [jhammarstedt](https://github.com/jhammarstedt)
* [jnr0790](https://github.com/jnr0790)
* [joelluijmes](https://github.com/joelluijmes)
* [johnlafleur](https://github.com/johnlafleur)
* [jonathan-duval](https://github.com/jonathan-duval)
* [JonsSpaghetti](https://github.com/JonsSpaghetti)
* [jonstacks](https://github.com/jonstacks)
* [jordan-glitch](https://github.com/jordan-glitch)
* [josephkmh](https://github.com/josephkmh)
* [jrhizor](https://github.com/jrhizor)
* [juliachvyrova](https://github.com/juliachvyrova)
* [JulianRommel](https://github.com/JulianRommel)
* [juliatournant](https://github.com/juliatournant)
* [justinbchau](https://github.com/justinbchau)
* [juweins](https://github.com/juweins)
* [jzcruiser](https://github.com/jzcruiser)
* [kaklakariada](https://github.com/kaklakariada)
* [karinakuz](https://github.com/karinakuz)
* [kattos-aws](https://github.com/kattos-aws)
* [KayakinKoder](https://github.com/KayakinKoder)
* [keu](https://github.com/keu)
* [kgrover](https://github.com/kgrover)
* [kimerinn](https://github.com/kimerinn)
* [koconder](https://github.com/koconder)
* [koji-m](https://github.com/koji-m)
* [krishnaglick](https://github.com/krishnaglick)
* [krisjan-oldekamp](https://github.com/krisjan-oldekamp)
* [ksengers](https://github.com/ksengers)
* [kzzzr](https://github.com/kzzzr)
* [lazebnyi](https://github.com/lazebnyi)
* [leo-schick](https://github.com/leo-schick)
* [letiescanciano](https://github.com/letiescanciano)
* [lgomezm](https://github.com/lgomezm)
* [lideke](https://github.com/lideke)
* [lizdeika](https://github.com/lizdeika)
* [lmeyerov](https://github.com/lmeyerov)
* [luizgribeiro](https://github.com/luizgribeiro)
* [m-ronchi](https://github.com/m-ronchi)
* [lmossman](https://github.com/lmossman)
* [maciej-nedza](https://github.com/maciej-nedza)
* [macmv](https://github.com/macmv)
* [Mainara](https://github.com/Mainara)
* [makalaaneesh](https://github.com/makalaaneesh)
* [manavkohli](https://github.com/manavkohli)
* [makyash](https://github.com/makyash)
* [malikdiarra](https://github.com/malikdiarra)
* [marcelopio](https://github.com/marcelopio)
* [marcosmarxm](https://github.com/marcosmarxm)
* [mariamthiam](https://github.com/mariamthiam)
* [masonwheeler](https://github.com/masonwheeler)
* [MatheusdiPaula](https://github.com/MatheusdiPaula)
* [masyagin1998](https://github.com/masyagin1998)
* [matter-q](https://github.com/matter-q)
* [maxi297](https://github.com/maxi297)
* [MaxKrog](https://github.com/MaxKrog)
* [MaxwellJK](https://github.com/MaxwellJK)
* [mbbroberg](https://github.com/mbbroberg)
* [mhamas](https://github.com/mhamas)
* [mdibaiee](https://github.com/mdibaiee)
* [mfsiega-airbyte](https://github.com/mfsiega-airbyte)
* [michaelnguyen26](https://github.com/michaelnguyen26)
* [michel-tricot](https://github.com/michel-tricot)
* [mickaelandrieu](https://github.com/mickaelandrieu)
* [midavadim](https://github.com/midavadim)
* [mid](https://github.com/mid)
* [mildbyte](https://github.com/mildbyte)
* [minimax75](https://github.com/minimax75)
* [mjirv](https://github.com/mjirv)
* [misteryeo](https://github.com/misteryeo)
* [mkhokh-33](https://github.com/mkhokh-33)
* [mlavoie-sm360](https://github.com/mlavoie-sm360)
* [mmolimar](https://github.com/mmolimar)
* [MohamadHaziq](https://github.com/MohamadHaziq)
* [mohammad-bolt](https://github.com/mohammad-bolt)
* [moszutij](https://github.com/moszutij)
* [mohamagdy](https://github.com/mohamagdy)
* [mohitreddy1996](https://github.com/mohitreddy1996)
* [monai](https://github.com/monai)
* [mrhallak](https://github.com/mrhallak)
* [Muriloo](https://github.com/Muriloo)
* [muutech](https://github.com/muutech)
* [nclsbayona](https://github.com/nclsbayona)
* [nicholasbull](https://github.com/nicholasbull)
* [mustangJaro](https://github.com/mustangJaro)
* [Mykyta-Serbynevskyi](https://github.com/Mykyta-Serbynevskyi)
* [n0rritt](https://github.com/n0rritt)
* [nastra](https://github.com/nastra)
* [nataliekwong](https://github.com/nataliekwong)
* [natalyjazzviolin](https://github.com/natalyjazzviolin)
* [nauxliu](https://github.com/nauxliu)
* [nguyenaiden](https://github.com/nguyenaiden)
* [NipunaPrashan](https://github.com/NipunaPrashan)
* [Nmaxime](https://github.com/Nmaxime)
* [noahkawasaki-airbyte](https://github.com/noahkawasaki-airbyte)
* [noahkawasakigoogle](https://github.com/noahkawasakigoogle)
* [novotl](https://github.com/novotl)
* [ntucker](https://github.com/ntucker)
* [numphileo](https://github.com/numphileo)
* [nyergler](https://github.com/nyergler)
* [octavia-squidington-iii](https://github.com/octavia-squidington-iii)
* [olivermeyer](https://github.com/olivermeyer)
* [omid](https://github.com/omid)
* [oreopot](https://github.com/oreopot)
* [pabloescoder](https://github.com/pabloescoder)
* [panhavad](https://github.com/panhavad)
* [pecalleja](https://github.com/pecalleja)
* [pedroslopez](https://github.com/pedroslopez)
* [perangel](https://github.com/perangel)
* [peter279k](https://github.com/peter279k)
* [PhilipCorr](https://github.com/PhilipCorr)
* [philippeboyd](https://github.com/philippeboyd)
* [Phlair](https://github.com/Phlair)
* [pmossman](https://github.com/pmossman)
* [po3na4skld](https://github.com/po3na4skld)
* [ppatali](https://github.com/ppatali)
* [PoCTo](https://github.com/PoCTo)
* [postamar](https://github.com/postamar)
* [prasrvenkat](https://github.com/prasrvenkat)
* [rclmenezes](https://github.com/rclmenezes)
* [prateekmukhedkar](https://github.com/prateekmukhedkar)
* [proprefenetre](https://github.com/proprefenetre)
* [Pwaldi](https://github.com/Pwaldi)
* [rach-r](https://github.com/rach-r)
* [ramonvermeulen](https://github.com/ramonvermeulen)
* [ReptilianBrain](https://github.com/ReptilianBrain)
* [roshan](https://github.com/roshan)
* [rileybrook](https://github.com/rileybrook)
* [RobertoBonnet](https://github.com/RobertoBonnet)
* [robgleason](https://github.com/robgleason)
* [RobLucchi](https://github.com/RobLucchi)
* [rodireich](https://github.com/rodireich)
* [roisinbolt](https://github.com/roisinbolt)
* [roman-romanov-o](https://github.com/roman-romanov-o)
* [roman-yermilov-gl](https://github.com/roman-yermilov-gl)
* [ron-damon](https://github.com/ron-damon)
* [rparrapy](https://github.com/rparrapy)
* [sabifranjo](https://github.com/sabifranjo)
* [ryankfu](https://github.com/ryankfu)
* [sajarin](https://github.com/sajarin)
* [samos123](https://github.com/samos123)
* [sarafonseca-123](https://github.com/sarafonseca-123)
* [sashaNeshcheret](https://github.com/sashaNeshcheret)
* [SatishChGit](https://github.com/SatishChGit)
* [sbjorn](https://github.com/sbjorn)
* [schlattk](https://github.com/schlattk)
* [scottleechua](https://github.com/scottleechua)
* [sdairs](https://github.com/sdairs)
* [sergei-solonitcyn](https://github.com/sergei-solonitcyn)
* [sergio-ropero](https://github.com/sergio-ropero)
* [sh4sh](https://github.com/sh4sh)
* [shadabshaukat](https://github.com/shadabshaukat)
* [sherifnada](https://github.com/sherifnada)
* [subhaklp](https://github.com/subhaklp)
* [Shishir-rmv](https://github.com/Shishir-rmv)
* [shrodingers](https://github.com/shrodingers)
* [shyngysnurzhan](https://github.com/shyngysnurzhan)
* [siddhant3030](https://github.com/siddhant3030)
* [sivankumar86](https://github.com/sivankumar86)
* [snyk-bot](https://github.com/snyk-bot)
* [SofiiaZaitseva](https://github.com/SofiiaZaitseva)
* [sophia-wiley](https://github.com/sophia-wiley)
* [SPTKL](https://github.com/SPTKL)
* [subhamX](https://github.com/subhamX)
* [subodh1810](https://github.com/subodh1810)
* [tgiardina](https://github.com/tgiardina)
* [suhomud](https://github.com/suhomud)
* [supertopher](https://github.com/supertopher)
* [swyxio](https://github.com/swyxio)
* [tbcdns](https://github.com/tbcdns)
* [tealjulia](https://github.com/tealjulia)
* [terencecho](https://github.com/terencecho)
* [thanhlmm](https://github.com/thanhlmm)
* [thomas-vl](https://github.com/thomas-vl)
* [troyharvey](https://github.com/troyharvey)
* [timroes](https://github.com/timroes)
* [tirth7777777](https://github.com/tirth7777777)
* [tjirab](https://github.com/tjirab)
* [tkorenko](https://github.com/tkorenko)
* [tolik0](https://github.com/tolik0)
* [topefolorunso](https://github.com/topefolorunso)
* [trowacat](https://github.com/trowacat)
* [tryangul](https://github.com/tryangul)
* [TSkrebe](https://github.com/TSkrebe)
* [tuanchris](https://github.com/tuanchris)
* [tuliren](https://github.com/tuliren)
* [tyagi-data-wizard](https://github.com/tyagi-data-wizard)
* [tybernstein](https://github.com/tybernstein)
* [TymoshokDmytro](https://github.com/TymoshokDmytro)
* [tyschroed](https://github.com/tyschroed)
* [varunbpatil](https://github.com/varunbpatil)
* [vinhloc30796](https://github.com/vinhloc30796)
* [ufou](https://github.com/ufou)
* [Upmitt](https://github.com/Upmitt)
* [VitaliiMaltsev](https://github.com/VitaliiMaltsev)
* [vitaliizazmic](https://github.com/vitaliizazmic)
* [vladimir-remar](https://github.com/vladimir-remar)
* [vovavovavovavova](https://github.com/vovavovavovavova)
* [vsayer](https://github.com/vsayer)
* [wallies](https://github.com/wallies)
* [winar-jin](https://github.com/winar-jin)
* [wissevrowl](https://github.com/wissevrowl)
* [Wittiest](https://github.com/Wittiest)
* [wjwatkinson](https://github.com/wjwatkinson)
* [Xabilahu](https://github.com/Xabilahu)
* [xiaohansong](https://github.com/xiaohansong)
* [xpuska513](https://github.com/xpuska513)
* [yahu98](https://github.com/yahu98)
* [yannibenoit](https://github.com/yannibenoit)
* [yaroslav-dudar](https://github.com/yaroslav-dudar)
* [yaroslav-hrytsaienko](https://github.com/yaroslav-hrytsaienko)
* [YatsukBogdan1](https://github.com/YatsukBogdan1)
* [ycherniaiev](https://github.com/ycherniaiev)
* [yevhenii-ldv](https://github.com/yevhenii-ldv)
* [YiyangLi](https://github.com/YiyangLi)
* [YowanR](https://github.com/YowanR)
* [yuhuishi-convect](https://github.com/yuhuishi-convect)
* [yurii-bidiuk](https://github.com/yurii-bidiuk)
* [Zawar92](https://github.com/Zawar92)
* [zestyping](https://github.com/zestyping)
* [Zirochkaa](https://github.com/Zirochkaa)
* [zkid18](https://github.com/zkid18)
* [zuc](https://github.com/zuc)
* [zzstoatzz](https://github.com/zzstoatzz)
* [zzztimbo](https://github.com/zzztimbo)
```shell
p=1;

View File

@@ -1,56 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
assert_root
## Helper functions
get_epoch_time() {
date +'%s'
}
check_success() {
docker compose ps --all | grep "^$1" | grep -ie 'exit 0' -ie 'exited (0)' >/dev/null || (echo "$1 didn't run successfully"; exit 1)
}
##
echo "Starting app..."
# Detach so we can run subsequent commands
# NOTE: this passes APPLY_FIELD_SELECTION=true, which enables a feature -- field selection -- which is currently disabled by default.
# We want to run our CI tests against the new feature while we prepare to release it.
VERSION=dev TRACKING_STRATEGY=logging USE_STREAM_CAPABLE_STATE=true BASIC_AUTH_USERNAME="" BASIC_AUTH_PASSWORD="" APPLY_FIELD_SELECTION=true docker compose -f docker-compose.yaml -f docker-compose.acceptance-test.yaml up -d
# Sometimes source/dest containers using airbyte volumes survive shutdown, which need to be killed in order to shut down properly.
shutdown_cmd="docker compose down -v || docker kill \$(docker ps -a -f volume=airbyte_workspace -f volume=airbyte_data -f volume=airbyte_db -q) && docker compose down -v"
# Uncomment for debugging. Warning, this is verbose.
# trap "echo 'docker compose logs:' && docker compose logs -t --tail 1000 && $shutdown_cmd" EXIT
echo "Waiting for services to begin"
starttime=`get_epoch_time`
maxtime=300
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:8000/api/v1/health)" != "200" ]];
do
echo "Waiting for docker deployment.."
currenttime=`get_epoch_time`
if [[ $(( $currenttime - $starttime )) -gt $maxtime ]]; then
docker compose ps
echo "Platform is taking more than ${maxtime}s to start. Aborting..."
exit 1
fi
sleep 5
done
# Getting a snapshot of the docker compose state
docker compose ps
# Make sure init containers ran successfully
check_success 'init'
check_success 'airbyte-bootloader'
echo "Running e2e tests via gradle"
SUB_BUILD=PLATFORM USE_EXTERNAL_DEPLOYMENT=true ./gradlew :airbyte-tests:acceptanceTests --rerun-tasks --scan

View File

@@ -1,107 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
assert_root
echo "Getting docker internal host ip"
DOCKER_HOST_IP=$(ip -f inet add show docker0 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p')
echo "Patching coredns configmap NodeHosts with new entry for docker host"
kubectl patch configmap/coredns \
-n kube-system \
--type merge \
-p '{"data":{"NodeHosts": "${DOCKER_HOST_IP} host.docker.internal" }}'
if [ -n "$CI" ]; then
echo "Deploying fluentbit"
helm repo add fluent https://fluent.github.io/helm-charts
helm repo update fluent
sed -i "s/PLACEHOLDER/${WORKFLOW_RUN_ID}/" tools/bin/fluent_values.yaml
helm install --values tools/bin/fluent_values.yaml --set env[1].name="AWS_ACCESS_KEY_ID" --set env[1].value=$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_access_key_id) \
--set env[2].name="AWS_SECRET_ACCESS_KEY" --set env[2].value=$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_secret_access_key) \
--set env[3].name="AWS_S3_BUCKET" --set env[3].value=${AWS_S3_BUCKET} \
--set env[4].name="SUITE_TYPE" --set env[4].value="helm-logs" \
--generate-name fluent/fluent-bit
fi
echo "Replacing default Chart.yaml and values.yaml with a test one"
mv charts/airbyte/Chart.yaml charts/airbyte/Chart.yaml.old
mv charts/airbyte/Chart.yaml.test charts/airbyte/Chart.yaml
mv charts/airbyte/values.yaml charts/airbyte/values.yaml.old
mv charts/airbyte/values.yaml.test charts/airbyte/values.yaml
echo "Starting app..."
echo "Check if kind cluster is running..."
sudo docker ps
echo "Applying dev-integration-test manifests to kubernetes..."
cd charts/airbyte && helm repo add bitnami https://charts.bitnami.com/bitnami && helm dep update && cd -
helm upgrade --install --debug airbyte charts/airbyte
echo "Waiting for server to be ready..."
kubectl wait --for=condition=Available deployment/airbyte-server --timeout=300s || (kubectl describe pods && exit 1)
echo "Scale up workers by 2"
kubectl scale --replicas=2 deployment airbyte-worker
echo "Listing nodes scheduled for pods..."
kubectl describe pods | grep "Name\|Node"
# allocates a lot of time to start kube. takes a while for postgres+temporal to work things out
sleep 120
if [ -n "$CI" ]; then
server_logs () { kubectl logs deployment.apps/airbyte-server > /tmp/kubernetes_logs/server.txt; }
pod_sweeper_logs () { kubectl logs deployment.apps/airbyte-pod-sweeper > /tmp/kubernetes_logs/pod_sweeper.txt; }
worker_logs () { kubectl logs deployment.apps/airbyte-worker > /tmp/kubernetes_logs/worker.txt; }
db_logs () { kubectl logs deployment.apps/airbyte-db > /tmp/kubernetes_logs/db.txt; }
temporal_logs () { kubectl logs deployment.apps/airbyte-temporal > /tmp/kubernetes_logs/temporal.txt; }
describe_pods () { kubectl describe pods > /tmp/kubernetes_logs/describe_pods.txt; }
describe_nodes () { kubectl describe nodes > /tmp/kubernetes_logs/describe_nodes.txt; }
write_all_logs () {
server_logs;
worker_logs;
db_logs;
temporal_logs;
pod_sweeper_logs;
describe_nodes;
describe_pods;
}
# Uncomment for debugging. Warning, this is verbose.
# trap "mkdir -p /tmp/kubernetes_logs && write_all_logs" EXIT
fi
kubectl expose $(kubectl get po -l app.kubernetes.io/name=server -o name) --name exposed-server-svc --type NodePort --overrides '{ "apiVersion": "v1","spec":{"ports": [{"port":8001,"protocol":"TCP","targetPort":8001,"nodePort":8001}]}}'
echo "Running worker integration tests..."
KUBE=true SUB_BUILD=PLATFORM ./gradlew :airbyte-workers:integrationTest --scan
echo "Printing system disk usage..."
df -h
echo "Printing docker disk usage..."
docker system df
if [ -n "$CI" ]; then
echo "Pruning all images..."
docker image prune --all --force
echo "Printing system disk usage after pruning..."
df -h
echo "Printing docker disk usage after pruning..."
fi
docker system df
echo "Running e2e tests via gradle..."
KUBE=true SUB_BUILD=PLATFORM USE_EXTERNAL_DEPLOYMENT=true ./gradlew :airbyte-tests:acceptanceTests --scan
echo "Reverting changes back"
mv charts/airbyte/Chart.yaml charts/airbyte/Chart.yaml.test
mv charts/airbyte/Chart.yaml.old charts/airbyte/Chart.yaml

View File

@@ -1,52 +0,0 @@
#!/usr/bin/env bash
# ------------- Import some defaults for the shell
# Source shell defaults
# $0 is the currently running program (this file)
this_file_directory=$(dirname $0)
relative_path_to_defaults=$this_file_directory/../shell_defaults
# if a file exists there, source it. otherwise complain
if test -f $relative_path_to_defaults; then
# source and '.' are the same program
source $relative_path_to_defaults
else
echo -e "\033[31m\nFAILED TO SOURCE TEST RUNNING OPTIONS.\033[39m"
echo -e "\033[31mTried $relative_path_to_defaults\033[39m"
exit 1
fi
# ------------- Start Main
set +o xtrace
echo -e "$blue_text""This test ensures no changes result from running docusaurs build""$default_text"
set -o xtrace
# Generate static files
cd $this_file_directory #lets us run this without relative path dep
cd ../../docusaurus
yarn install
yarn run build
# +o counterintuitively unsets the option
set +o errexit # exit 1 expected below in normal operation
# this line is the test
git diff-index --quiet HEAD --
clean=$? # $? is the return status of the last command
set -o errexit
# ------------- User communication on testing results
set +o xtrace
if test $clean -eq 0; then
echo -e "$blue_text""\n\n\nDocusaurs has no changes to commit!""$default_text"
echo -e "$blue_text""Generated documentation should be as local testing""$default_text"
else
echo -e "$red_text""\n\n\ndocusaurs build resulted in changes from this commit.""$default_text"
echo -e "$red_text"" Run docusaurus build locally (yarn run build), commit, and try again""$default_text"
fi

View File

@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# ------------- Import some defaults for the shell
# Source shell defaults
# $0 is the currently running program (this file)
this_file_directory=$(dirname $0)
relative_path_to_defaults=$this_file_directory/../shell_defaults
# if a file exists there, source it. otherwise complain
if test -f $relative_path_to_defaults; then
# source and '.' are the same program
source $relative_path_to_defaults
else
echo -e "\033[31m\nFAILED TO SOURCE TEST RUNNING OPTIONS.\033[39m"
echo -e "\033[31mTried $relative_path_to_defaults\033[39m"
exit 1
fi
diff_output="$(git --no-pager diff)"
set +o xtrace
if test -n "$diff_output"; then
echo -e "$red_text""File changes were detected! Lame!""$default_text"
echo -e "$red_text""This is usually do to forgetting to run a command locally before committing""$default_text"
echo -e "$red_text""try running the format command and see if you get a diff ""$default_text"
echo -e "$red_text""ie: SUB_BUILD=PLATFORM ./gradlew format --scan --info --stacktrace""$default_text"
else
echo -e "$blue_text""No git changes detected! Yay!""$default_text"
fi

View File

@@ -1,68 +0,0 @@
printf "Docker ";
if [[ $(which docker) && $(docker --version) ]]; then
printf "is installed"
else
printf "needs to be installed"
fi;
printf "\n";
desired="14"
printf "Java ";
if [[ "$(which java)" && "$(java --version)" ]];
then
printf "installed"
str="$(java --version)"
IFS=' ' read -ra array <<< "${str}"
version="${array[1]}"
if [[ "${version}" > "${desired}" || "${version}" == "${desired}" ]];
then
printf " and functional"
else
printf " but not functional, must have version ${desired} at least"
fi
else
printf "not installed, must have version ${desired} at least"
fi;
printf "\n";
desired="20.1"
printf "Pip ";
if [[ "$(which pip)" && "$(pip --version)" ]];
then
printf "installed"
str="$(pip --version)"
IFS=' ' read -ra array <<< "${str}"
version="${array[1]}"
if [[ "${version}" > "${desired}" || "${version}" == "${desired}" ]];
then
printf " and functional"
else
printf " but not functional, must have version ${desired} at least"
fi
else
printf "not installed, must have version ${desired} at least"
fi;
printf "\n";
desired="3.9.11"
printf "Python ";
if [[ "$(which python3)" && "$(python3 --version)" ]];
then
printf "installed"
str="$(python3 --version)"
IFS=' ' read -ra array <<< "${str}"
version="${array[1]}"
if [[ "${version}" > "${desired}" || "${version}" == "${desired}" ]];
then
printf " and functional"
else
printf " but not functional, must have version ${desired} at least"
fi
else
printf "not installed, must have version ${desired} at least"
fi;
printf "\n";
printf "JQ ";
if [[ $(which jq) && $(jq --version) ]]; then
printf "is installed"
else
printf "needs to be installed"
fi;
printf "\n";

View File

@@ -1,86 +0,0 @@
#!/usr/bin/env bash
set -e
# GCS resources for the following tests are located in the dataline-integration-testing GCP project.
# GCS testing creds can be found in the "google cloud storage ( gcs ) test creds" secret in the `Shared-integration-tests`
# folder in Lastpass.
# AWS resources for the following tests are located in the dev account.
# S3 testing creds can be found in the `AWS_S3_INTEGRATION_TEST_CREDS` secret in the `Shared-integration-tests`
# folder in Lastpass.
echo "Writing cloud storage credentials.."
# S3
export AWS_ACCESS_KEY_ID="$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_access_key_id)"
export AWS_SECRET_ACCESS_KEY="$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_secret_access_key)"
export S3_LOG_BUCKET=airbyte-kube-integration-logging-test
export S3_LOG_BUCKET_REGION=us-west-2
# GCS
echo "$GOOGLE_CLOUD_STORAGE_TEST_CREDS" > "/tmp/gcs.json"
export GOOGLE_APPLICATION_CREDENTIALS="/tmp/gcs.json"
export GCS_LOG_BUCKET=airbyte-kube-integration-logging-test
# Run the logging test first since the same client is used in the log4j2 integration test.
echo "Running log client tests.."
SUB_BUILD=PLATFORM ./gradlew :airbyte-config:models:logClientsIntegrationTest --scan
echo "Running cloud storage tests.."
SUB_BUILD=PLATFORM ./gradlew :airbyte-workers:cloudStorageIntegrationTest --scan
# Reset existing configurations and run this for each possible configuration
# These configurations mirror the configurations documented in https://docs.airbyte.io/deploying-airbyte/on-kubernetes#configure-logs.
# Some duplication here for clarity.
export WORKER_ENVIRONMENT=kubernetes
echo "Setting S3 configuration.."
export AWS_ACCESS_KEY_ID="$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_access_key_id)"
export AWS_SECRET_ACCESS_KEY="$(echo "$AWS_S3_INTEGRATION_TEST_CREDS" | jq -r .aws_secret_access_key)"
export S3_LOG_BUCKET=airbyte-kube-integration-logging-test
export S3_LOG_BUCKET_REGION=us-west-2
export S3_MINIO_ENDPOINT=
export S3_PATH_STYLE_ACCESS=
export GOOGLE_APPLICATION_CREDENTIALS=
export GCS_LOG_BUCKET=
echo "Running logging to S3 test.."
SUB_BUILD=PLATFORM ./gradlew :airbyte-config:models:log4j2IntegrationTest --scan --rerun-tasks -i
echo "Setting GCS configuration.."
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export S3_LOG_BUCKET=
export S3_LOG_BUCKET_REGION=
export S3_MINIO_ENDPOINT=
export S3_PATH_STYLE_ACCESS=
export GOOGLE_APPLICATION_CREDENTIALS="/tmp/gcs.json"
export GCS_LOG_BUCKET=airbyte-kube-integration-logging-test
echo "Running logging to GCS test.."
SUB_BUILD=PLATFORM ./gradlew :airbyte-config:models:log4j2IntegrationTest --scan --rerun-tasks -i
echo "Starting Minio service.."
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=miniostorage
./minio server /tmp/desktop &
echo "Setting Minio configuration.."
export AWS_ACCESS_KEY_ID=minio
export AWS_SECRET_ACCESS_KEY=miniostorage
export S3_LOG_BUCKET=airbyte-kube-integration-logging-test
export S3_LOG_BUCKET_REGION=
export S3_MINIO_ENDPOINT=http://localhost:9000
export S3_PATH_STYLE_ACCESS=true
export GOOGLE_APPLICATION_CREDENTIALS=
export GCS_LOG_BUCKET=
echo "Running logging to Minio test.."
SUB_BUILD=PLATFORM ./gradlew :airbyte-config:models:log4j2IntegrationTest --scan --rerun-tasks -i

View File

@@ -1,15 +0,0 @@
config:
outputs: |
[OUTPUT]
Name s3
Match kube.*
bucket ${AWS_S3_BUCKET}
region us-east-2
total_file_size 1M
upload_timeout 2m
use_put_object On
log_key log
s3_key_format /${SUITE_TYPE}/${WORKFLOW_RUN_ID}/$TAG[4]/$UUID.log
env:
- name: WORKFLOW_RUN_ID
value: 'PLACEHOLDER'

View File

@@ -1,75 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
assert_root
kubectl --help
NAMESPACE=$(openssl rand -hex 12)
echo "Namespace" $NAMESPACE
TAG=$(openssl rand -hex 12)
echo "Tag" $TAG
docker login -u "$DOCKER_HUB_USERNAME" -p "$DOCKER_HUB_PASSWORD"
VERSION=$TAG ./gradlew build
# VERSION=$TAG docker compose -f docker-compose.build.yaml push
# For running on Mac
#sed -i .bak 's/default/'$NAMESPACE'/g' kube/overlays/dev/kustomization.yaml
#sed -i .bak 's/dev/'$TAG'/g' kube/overlays/dev/kustomization.yaml
# sed -i 's/default/'$NAMESPACE'/g' kube/overlays/dev/kustomization.yaml
# sed -i 's/dev/'$TAG'/g' kube/overlays/dev/kustomization.yaml
helm upgrade --install --debug --namespace $NAMESPACE \\
--set airbyte-bootloader.image.tag=$TAG \\
--set webapp.image.tag=$TAG \\
--set worker.image.tag=$TAG \\
--set server.image.tag=$TAG \\
ab charts/airbyte
kubectl apply -f tools/bin/gke-kube-helm-acceptance-test/postgres-source.yaml --namespace=$NAMESPACE
kubectl apply -f tools/bin/gke-kube-helm-acceptance-test/postgres-destination.yaml --namespace=$NAMESPACE
sleep 180s
function findAndDeleteTag () {
if [ $(curl --fail -LI --request GET 'https://hub.docker.com/v2/repositories/airbyte/'$1'/tags/'$TAG'/' --header 'Authorization: JWT '$2'' -o /dev/null -w '%{http_code}\n' -s) == "200" ];
then
echo "FOUND TAG" $TAG "in repository" $1 ",DELETING IT"
curl --request DELETE 'https://hub.docker.com/v2/repositories/airbyte/'$1'/tags/'$TAG'/' --header 'Authorization: JWT '$2'';
else
echo "NOT FOUND TAG" $TAG "in repository" $1;
fi
}
function cleanUpImages () {
TOKEN=$(curl --request POST 'https://hub.docker.com/v2/users/login/' --header 'Content-Type: application/json' --data-raw '{"username":"'$DOCKER_HUB_USERNAME'","password":"'$DOCKER_HUB_PASSWORD'"}' | jq '.token')
TOKEN="${TOKEN%\"}"
TOKEN="${TOKEN#\"}"
findAndDeleteTag "init" $TOKEN
findAndDeleteTag "db" $TOKEN
findAndDeleteTag "seed" $TOKEN
findAndDeleteTag "scheduler" $TOKEN
findAndDeleteTag "server" $TOKEN
findAndDeleteTag "webapp" $TOKEN
findAndDeleteTag "migration" $TOKEN
findAndDeleteTag "cron" $TOKEN
}
trap "kubectl delete namespaces $NAMESPACE --grace-period=0 --force" EXIT
kubectl port-forward svc/airbyte-server-svc 8001:8001 --namespace=$NAMESPACE &
kubectl port-forward svc/postgres-source-svc 2000:5432 --namespace=$NAMESPACE &
kubectl port-forward svc/postgres-destination-svc 4000:5432 --namespace=$NAMESPACE &
sleep 10s
echo "Running e2e tests via gradle..."
KUBE=true IS_GKE=true SUB_BUILD=PLATFORM USE_EXTERNAL_DEPLOYMENT=true ./gradlew :airbyte-tests:acceptanceTests --scan -i

View File

@@ -1,47 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-destination-config
labels:
app: postgres-destination
data:
POSTGRES_DB: postgresdb
POSTGRES_USER: postgresadmin
POSTGRES_PASSWORD: admin123
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-destination
spec:
replicas: 1
selector:
matchLabels:
app: postgres-destination
template:
metadata:
labels:
app: postgres-destination
spec:
containers:
- name: postgres-destination
image: postgres:13-alpine
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-destination-config
---
apiVersion: v1
kind: Service
metadata:
name: postgres-destination-svc
labels:
app: postgres-destination
spec:
type: ClusterIP
ports:
- port: 5432
selector:
app: postgres-destination

View File

@@ -1,47 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: postgres-source-config
labels:
app: postgres-source
data:
POSTGRES_DB: postgresdb
POSTGRES_USER: postgresadmin
POSTGRES_PASSWORD: admin123
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-source
spec:
replicas: 1
selector:
matchLabels:
app: postgres-source
template:
metadata:
labels:
app: postgres-source
spec:
containers:
- name: postgres-source
image: debezium/postgres:13-alpine
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-source-config
---
apiVersion: v1
kind: Service
metadata:
name: postgres-source-svc
labels:
app: postgres-source
spec:
type: ClusterIP
ports:
- port: 5432
selector:
app: postgres-source

View File

@@ -1,33 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
IMG_NAME=airbyte/build-project:dev
TMP_VOLUME_NAME=gradlew-tmp
main() {
assert_root
if [[ $# -gt 0 ]]; then
OPTS=
CMD="./gradlew $@"
else
OPTS=-it
CMD=/bin/bash
fi
local args=${@:-/bin/bash}
docker build -f Dockerfile.build . -t $IMG_NAME --target build-project
docker run $OPTS --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp \
-v $(pwd):/code \
-p 5005:5005 \
-e GRADLE_OPTS="-Dorg.gradle.daemon=false" \
$IMG_NAME $CMD
}
main "$@"

View File

@@ -1 +0,0 @@
cleanup/

View File

@@ -1,103 +0,0 @@
# Load Testing Airbyte
## Overview
To perform a stress test of an Airbyte deployment, the `load_test_airbyte.sh` shell script is useful to quickly and easily create many connections.
This script creates a new E2E Test Source, E2E Test Destination, and a configurable number of connections in the indicated workspace.
## Instructions
From your top-level `/airbyte` directory, run the following to perform a load test:
```
./tools/bin/load_test/load_test_airbyte.sh -W <workspace id> -C <num_connections>
```
By default, the script assumes that the Airbyte instance's server is accessible at `localhost:8001`. This is the default server location when
deploying Airbyte with `docker compose up`.
Additionally, the E2E Test Source created by the script will take 10 minutes to complete a sync by default.
These defaults can be overridden with flags. All available flags are described as follows:
```
-h
Display help
-W <workspace id>
Specify the workspace ID where new connectors and connections should be created.
Required.
-H <hostname>
Specify the Airbyte API server hostname that the script should call to create new connectors and connections.
Defaults to 'localhost'.
-P <port>
Specify the port for the Airbyte server.
Defaults to '8001'.
-X <header>
Specify the X-Endpoint-API-UserInfo header value for API authentication.
For Google Cloud Endpoint authentication only.
-C <count>
Specify the number of connections that should be created by the script.
Defaults to '1'.
-T <minutes>
Specify the time in minutes that each connection should sync for.
Defaults to '10'.
```
### Load Testing on Kubernetes
To load test a deployment of Airbyte running on Kubernetes, you will need to set up port-forwarding to the `airbyte-server` deployment.
This can be accomplished with the following command:
```
kubectl port-forward deployment/airbyte-server -n ab 8001:8001
```
This will make the Airbyte server available at `localhost:8001`
### Authentication
If your deployment of Airbyte happens to use Google Cloud Endpoints for authentication, you can use the `-X` option to pass
an `X-Endpoint-API-UserInfo` header value.
## Cleanup
The `load_test_airbyte.sh` script writes created IDs to files in the script's `/cleanup` directory. To delete resources that were created by the load
test script, you can run `cleanup_load_test.sh`, which reads IDs from the `/cleanup` directory and calls the Airbyte API to delete them.
### Cleanup Instructions
To run the cleanup script, from the top-level `airbyte` directory, run the following:
```
./tools/bin/load_test/cleanup_load_test.sh -W <workspace_id>
```
All available cleanup script flags are described as follows:
```
-h
Display help
-W <workspace id>
Specify the workspace ID from where connectors and connections should be deleted.
Required.
-H <hostname>
Specify the Airbyte API server hostname that the script should call to delete connectors and connections.
Defaults to 'localhost'.
-P <port>
Specify the port for the Airbyte server.
Defaults to '8001'.
-X <header>
Specify the X-Endpoint-API-UserInfo header value for API authentication.
For Google Cloud Endpoint authentication only.
```

View File

@@ -1,158 +0,0 @@
#!/usr/bin/env bash
set -o errexit
set -o nounset
<<comment
This script cleans up an earlier load test. It reads from cleanup files that the load test script writes to
in order to determine which IDs to delete.
comment
echo "Sourcing environment variables from .env"
source .env
cd "$(dirname "$0")"
source load_test_utils.sh
function showhelp {
echo -e """Usage $(dirname $0)/cleanup_load_test [OPTIONS]
cleanup_load_test deletes resources that were created from an earlier load test.
Available OPTIONs:
${CLEAR}-h
${GREEN}Display help
${CLEAR}-W <workspace id>
${GREEN}Specify the workspace ID from where connectors and connections should be deleted.
Required.
${CLEAR}-H <hostname>
${GREEN}Specify the Airbyte API server hostname that the script should call to delete connectors and connections.
Defaults to 'localhost'.
${CLEAR}-P <port>
${GREEN}Specify the port for the Airbyte server.
Defaults to '8001'.
${CLEAR}-X <header>
${GREEN}Specify the X-Endpoint-API-UserInfo header value for API authentication.
For Google Cloud Endpoint authentication only.
""" && exit 1
}
hostname=localhost
api_port=8001
x_endpoint_header=""
while getopts "hW:H:P:X:kN:" options ; do
case "${options}" in
h)
showhelp
;;
W)
workspace_id="${OPTARG}"
;;
H)
hostname="${OPTARG}"
;;
P)
api_port="${OPTARG}"
;;
X)
x_endpoint_header="${OPTARG}"
;;
*)
showhelp
;;
esac
done
function setup {
if test -z "$workspace_id"; then
echo "error: must set a workspace id with -W"
exit 1
fi
echo "set workspace_id to ${workspace_id}"
echo "set hostname to ${hostname}"
echo "set api_port to ${api_port}"
setCleanupFilesForWorkspace $workspace_id
}
function deleteConnections {
while test -s $CONNECTION_CLEANUP_FILE
do
connectionId=$(readFirstLineFromFile $CONNECTION_CLEANUP_FILE)
callApi "connections/delete" "{\"connectionId\":\"$connectionId\"}"
echo "deleted connection with ID $connectionId"
# deletion succeeded, so remove the ID from the cleanup file
removeFirstLineFromFile $CONNECTION_CLEANUP_FILE
done
# if file exists and is empty
if test -e $CONNECTION_CLEANUP_FILE && ! test -s $CONNECTION_CLEANUP_FILE
then
rm $CONNECTION_CLEANUP_FILE
echo "removed cleanup file $CONNECTION_CLEANUP_FILE"
fi
}
function deleteSources {
while test -s $SOURCE_CLEANUP_FILE
do
sourceId=$(readFirstLineFromFile $SOURCE_CLEANUP_FILE)
callApi "sources/delete" "{\"sourceId\":\"$sourceId\"}"
echo "deleted source with ID $sourceId"
# deletion succeeded, so remove the ID from the cleanup file
removeFirstLineFromFile $SOURCE_CLEANUP_FILE
done
# if file exists and is empty
if test -e $SOURCE_CLEANUP_FILE && ! test -s $SOURCE_CLEANUP_FILE
then
rm $SOURCE_CLEANUP_FILE
echo "removed cleanup file $SOURCE_CLEANUP_FILE"
fi
}
function deleteDestinations {
while test -s $DESTINATION_CLEANUP_FILE
do
destinationId=$(readFirstLineFromFile $DESTINATION_CLEANUP_FILE)
callApi "destinations/delete" "{\"destinationId\":\"$destinationId\"}"
echo "deleted destination with ID $destinationId"
# deletion succeeded, so remove the ID from the cleanup file
removeFirstLineFromFile $DESTINATION_CLEANUP_FILE
done
# if file exists and is empty
if test -e $DESTINATION_CLEANUP_FILE && ! test -s $DESTINATION_CLEANUP_FILE
then
rm $DESTINATION_CLEANUP_FILE
echo "removed cleanup file $DESTINATION_CLEANUP_FILE"
fi
}
############
## MAIN ##
############
if [[ $# -eq 0 ]] ; then
showhelp
exit 0
fi
setup
deleteConnections
deleteSources
deleteDestinations
echo "Finished!"

View File

@@ -1,47 +0,0 @@
{
"sourceId": "replace_source_id",
"destinationId": "replace_destination_id",
"syncCatalog": {
"streams": [
{
"config": {
"syncMode": "full_refresh",
"cursorField": [],
"destinationSyncMode": "overwrite",
"primaryKey": [],
"aliasName": "data_stream",
"selected": true
},
"stream": {
"name": "data_stream",
"jsonSchema": {
"type": "object",
"properties": {
"column1": {
"type": "string"
}
}
},
"supportedSyncModes": [
"full_refresh"
],
"defaultCursorField": [],
"sourceDefinedPrimaryKey": []
}
}
]
},
"prefix": "",
"namespaceDefinition": "destination",
"namespaceFormat": "${SOURCE_NAMESPACE}",
"scheduleType": "basic",
"scheduleData": {
"basicSchedule": {
"units": 24,
"timeUnit": "hours"
}
},
"name": "replace_connection_name",
"operations": [],
"status": "active"
}

View File

@@ -1,8 +0,0 @@
{
"name": "End-to-End Testing (/dev/null)",
"destinationDefinitionId": "replace_destination_definition_id",
"workspaceId": "replace_workspace_id",
"connectionConfiguration": {
"type": "SILENT"
}
}

View File

@@ -1,243 +0,0 @@
#!/usr/bin/env bash
set -o errexit
set -o nounset
<<comment
This script performs a load test against an existing Airbyte instance by calling the instance's API to create and sync new connections.
It is intended to work with any Airbyte instance (local or remote, docker or kube, OSS or Cloud). It authenticates using a special auth header
that requires port-forwarding. It stores connector and connection IDs that it creates in a local file. The script can be run in cleanup mode,
which means the script will delete every connector and connection ID that it created and stored in that file.
comment
echo "Sourcing environment variables from .env"
source .env
cd "$(dirname "$0")"
source load_test_utils.sh
function showhelp {
echo -e """Usage $(dirname $0)/load_test_airbyte [OPTIONS]
load_test_airbyte performs a load-test against an existing Airbyte instance.
Available OPTIONs:
${CLEAR}-h
${GREEN}Display help
${CLEAR}-W <workspace id>
${GREEN}Specify the workspace ID where new connectors and connections should be created.
Required.
${CLEAR}-H <hostname>
${GREEN}Specify the Airbyte API server hostname that the script should call to create new connectors and connections.
Defaults to 'localhost'.
${CLEAR}-P <port>
${GREEN}Specify the port for the Airbyte server.
Defaults to '8001'.
${CLEAR}-X <header>
${GREEN}Specify the X-Endpoint-API-UserInfo header value for API authentication.
For Google Cloud Endpoint authentication only.
${CLEAR}-C <count>
${GREEN}Specify the number of connections that should be created by the script.
Defaults to '1'.
${CLEAR}-T <minutes>
${GREEN}Specify the time in minutes that each connection should sync for.
Defaults to '10'.
"""
}
hostname=localhost
api_port=8001
x_endpoint_header=
num_connections=1
sync_minutes=10
while getopts "hW:H:P:X:C:T:kN:-:" options ; do
case "${options}" in
-)
case "${OPTARG}" in
debug)
PS4="$GREEN"'${BASH_SOURCE}:${LINENO}:$CLEAR '
set -o xtrace #xtrace calls the PS4 string and show all lines as executed
;;
*)
showhelp
exit 0
;;
esac;;
h)
showhelp
;;
W)
workspace_id="${OPTARG}"
;;
H)
hostname="${OPTARG}"
;;
P)
api_port="${OPTARG}"
;;
X)
x_endpoint_header="${OPTARG}"
;;
C)
num_connections="${OPTARG}"
;;
T)
sync_minutes="${OPTARG}"
;;
*)
showhelp
exit 1
;;
esac
done
function setup {
set -e
if test -z "$workspace_id"; then
echo "error: must set a workspace id with -W"
exit 1
fi
echo "set workspace_id to ${workspace_id}"
echo "set hostname to ${hostname}"
echo "set api_port to ${api_port}"
echo "set x_endpoint_header to ${x_endpoint_header}"
echo "set num_connections to ${num_connections}"
echo "set sync_minutes to ${sync_minutes}"
setCleanupFilesForWorkspace $workspace_id
mkdir -p cleanup
touch $CONNECTION_CLEANUP_FILE
touch $SOURCE_CLEANUP_FILE
touch $DESTINATION_CLEANUP_FILE
}
function getE2ETestSourceDefinitionId {
# call source_definitions/list and search response for the E2E Test dockerRepository to get the ID.
# local uses `source-e2e-test`, while cloud uses `source-e2e-test-cloud`
sourceDefinitionId=$(
callApi "source_definitions/list" |
jq -r '.sourceDefinitions[] |
select(
(.dockerRepository == "airbyte/source-e2e-test") or
(.dockerRepository == "airbyte/source-e2e-test-cloud")
) |
.sourceDefinitionId'
)
export sourceDefinitionId
}
function getE2ETestDestinationDefinition {
# call destination_definitions/list and search response for the E2E Test dockerRepository to get the ID.
# local uses `destination-dev-null`, while cloud uses `destination-e2e-test-cloud`
destinationDefinitionId=$(
callApi "destination_definitions/list" |
jq -r '.destinationDefinitions[] |
select(
(.dockerRepository == "airbyte/destination-e2e-test") or
(.dockerRepository == "airbyte/destination-dev-null")
) |
.destinationDefinitionId'
)
export destinationDefinitionId
}
function createSource {
body=$(
sed "
s/replace_source_read_secs/$(( 60*sync_minutes ))/g ;
s/replace_source_definition_id/$sourceDefinitionId/g ;
s/replace_workspace_id/$workspace_id/g" source_spec.json |
tr -d '\n' |
tr -d ' '
)
sourceId=$(
callApi "sources/create" $body |
jq -r '.sourceId'
)
export sourceId
echo $sourceId >> $SOURCE_CLEANUP_FILE
}
function createDestination {
body=$(
sed "
s/replace_destination_definition_id/$destinationDefinitionId/g ;
s/replace_workspace_id/$workspace_id/g" destination_spec.json |
tr -d '\n' |
tr -d ' '
)
destinationId=$(
callApi "destinations/create" $body |
jq -r '.destinationId'
)
export destinationId
echo $destinationId >> $DESTINATION_CLEANUP_FILE
}
function createMultipleConnections {
for i in $(seq 1 $num_connections)
do
echo "Creating connection number $i (out of $num_connections)..."
createConnection $i
done
echo "Finished creating $num_connections connections."
}
# Call the API to create a connection. Replace strings in connection_spec.json with real IDs.
# $1 arg is the connection count, which is used in the name of the created connection
# Connection spec might change and this function could break in the future. If that happens, we need
# to update the connection spec.
function createConnection {
body=$(
sed "
s/replace_source_id/$sourceId/g ;
s/replace_destination_id/$destinationId/g ;
s/replace_connection_name/load_test_connection_$1/g" connection_spec.json |
tr -d '\n' |
tr -d ' '
)
connectionId=$(
callApi "web_backend/connections/create" $body |
jq -r '.connectionId'
)
echo $connectionId >> $CONNECTION_CLEANUP_FILE
}
############
## MAIN ##
############
if [[ $# -eq 0 ]] ; then
showhelp
exit 0
fi
setup
getE2ETestSourceDefinitionId
echo "Retrieved E2E Test Source Definition ID: ${sourceDefinitionId}"
getE2ETestDestinationDefinition
echo "Retrieved E2E Test Destination Definition ID: ${destinationDefinitionId}"
createSource
echo "Created Source with ID: ${sourceId}"
createDestination
echo "Created Destination with ID: ${destinationId}"
createMultipleConnections
echo "Finished!"

View File

@@ -1,46 +0,0 @@
<<comment
This file contains common util functions for use in load testing scripts.
comment
echo "Loading utils from $0"
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
CLEAR='\033[0m'
function callApi {
# call the API with the endpoint passed as arg $1, and (optional) payload passed as arg $2
# example of calling the API with a payload:
# callApi "destinations/list" "{\"workspaceId\":\"${workspace}\"}"
endpoint=$1
payload=${2:-""}
curl --silent \
--request POST \
--fail-with-body \
--show-error \
--header 'Content-Type: application/json' \
--header "X-Endpoint-API-UserInfo: ${x_endpoint_header}" \
--user "${BASIC_AUTH_USERNAME}:${BASIC_AUTH_PASSWORD}" \
--data "${payload}" \
"${hostname}:${api_port}/api/v1/${endpoint}"
}
function readFirstLineFromFile {
echo "$(head -1 $1)"
}
function removeFirstLineFromFile {
echo "$(sed -i '' -e '1d' $1)"
}
function setCleanupFilesForWorkspace {
export CONNECTION_CLEANUP_FILE="cleanup/${1}_connection_ids.txt"
export DESTINATION_CLEANUP_FILE="cleanup/${1}_destination_ids.txt"
export SOURCE_CLEANUP_FILE="cleanup/${1}_source_ids.txt"
echo "set connection cleanup file to $CONNECTION_CLEANUP_FILE"
echo "set destination cleanup file to $DESTINATION_CLEANUP_FILE"
echo "set source cleanup file to $SOURCE_CLEANUP_FILE"
}

View File

@@ -1,17 +0,0 @@
{
"name": "End-to-End Testing (Mock API)",
"sourceDefinitionId": "replace_source_definition_id",
"workspaceId": "replace_workspace_id",
"connectionConfiguration": {
"type": "CONTINUOUS_FEED",
"mock_catalog": {
"type": "SINGLE_STREAM",
"stream_name": "data_stream",
"stream_schema": "{ \"type\": \"object\", \"properties\": { \"column1\": { \"type\": \"string\" } } }",
"stream_duplication": 1
},
"seed": 0,
"max_messages": replace_source_read_secs,
"message_interval_ms": 1000
}
}

View File

@@ -1,30 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
[[ -z "$GIT_REVISION" ]] && echo "Couldn't get the git revision..." && exit 1
echo "*IMPORTANT: Only merge if the platform build is passing!*"
echo
# Do not change the following line - the Create Release Github action relies on it
echo "Changelog:"
echo
PAGER=cat git log v${PREV_VERSION}..${GIT_REVISION} --oneline --decorate=no
# The following empty 'echo' is also important for marking the end of the changelog for the Create Release Github action
echo
echo "### Instructions"
echo "1) *SQUASH MERGE* this PR - this is necessary to ensure the automated Create Release action is triggered."
echo "2) Double check that the [Create Release](https://github.com/airbytehq/airbyte/actions/workflows/create-release.yml) action was triggered and ran successfully on the commit to master \
(this should only take a few seconds)."
echo "3) If the Create Release action failed due to a transient issue, retry the action. If it failed due to \
a non-transient issue, create a release manually by following the below instructions."
echo
echo "<details>"
echo "<summary>Create the GitHub release manually</summary>"
echo
echo "1. Pull most recent version of master"
echo "2. Run ./tools/bin/tag_version.sh"
echo "3. Create a GitHub release with the changelog"
echo "</details>"

View File

@@ -1,60 +0,0 @@
#!/bin/bash
set -e
# todo (cgardens) - remove this file. used in platform build script only.
# List of directories without "airbyte-" prefix.
projectDir=(
"bootloader"
"container-orchestrator"
"cron"
"connector-builder-server"
"metrics/reporter"
"proxy"
"server"
"temporal"
"webapp"
"workers"
)
# Set default values to required vars. If set in env, values will be taken from there.
# Primarily for testing.
JDK_VERSION=${JDK_VERSION:-17.0.4}
ALPINE_IMAGE=${ALPINE_IMAGE:-alpine:3.14}
POSTGRES_IMAGE=${POSTGRES_IMAGE:-postgres:13-alpine}
# Iterate over all directories in list to build one by one.
# metrics-reporter are exception due to wrong artifact naming
for workdir in "${projectDir[@]}"
do
case $workdir in
"metrics/reporter")
artifactName="metrics-reporter"
;;
"config/init")
artifactName="init"
;;
"workers")
artifactName="worker"
;;
*)
artifactName=${workdir%/*}
;;
esac
echo "Publishing airbyte/$artifactName..."
sleep 1
docker buildx create --use --name $artifactName && \
docker buildx build -t "airbyte/$artifactName:$VERSION" \
--platform linux/amd64,linux/arm64 \
--build-arg VERSION=$VERSION \
--build-arg ALPINE_IMAGE=$ALPINE_IMAGE \
--build-arg POSTGRES_IMAGE=$POSTGRES_IMAGE \
--build-arg JDK_VERSION=$JDK_VERSION \
--push \
airbyte-$workdir/build/docker
docker buildx rm $artifactName
done

View File

@@ -1,42 +0,0 @@
#!/usr/bin/env bash
retries=3
function pull_dockerhub_image_with_retries() {
local image=$1
local retries=$2
for (( i=1; i<=$retries; i++ )); do
docker pull $image
# NOTE: this does not discriminate on the failure, any failure will retry
test "$?" -eq 0 && return || echo "Docker pull failed, sleeping for 5 seconds before retrying ($i/$retries)" && sleep 5
done
}
function main() {
while getopts ':i:r:' OPTION; do
case "$OPTION" in
i)
image="$OPTARG"
;;
r)
if [[ "$OPTARG" =~ ^(-)?[0-9]+$ ]]; then
retries="$OPTARG"
else
echo "retries (-r) must be a number" && exit 1
fi
;;
?)
echo "script usage: $(basename "$0") [-i image] [-r retries]" >&2
exit 1
;;
esac
done
shift "$(($OPTIND -1))"
pull_dockerhub_image_with_retries $image $retries
}
main "$@"

View File

@@ -1,21 +0,0 @@
#!/usr/bin/env bash
# When running acceptance tests, this often manifests as a conenctor sometimes getting stuck for no discernable reason.
# This script allows building all of the connector images used in the acceptance tests.
# We will need to update this file if the versions used for source-e2e-test and destination-e2e-test change before we start publishing ARM images.
set -e
. tools/lib/lib.sh
assert_root
unset SUB_BUILD
LATEST_POSTGRES_SOURCE=$(grep -A0 'dockerImageTag' ./airbyte-integrations/connectors/source-postgres/metadata.yaml | cut -d ' ' -f 4)
LATEST_POSTGRES_DESTINATION=$(grep -A0 'dockerImageTag' ./airbyte-integrations/connectors/destination-postgres/metadata.yaml | cut -d ' ' -f 4)
git checkout master && ./gradlew clean :airbyte-integrations:connectors:source-postgres:build -x test && docker tag airbyte/source-postgres:dev airbyte/source-postgres:"$LATEST_POSTGRES_SOURCE"
git checkout master && ./gradlew clean :airbyte-integrations:connectors:destination-postgres:build -x test && docker tag airbyte/destination-postgres:dev airbyte/destination-postgres:"$LATEST_POSTGRES_DESTINATION"
git checkout 464c485b94c9f023b4c5929610f60a6b53bf657b && ./gradlew clean :airbyte-integrations:connectors:source-e2e-test:build -x test && docker tag airbyte/source-e2e-test:dev airbyte/source-e2e-test:0.1.1
git checkout 464c485b94c9f023b4c5929610f60a6b53bf657b && ./gradlew clean :airbyte-integrations:connectors:destination-e2e-test:build -x test && docker tag airbyte/destination-e2e-test:dev airbyte/destination-e2e-test:0.1.1

View File

@@ -1,39 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
if [[ -z "${CLOUDREPO_USER}" ]]; then
echo 'CLOUDREPO_USER env var not set. Please retrieve the user email from the CloudRepo lastpass secret and run export CLOUDREPO_USER=<user_from_secret>.';
exit 1;
fi
if [[ -z "${CLOUDREPO_PASSWORD}" ]]; then
echo 'CLOUDREPO_PASSWORD env var not set. Please retrieve the user email from the CloudRepo lastpass secret and run export CLOUDREPO_PASSWORD=<password_from_secret>.';
exit 1;
fi
if [[ -z "${DOCKER_HUB_USERNAME}" ]]; then
echo 'DOCKER_HUB_USERNAME not set.';
exit 1;
fi
if [[ -z "${DOCKER_HUB_PASSWORD}" ]]; then
echo 'DOCKER_HUB_PASSWORD for docker user not set.';
exit 1;
fi
docker login -u "${DOCKER_HUB_USERNAME}" -p "${DOCKER_HUB_PASSWORD}"
source ./tools/bin/bump_version.sh
echo "Building and publishing PLATFORM version $NEW_VERSION for git revision $GIT_REVISION..."
VERSION=$NEW_VERSION SUB_BUILD=PLATFORM ./gradlew clean build --scan
VERSION=$NEW_VERSION SUB_BUILD=PLATFORM ./gradlew publish --scan
# Container should be running before build starts
# It generates binaries to build images for different CPU architecture
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
VERSION=$NEW_VERSION ./tools/bin/publish_docker.sh
echo "Completed building and publishing PLATFORM..."

View File

@@ -1,23 +0,0 @@
#!/usr/bin/env bash
set -e
. tools/lib/lib.sh
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" != "master" ]]; then
echo 'This script should be run from master after merging the changes from release_version.sh!';
exit 1;
fi
[[ ! -z "$(git status --porcelain)" ]] && echo "Cannot tag revision if all changes aren't checked in..." && exit 1
# make sure your master branch is up to date
git pull --rebase
VERSION=$(cat .env | grep -w VERSION | cut -d= -f 2)
[[ -z "$VERSION" ]] && echo "Couldn't find version in env file..." && exit 1
TAG_NAME="v$VERSION"
git tag -a "$TAG_NAME" -m "Version $VERSION"
git push origin "$TAG_NAME"

View File

@@ -1,30 +0,0 @@
#! /bin/bash
set -ex
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
if ! command -v timeout &> /dev/null
then
echo "timeout could not be found, installing it"
brew install coreutils
fi
NEW_HASH="$( git rev-parse HEAD )"
git checkout master
git pull --no-rebase
SUB_BUILD=PLATFORM "$SCRIPT_DIR"/../../gradlew -p "$SCRIPT_DIR"/../.. generate-docker
cd "$SCRIPT_DIR"/../..
VERSION=dev docker compose -f "$SCRIPT_DIR"/../../docker-compose.yaml up &
sleep 75
VERSION=dev docker compose down
git stash
git checkout $NEW_HASH
SUB_BUILD=PLATFORM "$SCRIPT_DIR"/../../gradlew -p "$SCRIPT_DIR"/../.. generate-docker
VERSION=dev docker compose -f "$SCRIPT_DIR"/../../docker-compose.yaml up

View File

@@ -1,11 +0,0 @@
FROM mcr.microsoft.com/mssql/server:2019-latest
COPY mssql.key /etc/ssl/private/mssql.key
COPY mssql.pem /etc/ssl/certs/mssql.pem
COPY mssql.conf /var/opt/mssql/mssql.conf
EXPOSE 1433
USER root
RUN chmod 755 /etc/ssl/private
USER mssql

View File

@@ -1,8 +0,0 @@
FROM postgres:11-alpine
COPY server.key /var/lib/postgresql/server.key
COPY server.crt /var/lib/postgresql/server.crt
# update the privileges on the .key, no need to touch the .crt
RUN chmod 600 /var/lib/postgresql/server.key
RUN chown postgres:postgres /var/lib/postgresql/server.key

View File

@@ -1,7 +0,0 @@
#!/bin/bash
set -euo pipefail
openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem
openssl rsa -in privkey.pem -passin pass:abcd -out server.key
openssl req -x509 -in server.req -text -key server.key -out server.crt

View File

@@ -1,7 +0,0 @@
#!/bin/bash
set -euo pipefail
openssl req -x509 -nodes -newkey rsa:2048 -subj '/CN=sqltest.airbyte.com' -keyout mssql.key -out mssql.pem
chmod 440 mssql.pem
chmod 440 mssql.key

View File

@@ -1,5 +0,0 @@
[network]
tlscert = /etc/ssl/certs/mssql.pem
tlskey = /etc/ssl/private/mssql.key
tlsprotocols = 1.2
forceencryption = 1

View File

@@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5bUoMylrFiaAC
1sYCQlMqqX/yvGwZAIoWq5mo4Kc1PB1JDS8+vB7s8SMsJSMldB1udSEsv0P4k1sV
pymRZp0Y2IAepcJ1qpFEUJGH5E1A6JIDW3EyvddO5u4BoA+ZDUFvlRyozZumSbP8
hvBtFv8OR/guB1938XB185CM5EFZydKeTkKiPhvTA2fbqmmi96DAxDMI2ggBBKDI
UVTUWJqJMOcj/sLGY87jPiltgQGknSxKZoJYeqFeyhYPrzvUrzLJJQPBJ9L7HwoO
In4jxIN8sDhl/4yXSmX8bGRRXOLhrspGp0KRIQXUeClZLswz+YT07pPl6oMXQnD/
dl/WcSuZAgMBAAECggEABbzoCbVJUcuMdAoJXpCG2k8ccnp6LdviagktXBh3lCIk
Fdqel6ZinppnqDoN+F67emuNd0ED7XFB5E2j76fpPJeWf1xJxDJfBGop1rat3VBV
FF2EBznwq7RhsRMu6GGMoNNQa7jRFDg7pZjXX8jSY7K+b04zGhcSj9PVqUZ27zxO
AwKsRVDwbJ3SkQKhUTMvzgJiaIinvE8qMjFby+ar5R7HrQOXKKKwZDuTlLQGinMF
Nskb6e9uI5T4KVnp7JDGPw/rojBYEJnCnUv3nL51UYjRDl1lX+KPEf8a3nK37Nk5
Xalj7IKAbyw6vbqr8qPcRWsOloC3KF/O5v+5nxSAMQKBgQDzahPceQxeZHpeWpC3
9nUIHBt9zqkg9eszNZ9MyVjUbBraBRwYX1sBjZz+l5ohMA5VqyPlv31LFp9B6V/A
GI6b1qFWQ0RnzNT7DT0xSq5Ble6DKmksJjcONEVy6oROhj/GGQuufx1+sstARxk8
H3A6uFtL53Hjgf8vGQEeFjIqcwKBgQDDA6sW41xwfGPGfu355oN6s4fVrfA8wocv
zNGXSMtJbAXLAC1fpOhbWzAWGRt8KqQWhTcpmBAClotNi4ollWlzHit6u34l4tL+
dba7Vo2qbEs6IggE4zLHznEO/yKBOXVNB2PV+fnQo90kZ76AxEbGywz4BJ5ImO2C
rpV+flZSwwKBgQCbCyY7eJ74QOfw0Z78jm9dCwo3yDrSU9HMfItLTbTXGUTBOh/7
JkHBa4JkaAw0t3dp+eiTnrUf7vjh8tSadwnfGYcKey5HL6E5h+VCUF9OR0H1Kj5z
cKQA2CqkV9yOZ9SXSby3GSCgYyIzfxYDxcKmpGcCohlY4KS6SyL7Fwg9IQKBgQCk
ktTw1ODvANqG6hlU+ubcRuQMPOTvsc66VSRPgpwkEyh0X2rrO1Tnu/XBwGCEkcu2
QagCzxQ7yuY2g9sKyqOaBcz1n4Le4CPloFucj3ewagG2Rn/z9/Sj0CFzYXayDVZj
sifbrUDYhWEb1v1a18lO/I6uQ998LqrJzSHWBTI+VwKBgBek9td3SMUCjQ49toer
WKb69wqHIwgniOZmemX7EStfI7oQUtUZi0ZRvQd220oJI/jmarNlmi4Myuj2E8bI
pn3TRi3tAsxZ8y59BFNZkeHNAv4//ei0+6Y9HN43Ie7rpXIvEmL/8QMDUsfOXkto
s4bzmT5NcOMZuDr7fjKic/hl
-----END PRIVATE KEY-----

View File

@@ -1,19 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIDHTCCAgWgAwIBAgIUXEXm761ENtHmsrdb12sJyPedfW8wDQYJKoZIhvcNAQEL
BQAwHjEcMBoGA1UEAwwTc3FsdGVzdC5haXJieXRlLmNvbTAeFw0yMTA1MDcyMzA3
NDBaFw0yMTA2MDYyMzA3NDBaMB4xHDAaBgNVBAMME3NxbHRlc3QuYWlyYnl0ZS5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5bUoMylrFiaAC1sYC
QlMqqX/yvGwZAIoWq5mo4Kc1PB1JDS8+vB7s8SMsJSMldB1udSEsv0P4k1sVpymR
Zp0Y2IAepcJ1qpFEUJGH5E1A6JIDW3EyvddO5u4BoA+ZDUFvlRyozZumSbP8hvBt
Fv8OR/guB1938XB185CM5EFZydKeTkKiPhvTA2fbqmmi96DAxDMI2ggBBKDIUVTU
WJqJMOcj/sLGY87jPiltgQGknSxKZoJYeqFeyhYPrzvUrzLJJQPBJ9L7HwoOIn4j
xIN8sDhl/4yXSmX8bGRRXOLhrspGp0KRIQXUeClZLswz+YT07pPl6oMXQnD/dl/W
cSuZAgMBAAGjUzBRMB0GA1UdDgQWBBQO7E0qXXC6/C63Ph02pmr1DGhTfjAfBgNV
HSMEGDAWgBQO7E0qXXC6/C63Ph02pmr1DGhTfjAPBgNVHRMBAf8EBTADAQH/MA0G
CSqGSIb3DQEBCwUAA4IBAQA9uejsECQbFqNw2oXnOZfcHSvfslWq11GdPLqMWFYW
NBWAEw2PS5uiB3B8Q+sFZ/7sXcGyK7e55JPMUxnsH3yIiE0NB0S56pcfFBL9k9xB
4zL7h1LMnmYTueIhUWOInbc1VNrdycMjpTqkVjNYabiXwvza/iWG+EQfxh3bABtE
+t1omtwMGtOB/XF7jPndfBk7Tdj2PgsTGBru3HVP7hTwHOSlhpGt+p5hsWQVAbBl
PSQyvP1xX/KfjGOs8WtKtpwc6RMNbreJfA4ktqvYTYPCvVm9+LpdLZ1jj0OAxKe6
dcshkMOfJUPBb4HmDX0RZrDJH+4UKbqQ9vC6sTvPQtDO
-----END CERTIFICATE-----