@@ -72,28 +72,26 @@ jobs:
72
72
cdk_extra : n/a
73
73
- connector : source-shopify
74
74
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
81
75
- connector : source-google-drive
82
76
cdk_extra : file-based
83
77
- connector : destination-motherduck
84
- cdk_extra : sql
85
- # ZenDesk currently failing (as of 2024-12-02)
86
- # TODO: Re-enable once fixed
87
- # - connector: source-zendesk-support
78
+ # For now, we mark as 'n/a' to always test this connector
79
+ cdk_extra : n/a # change to 'sql' to test less often
80
+ # source-amplitude failing for unrelated issue "date too far back"
81
+ # e.g. https://github.com/airbytehq/airbyte-python-cdk/actions/runs/16053716569/job/45302638848?pr=639
82
+ # - connector: source-amplitude
88
83
# 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.
91
- - connector : source-amplitude
84
+ - connector : source-intercom
92
85
cdk_extra : n/a
93
86
- connector : source-pokeapi
94
87
cdk_extra : n/a
95
88
96
- name : " Check: '${{matrix.connector}}' (skip=${{needs.cdk_changes.outputs['src'] == 'false' || needs.cdk_changes.outputs[matrix.cdk_extra] == 'false'}})"
89
+ # CDK Tests cannot build the Connector object (constructor args not optional).
90
+ # - connector: source-zendesk-support
91
+ # cdk_extra: n/a
92
+
93
+ name : " ${{ needs.cdk_changes.outputs[matrix.cdk_extra] == 'false' && 'Skipped Check' || 'Check' }}: ${{matrix.connector}}"
94
+ if : needs.cdk_changes.outputs['src'] == 'true'
97
95
permissions :
98
96
checks : write
99
97
contents : write # Required for creating commit statuses
@@ -125,110 +123,89 @@ jobs:
125
123
repository : airbytehq/airbyte
126
124
ref : master
127
125
path : airbyte
126
+
128
127
- name : Set up Python
128
+ if : steps.no_changes.outputs.status != 'cancelled'
129
129
uses : actions/setup-python@v5
130
130
with :
131
131
python-version : " 3.11"
132
- # Create initial pending status for test report
133
- - name : Create Pending Test Report Status
132
+
133
+ - name : Set up `uv`
134
+ if : steps.no_changes.outputs.status != 'cancelled'
135
+
136
+
137
+ - name : Set up `poe`
138
+ if : steps.no_changes.outputs.status != 'cancelled'
139
+ run : |
140
+ uv tool install poethepoet
141
+
142
+ - name : Set up Poetry
143
+ if : steps.no_changes.outputs.status != 'cancelled'
144
+ uses : Gr1N/setup-poetry@v9
145
+ with :
146
+ poetry-version : " 2.0.1"
147
+
148
+ - name : Get Connector Language
149
+ if : steps.no_changes.outputs.status != 'cancelled'
150
+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
151
+ run : |
152
+ # Get the language of the connector from the metadata file
153
+ CONNECTOR_LANGUAGE=$(poe -qq get-language)
154
+ echo "CONNECTOR_LANGUAGE=$CONNECTOR_LANGUAGE" | tee -a $GITHUB_ENV
155
+
156
+ - name : Install CDK with Poetry
134
157
if : steps.no_changes.outputs.status != 'cancelled'
135
- env :
136
- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
137
158
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
159
+ cd airbyte-python-cdk
160
+ poetry install --all-extras
161
+
162
+ - name : Fetch Connector Secrets
149
163
if : steps.no_changes.outputs.status != 'cancelled'
150
164
timeout-minutes : 90
165
+ working-directory : airbyte-python-cdk
151
166
env :
152
167
GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
153
168
POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
154
169
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'
170
+ poetry run airbyte-cdk secrets fetch ${{ matrix.connector }}
171
+
172
+ - name : Bump to Dev Branch CDK [Python Connectors]
173
+ if : env.CONNECTOR_LANGUAGE == 'python'
174
+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
170
175
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
176
+ echo "Using CDK ref ${{ github.event.pull_request.head.sha || github.sha }}"
177
+ poe use-cdk-branch ${{ github.event.pull_request.head.sha || github.sha }}
178
+ poetry install --all-extras
193
179
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'
180
+ - name : Run Unit Tests [Python Connectors]
181
+ if : env.CONNECTOR_LANGUAGE == 'python'
182
+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
183
+ run : |
184
+ poe test-unit-tests
185
+
186
+ - name : Run FAST Standard Tests [Python Connectors]
187
+ if : env.CONNECTOR_LANGUAGE == 'python'
188
+ working-directory : airbyte/airbyte-integrations/connectors/${{ matrix.connector }}
197
189
env :
198
- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
190
+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
191
+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
199
192
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'
193
+ poetry run airbyte-cdk connector test
194
+
195
+ - name : Run FAST Standard Tests [Manifest-Only Connectors]
196
+ if : env.CONNECTOR_LANGUAGE == 'manifest-only'
197
+ working-directory : airbyte-python-cdk
214
198
env :
215
- GH_TOKEN : ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }}
199
+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
200
+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
216
201
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
202
+ poetry run airbyte-cdk connector test ${{ matrix.connector }}
203
+
204
+ - name : Container Build and Test [All Connectors]
205
+ if : steps.no_changes.outputs.status != 'cancelled'
206
+ working-directory : airbyte-python-cdk
207
+ env :
208
+ GCP_GSM_CREDENTIALS : ${{ secrets.GCP_GSM_CREDENTIALS }}
209
+ POETRY_DYNAMIC_VERSIONING_BYPASS : " 0.0.0"
210
+ run : |
211
+ poetry run airbyte-cdk image test ${{ matrix.connector }}
0 commit comments