@@ -72,28 +72,23 @@ jobs:
7272 cdk_extra : n/a
7373 - connector : source-shopify
7474 cdk_extra : n/a
75- # Chargebee is being flaky:
76- # - connector: source-chargebee
77- # cdk_extra: n/a
78- # This one is behind in CDK updates and can't be used as tests until it is updated:
79- # - connector: destination-pinecone
80- # cdk_extra: vector-db-based
8175 - connector : source-google-drive
8276 cdk_extra : file-based
8377 - connector : destination-motherduck
8478 cdk_extra : sql
85- # ZenDesk currently failing (as of 2024-12-02)
86- # TODO: Re-enable once fixed
87- # - connector: source-zendesk-support
88- # cdk_extra: n/a
89- # TODO: These are manifest connectors and won't work as expected until we
90- # add `--use-local-cdk` support for manifest connectors.
9179 - connector : source-amplitude
9280 cdk_extra : n/a
81+ - connector : source-intercom
82+ cdk_extra : n/a
9383 - connector : source-pokeapi
9484 cdk_extra : n/a
9585
96- name : " Check: '${{matrix.connector}}' (skip=${{needs.cdk_changes.outputs['src'] == 'false' || needs.cdk_changes.outputs[matrix.cdk_extra] == 'false'}})"
86+ # CDK Tests cannot build the Connector object (constructor args not optional).
87+ # - connector: source-zendesk-support
88+ # cdk_extra: n/a
89+
90+ name : " ${{ needs.cdk_changes.outputs[matrix.cdk_extra] == 'false' && 'Skipped Check' || 'Check' }}: ${{matrix.connector}}"
91+ if : needs.cdk_changes.outputs['src'] == 'true'
9792 permissions :
9893 checks : write
9994 contents : write # Required for creating commit statuses
@@ -125,110 +120,89 @@ jobs:
125120 repository : airbytehq/airbyte
126121 ref : master
127122 path : airbyte
123+
128124 - name : Set up Python
125+ if : steps.no_changes.outputs.status != 'cancelled'
129126 uses : actions/setup-python@v5
130127 with :
131128 python-version : " 3.11"
132- # Create initial pending status for test report
133- - name : Create Pending Test Report Status
129+
130+ - name : Set up `uv`
131+ if : steps.no_changes.outputs.status != 'cancelled'
132+ 133+
134+ - name : Set up `poe`
135+ if : steps.no_changes.outputs.status != 'cancelled'
136+ run : |
137+ uv tool install poethepoet
138+
139+ - name : Set up Poetry
140+ if : steps.no_changes.outputs.status != 'cancelled'
141+ uses : Gr1N/setup-poetry@v9
142+ with :
143+ poetry-version : " 2.0.1"
144+
145+ - name : Get Connector Language
146+ if : steps.no_changes.outputs.status != 'cancelled'
147+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
148+ run : |
149+ # Get the language of the connector from the metadata file
150+ CONNECTOR_LANGUAGE=$(poe -qq get-language)
151+ echo "CONNECTOR_LANGUAGE=$CONNECTOR_LANGUAGE" | tee -a $GITHUB_ENV
152+
153+ - name : Install CDK with Poetry
134154 if : steps.no_changes.outputs.status != 'cancelled'
135- env :
136- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
137155 run : |
138- HEAD_SHA="${{ github.event.pull_request.head.sha || github.sha }}"
139- gh api \
140- --method POST \
141- -H "Accept: application/vnd.github+json" \
142- -H "X-GitHub-Api-Version: 2022-11-28" \
143- repos/${{ github.repository }}/statuses/$HEAD_SHA \
144- -f state="pending" \
145- -f description="Running connector tests..." \
146- -f context="${{ matrix.connector }} Test Report"
147-
148- - name : Test Connector
156+ cd airbyte-python-cdk
157+ poetry install --all-extras
158+
159+ - name : Fetch Connector Secrets
149160 if : steps.no_changes.outputs.status != 'cancelled'
150161 timeout-minutes : 90
162+ working-directory : airbyte-python-cdk
151163 env :
152164 GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
153165 POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
154166 run : |
155- cd airbyte
156- make tools.airbyte-ci.install
157- airbyte-ci \
158- --ci-report-bucket-name=airbyte-ci-reports-multi \
159- connectors \
160- --name ${{matrix.connector}} \
161- --use-local-cdk \
162- test \
163- --fail-fast \
164- --skip-step qa_checks \
165- --skip-step connector_live_tests
166-
167- - name : Evaluate Test
168- id : evaluate_output
169- if : always() && steps.no_changes.outputs.status != 'cancelled'
167+ poetry run airbyte-cdk secrets fetch ${{ matrix.connector }}
168+
169+ - name : Bump to Dev Branch CDK [Python Connectors]
170+ if : env.CONNECTOR_LANGUAGE == 'python'
171+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
170172 run : |
171- # save job output json file as ci step output
172- json_output_file=$(find airbyte/airbyte-ci/connectors/pipelines/pipeline_reports -name 'output.json' -print -quit)
173- job_output=$(cat ${json_output_file})
174- success=$(echo ${job_output} | jq -r '.success')
175- failed_step=$(echo ${job_output} | jq -r '.failed_steps | select(length > 0) | .[0] // "None"')
176- run_duration=$(echo ${job_output} | jq -r '.run_duration')
177- html_report_url=$(echo ${job_output} | jq -r '.html_report_url')
178- echo "## Job Output for ${{matrix.connector}}" >> $GITHUB_STEP_SUMMARY
179- echo "- [HTML Report](${html_report_url})" >> $GITHUB_STEP_SUMMARY
180- echo "- Success: ${success}" >> $GITHUB_STEP_SUMMARY
181- echo "- Test Duration: $(printf "%.0f" ${run_duration})s" >> $GITHUB_STEP_SUMMARY
182- if [ "${success}" != "true" ]; then
183- echo "- Failed Step: ${failed_step}" >> $GITHUB_STEP_SUMMARY
184- fi
185- echo -e "\n[Download Job Output](${{steps.upload_job_output.outputs.artifact-url}})" >> $GITHUB_STEP_SUMMARY
186- if [ "${success}" != "true" ]; then
187- echo "::error::Test failed for connector '${{ matrix.connector }}' on step '${failed_step}'. "
188- exit 1
189- fi
190- echo "See the execution report for details: ${html_report_url}"
191- echo "success=${success}" >> $GITHUB_OUTPUT
192- echo "html_report_url=${html_report_url}" >> $GITHUB_OUTPUT
173+ echo "Using CDK ref ${{ github.event.pull_request.head.sha || github.sha }}"
174+ poe use-cdk-branch ${{ github.event.pull_request.head.sha || github.sha }}
175+ poetry install --all-extras
176+
177+ - name : Run Unit Tests [Python Connectors]
178+ if : env.CONNECTOR_LANGUAGE == 'python'
179+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
180+ run : |
181+ poe test-unit-tests
182+
183+ - name : Run FAST Standard Tests [Python Connectors]
184+ if : env.CONNECTOR_LANGUAGE == 'python'
185+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
186+ env :
187+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
188+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
189+ run : |
190+ poetry run airbyte-cdk connector test
193191
194- # Update the test report status with results
195- - name : Update Test Report Status
196- if : always() && steps.no_changes.outputs.status != 'cancelled' && steps.evaluate_output.outcome == 'success'
192+ - name : Run FAST Standard Tests [Manifest-Only Connectors]
193+ if : env.CONNECTOR_LANGUAGE == 'manifest-only'
194+ working-directory : airbyte-python-cdk
197195 env :
198- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
196+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
197+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
199198 run : |
200- HEAD_SHA="${{ github.event.pull_request.head.sha || github.sha }}"
201- gh api \
202- --method POST \
203- -H "Accept: application/vnd.github+json" \
204- -H "X-GitHub-Api-Version: 2022-11-28" \
205- repos/${{ github.repository }}/statuses/$HEAD_SHA \
206- -f state="${{ steps.evaluate_output.outputs.success == 'true' && 'success' || 'failure' }}" \
207- -f target_url="${{ steps.evaluate_output.outputs.html_report_url }}" \
208- -f description="Click Details to view the test report" \
209- -f context="${{ matrix.connector }} Test Report"
210-
211- # Create failure status if report generation failed
212- - name : Create Report Generation Failed Status
213- if : always() && steps.no_changes.outputs.status != 'cancelled' && steps.evaluate_output.outcome != 'success'
199+ poetry run airbyte-cdk connector test ${{ matrix.connector }}
200+
201+ - name : Container Build and Test [All Connectors]
202+ if : steps.no_changes.outputs.status != 'cancelled'
203+ working-directory : airbyte-python-cdk
214204 env :
215- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
205+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
206+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
216207 run : |
217- HEAD_SHA="${{ github.event.pull_request.head.sha || github.sha }}"
218- gh api \
219- --method POST \
220- -H "Accept: application/vnd.github+json" \
221- -H "X-GitHub-Api-Version: 2022-11-28" \
222- repos/${{ github.repository }}/statuses/$HEAD_SHA \
223- -f state="failure" \
224- -f description="Failed to run connector tests." \
225- -f context="${{ matrix.connector }} Test Report"
226-
227- # Upload the job output to the artifacts
228- - name : Upload Job Output
229- id : upload_job_output
230- if : always() && steps.no_changes.outputs.status != 'cancelled'
231- uses : actions/upload-artifact@v4
232- with :
233- name : ${{matrix.connector}}-job-output
234- path : airbyte/airbyte-ci/connectors/pipelines/pipeline_reports
208+ poetry run airbyte-cdk image test ${{ matrix.connector }}
0 commit comments