Skip to content

Commit a003522

Browse files
authored
Merge branch 'master' into btkcodedev/builder-contribute/source-appcues
2 parents ba9440f + 254f34a commit a003522

File tree

9,659 files changed

+971045
-326517
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

9,659 files changed

+971045
-326517
lines changed

.bumpversion.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.57.4
2+
current_version = 0.64.3
33
commit = False
44
tag = False
55
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-[a-z]+)?

.devcontainer/python-connectors-generic/devcontainer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{
33
"name": "Python Development DevContainer (Generic)",
44

5-
"image": "mcr.microsoft.com/devcontainers/python:0-3.10",
5+
"image": "mcr.microsoft.com/devcontainers/python:1-3.10",
66
"features": {
77
"ghcr.io/devcontainers/features/docker-in-docker": {},
88
"ghcr.io/devcontainers/features/python:1": {

.github/CODEOWNERS

+21-6
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,31 @@
44
/airbyte-integrations/connectors/destination-milvus @airbytehq/ai-language-models
55
/airbyte-integrations/connectors/destination-qdrant @airbytehq/ai-language-models
66
/airbyte-integrations/connectors/destination-chroma @airbytehq/ai-language-models
7+
/airbyte-integrations/connectors/destination-snowflake-cortex @airbytehq/ai-language-models
78
/airbyte-cdk/python/airbyte_cdk/destinations/vector_db_based @airbytehq/ai-language-models
89

910
# CI/CD
10-
/.github/ @airbytehq/connector-extensibility
11-
/airbyte-ci/ @airbytehq/connector-extensibility
11+
/.github/ @airbytehq/dev-tooling
12+
/airbyte-ci/ @airbytehq/dev-tooling
1213

1314
# Python CDK and Connector Acceptance Tests
14-
/airbyte-cdk/python @airbytehq/connector-extensibility
15-
/airbyte-integrations/connector-templates/ @airbytehq/connector-extensibility
16-
/airbyte-integrations/bases/connector-acceptance-test/ @airbytehq/connector-extensibility @lazebnyi @oustynova
15+
/airbyte-cdk/python @airbytehq/python-team
16+
/airbyte-integrations/connector-templates/ @airbytehq/dev-marketplace-contributions
17+
/airbyte-integrations/bases/connector-acceptance-test/ @airbytehq/dev-tooling
1718

1819
# Build customization file change
19-
/airbyte-integrations/connectors/**/build_customization.py @airbytehq/connector-extensibility
20+
/airbyte-integrations/connectors/**/build_customization.py @airbytehq/dev-tooling
2021

2122
# Protocol related items
2223
/docs/understanding-airbyte/airbyte-protocol.md @airbytehq/protocol-reviewers
2324

25+
# Bulk CDK
26+
/airbyte-cdk/bulk @airbytehq/dbsources @airbytehq/destinations
27+
/airbyte-cdk/bulk/core/extract/ @airbytehq/dbsources
28+
/airbyte-cdk/bulk/core/load/ @airbytehq/destinations
29+
/airbyte-cdk/bulk/toolkits/extract-*/ @airbytehq/dbsources
30+
/airbyte-cdk/bulk/toolkits/load-*/ @airbytehq/destinations
31+
2432
# Java CDK
2533
/airbyte-cdk/java/airbyte-cdk @airbytehq/dbsources @airbytehq/destinations
2634
/airbyte-cdk/java/airbyte-cdk/*-sources/ @airbytehq/dbsources
@@ -51,3 +59,10 @@
5159
/airbyte-integrations/connectors/destination-s3/ @airbytehq/destinations
5260
/airbyte-integrations/connectors/destination-snowflake/ @airbytehq/destinations
5361
/airbyte-integrations/connectors/destination-redshift/ @airbytehq/destinations
62+
63+
# Python critical connectors
64+
/airbyte-integrations/connectors/source-facebook-marketing/ @airbytehq/python-team
65+
/airbyte-integrations/connectors/source-hubspot/ @airbytehq/python-team
66+
/airbyte-integrations/connectors/source-salesforce/ @airbytehq/python-team
67+
/airbyte-integrations/connectors/source-shopify/ @airbytehq/python-team
68+
/airbyte-integrations/connectors/source-stripe/ @airbytehq/python-team

.github/actions/airbyte-ci-requirements/action.yml

-104
This file was deleted.

.github/actions/install-airbyte-ci/action.yml

+13-3
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,41 @@ inputs:
1010
description: "Path to airbyte-ci source"
1111
required: false
1212
default: airbyte-ci/connectors/pipelines
13+
is_fork:
14+
description: "Whether the PR is from a fork"
15+
required: false
16+
default: "false"
1317
runs:
1418
using: "composite"
1519
steps:
1620
- name: Get changed files
17-
uses: tj-actions/changed-files@v39
21+
uses: tj-actions/changed-files@v44
22+
# When the PR is from a fork, we always install from binary, so we don't need to check for changes
23+
if: inputs.is_fork == 'false'
1824
id: changes
1925
with:
2026
files_yaml: |
2127
pipelines:
2228
- '${{ inputs.path_to_airbyte_ci_source }}/**'
2329
24-
- name: Determine how Airbyte CI should be installed
30+
- name: "Determine how Airbyte CI should be installed"
2531
shell: bash
2632
id: determine-install-mode
33+
# When the PR is from a fork, we always install from binary
34+
if: inputs.is_fork == 'false'
2735
run: |
2836
if [[ "${{ github.ref }}" != "refs/heads/master" ]] && [[ "${{ steps.changes.outputs.pipelines_any_changed }}" == "true" ]]; then
2937
echo "Making changes to Airbyte CI on a non-master branch. Airbyte-CI will be installed from source."
3038
echo "install-mode=source" >> $GITHUB_OUTPUT
39+
echo "SENTRY_ENVIRONMENT=dev" >> $GITHUB_ENV
3140
else
3241
echo "install-mode=binary" >> $GITHUB_OUTPUT
42+
echo "SENTRY_ENVIRONMENT=production" >> $GITHUB_ENV
3343
fi
3444
3545
- name: Install Airbyte CI from binary
3646
id: install-airbyte-ci-binary
37-
if: steps.determine-install-mode.outputs.install-mode == 'binary'
47+
if: steps.determine-install-mode.outputs.install-mode == 'binary' || ${{ inputs.is_fork }} == 'true'
3848
shell: bash
3949
run: |
4050
curl -sSL ${{ inputs.airbyte_ci_binary_url }} --output airbyte-ci-bin

.github/actions/run-airbyte-ci/action.yml

+72-28
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ inputs:
99
required: true
1010
github_token:
1111
description: "GitHub token"
12-
required: true
12+
required: false
1313
dagger_cloud_token:
1414
description: "Dagger Cloud token"
15-
required: true
15+
required: false
1616
docker_hub_username:
1717
description: "Dockerhub username"
18-
required: true
18+
required: false
1919
docker_hub_password:
2020
description: "Dockerhub password"
21-
required: true
21+
required: false
2222
options:
2323
description: "Options for the subcommand"
2424
required: false
@@ -34,6 +34,14 @@ inputs:
3434
description: "GCP credentials for GCP Secret Manager"
3535
required: false
3636
default: ""
37+
gcp_integration_tester_credentials:
38+
description: "GCP credentials for integration tests"
39+
required: false
40+
default: ""
41+
git_repo_url:
42+
description: "Git repository URL"
43+
default: https://github.com/airbytehq/airbyte.git
44+
required: false
3745
git_branch:
3846
description: "Git branch to checkout"
3947
required: false
@@ -79,74 +87,110 @@ inputs:
7987
python_registry_token:
8088
description: "Python registry API token to publish python package"
8189
required: false
90+
is_fork:
91+
description: "Whether the PR is from a fork"
92+
required: false
93+
default: "false"
94+
max_attempts:
95+
description: "Number of attempts at running the airbyte-ci command"
96+
required: false
97+
default: 1
98+
retry_wait_seconds:
99+
description: "Number of seconds to wait between retry attempts"
100+
required: false
101+
default: 60
82102

83103
runs:
84104
using: "composite"
85105
steps:
86106
- name: Get start timestamp
87107
id: get-start-timestamp
88108
shell: bash
89-
run: echo "name=start-timestamp=$(date +%s)" >> $GITHUB_OUTPUT
90-
91-
- name: Check if PR is from a fork
92-
id: check-if-pr-is-from-fork
93-
if: github.event_name == 'pull_request'
94-
shell: bash
95-
run: |
96-
if [ "${{ github.event.pull_request.head.repo.fork }}" == "true" ]; then
97-
echo "PR is from a fork. Exiting workflow..."
98-
exit 78
99-
fi
100-
109+
run: echo "start-timestamp=$(date +%s)" >> $GITHUB_OUTPUT
101110
- name: Docker login
102111
id: docker-login
103112
uses: docker/login-action@v3
113+
if: ${{ inputs.docker_hub_username != '' && inputs.docker_hub_password != '' }}
104114
with:
105115
username: ${{ inputs.docker_hub_username }}
106116
password: ${{ inputs.docker_hub_password }}
107-
108117
- name: Install Airbyte CI
109118
id: install-airbyte-ci
110119
uses: ./.github/actions/install-airbyte-ci
111120
with:
112121
airbyte_ci_binary_url: ${{ inputs.airbyte_ci_binary_url }}
113-
122+
is_fork: ${{ inputs.is_fork }}
114123
- name: Run airbyte-ci
115124
id: run-airbyte-ci
116-
shell: bash
117-
run: |
118-
airbyte-ci --disable-update-check --disable-dagger-run --is-ci --gha-workflow-run-id=${{ github.run_id }} ${{ inputs.subcommand }} ${{ inputs.options }}
125+
uses: nick-fields/retry@v3
119126
env:
127+
CI: "True"
128+
CI_GIT_USER: ${{ github.repository_owner }}
129+
CI_PIPELINE_START_TIMESTAMP: ${{ steps.get-start-timestamp.outputs.start-timestamp }}
130+
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
131+
# Next environment variables are workflow inputs based and can be set with empty values if the inputs are not required and passed
120132
CI_CONTEXT: "${{ inputs.context }}"
121133
CI_GIT_BRANCH: ${{ inputs.git_branch || github.head_ref }}
134+
CI_GIT_REPO_URL: ${{ inputs.git_repo_url }}
122135
CI_GIT_REVISION: ${{ inputs.git_revision || github.sha }}
123136
CI_GITHUB_ACCESS_TOKEN: ${{ inputs.github_token }}
124137
CI_JOB_KEY: ${{ inputs.ci_job_key }}
125-
CI_PIPELINE_START_TIMESTAMP: ${{ steps.get-start-timestamp.outputs.start-timestamp }}
126138
CI_REPORT_BUCKET_NAME: ${{ inputs.report_bucket_name }}
127-
CI: "True"
128139
DAGGER_CLOUD_TOKEN: "${{ inputs.dagger_cloud_token }}"
129140
DOCKER_HUB_PASSWORD: ${{ inputs.docker_hub_password }}
130141
DOCKER_HUB_USERNAME: ${{ inputs.docker_hub_username }}
131142
GCP_GSM_CREDENTIALS: ${{ inputs.gcp_gsm_credentials }}
143+
GCP_INTEGRATION_TESTER_CREDENTIALS: ${{ inputs.gcp_integration_tester_credentials }}
132144
GCS_CREDENTIALS: ${{ inputs.gcs_credentials }}
133145
METADATA_SERVICE_BUCKET_NAME: ${{ inputs.metadata_service_bucket_name }}
134146
METADATA_SERVICE_GCS_CREDENTIALS: ${{ inputs.metadata_service_gcs_credentials }}
135147
PRODUCTION: ${{ inputs.production }}
136-
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
137148
PYTHON_REGISTRY_TOKEN: ${{ inputs.python_registry_token }}
138149
PYTHON_REGISTRY_URL: ${{ inputs.python_registry_url }}
139-
PYTHON_REGISTRY_CHECK_URL: ${{ inputs.python_registry_check_url }}
140150
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ inputs.s3_build_cache_access_key_id }}
141151
S3_BUILD_CACHE_SECRET_KEY: ${{ inputs.s3_build_cache_secret_key }}
142152
SENTRY_DSN: ${{ inputs.sentry_dsn }}
143-
SENTRY_ENVIRONMENT: ${{ steps.determine-install-mode.outputs.install-mode }}
144153
SLACK_WEBHOOK: ${{ inputs.slack_webhook_url }}
145154
SPEC_CACHE_BUCKET_NAME: ${{ inputs.spec_cache_bucket_name }}
146155
SPEC_CACHE_GCS_CREDENTIALS: ${{ inputs.spec_cache_gcs_credentials }}
147-
# give the Dagger Engine more time to push cache data to Dagger Cloud
156+
with:
157+
shell: bash
158+
max_attempts: ${{ inputs.max_attempts }}
159+
retry_wait_seconds: ${{ inputs.retry_wait_seconds }}
160+
# 360mn > 6 hours: it's the GitHub runner max job duration
161+
timeout_minutes: 360
162+
command: |
163+
airbyte-ci --disable-update-check --disable-dagger-run --is-ci --gha-workflow-run-id=${{ github.run_id }} ${{ inputs.subcommand }} ${{ inputs.options }}
148164
- name: Stop Engine
149165
id: stop-engine
150166
if: always()
151167
shell: bash
152-
run: docker stop --time 300 $(docker ps --filter name="dagger-engine-*" -q)
168+
run: |
169+
mapfile -t containers < <(docker ps --filter name="dagger-engine-*" -q)
170+
if [[ "${#containers[@]}" -gt 0 ]]; then
171+
# give 5mn to the Dagger Engine to push cache data to Dagger Cloud
172+
docker stop -t 300 "${containers[@]}";
173+
fi
174+
175+
- name: Collect dagger engine logs
176+
id: collect-dagger-engine-logs
177+
if: always()
178+
uses: jwalton/gh-docker-logs@v2
179+
with:
180+
dest: "./dagger_engine_logs"
181+
images: "registry.dagger.io/engine"
182+
183+
- name: Tar logs
184+
id: tar-logs
185+
if: always()
186+
shell: bash
187+
run: tar cvzf ./dagger_engine_logs.tgz ./dagger_engine_logs
188+
189+
- name: Upload logs to GitHub
190+
id: upload-dagger-engine-logs
191+
if: always()
192+
uses: actions/upload-artifact@v4
193+
with:
194+
name: ${{ github.job }}_dagger_engine_logs.tgz
195+
path: ./dagger_engine_logs.tgz
196+
retention-days: 7

0 commit comments

Comments
 (0)