From 5822e5ef6a667087ab2ecf2daee24bf2b7820f3a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 23:38:55 +0000 Subject: [PATCH 1/4] ci: use PYPI_TOKEN for publishing instead of OIDC trusted publisher Switch from PyPI OIDC trusted publishing to PYPI_TOKEN secret. OIDC requires PyPI Owner access to configure, which is currently blocked pending ownership transfer. PYPI_TOKEN was already configured in the repo from the v1 Speakeasy workflow. Co-Authored-By: AJ Steers --- .github/workflows/pre-release-command.yml | 8 +++----- .github/workflows/publish.yml | 18 +++++------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pre-release-command.yml b/.github/workflows/pre-release-command.yml index 791f88c4..de5748ff 100644 --- a/.github/workflows/pre-release-command.yml +++ b/.github/workflows/pre-release-command.yml @@ -53,13 +53,9 @@ jobs: pre_release: name: Build & Publish Pre-Release runs-on: ubuntu-latest - environment: - name: pypi - url: https://pypi.org/project/airbyte-api/ permissions: contents: write pull-requests: write - id-token: write steps: # ── Slash command: post starting comment ──────────────────────── - name: Authenticate as GitHub App @@ -129,7 +125,9 @@ jobs: run: uv build - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + run: uv publish + env: + UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }} # ── Tag the commit ────────────────────────────────────────────── - name: Create and push tag diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ce3d86d5..ebfd0b05 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,15 +1,10 @@ # PyPI Publish Workflow # # Triggered when a GitHub Release is published (draft → published). -# Builds the Python package and uploads it to PyPI using OIDC trusted publishing. +# Builds the Python package and uploads it to PyPI using PYPI_TOKEN. # # Prerequisites: -# - PyPI trusted publisher configured for this repository: -# https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/ -# Owner: airbytehq -# Repository: airbyte-api-python-sdk -# Workflow: publish.yml -# Environment: pypi +# - PYPI_TOKEN secret configured in the repository name: Publish to PyPI @@ -24,11 +19,6 @@ jobs: publish: name: Build & Publish to PyPI runs-on: ubuntu-latest - environment: - name: pypi - url: https://pypi.org/project/airbyte-api/ - permissions: - id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 @@ -42,4 +32,6 @@ jobs: run: uv build - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + run: uv publish + env: + UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }} From fd1543fc0b17b9f4dc65e98f207519ff8e2c7cf0 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2026 00:09:54 +0000 Subject: [PATCH 2/4] ci: fix infinite generate loop and update schedule to 5am/5pm Pacific MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Restore workflow.lock to HEAD before checking for changes to avoid non-deterministic codeSamplesRevisionDigest diffs triggering endless generate→merge loops - Change schedule from daily 6am UTC to 5am & 5pm Pacific (12:00 & 00:00 UTC) Co-Authored-By: AJ Steers --- .github/workflows/generate-command.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generate-command.yml b/.github/workflows/generate-command.yml index e65cec9f..66da5cbd 100644 --- a/.github/workflows/generate-command.yml +++ b/.github/workflows/generate-command.yml @@ -5,7 +5,7 @@ # # Triggers: # - On push to main: Auto-generates after every merge to ensure SDK stays up-to-date (auto-merge enabled) -# - Daily schedule (6 AM UTC): Catches upstream API spec changes (auto-merge enabled) +# - Daily schedule (5 AM & 5 PM Pacific): Catches upstream API spec changes (auto-merge enabled) # - Manual workflow_dispatch: For on-demand generation # - Slash command (/generate): Regenerates and pushes results back to the PR branch # - workflow_call: For validation from other workflows (e.g., PR checks) @@ -30,7 +30,8 @@ name: Generate SDK branches: - main schedule: - - cron: '0 6 * * *' + - cron: '0 12 * * *' + - cron: '0 0 * * *' workflow_dispatch: inputs: dry_run: @@ -203,6 +204,9 @@ jobs: if: ${{ !inputs.dry_run }} id: changes run: | + # Restore workflow.lock to HEAD to ignore non-deterministic + # digest changes that cause infinite generate→merge loops. + git checkout HEAD -- .speakeasy/workflow.lock 2>/dev/null || true if [ -n "$(git status --porcelain)" ]; then echo "has_changes=true" >> $GITHUB_OUTPUT else From 6f0ee099a401d274a05f2814e1be0ce1b4ed081a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2026 00:12:12 +0000 Subject: [PATCH 3/4] ci: add timezone comments to cron schedule Co-Authored-By: AJ Steers --- .github/workflows/generate-command.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generate-command.yml b/.github/workflows/generate-command.yml index 66da5cbd..efe26e0a 100644 --- a/.github/workflows/generate-command.yml +++ b/.github/workflows/generate-command.yml @@ -30,8 +30,8 @@ name: Generate SDK branches: - main schedule: - - cron: '0 12 * * *' - - cron: '0 0 * * *' + - cron: '0 12 * * *' # 5am Pacific (PDT; 6am PST) + - cron: '0 0 * * *' # 5pm Pacific (PDT; 6pm PST) workflow_dispatch: inputs: dry_run: From 2424c27e42365f15f075b2b0b744657966a20f30 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2026 00:15:58 +0000 Subject: [PATCH 4/4] ci: use IANA timezone field for cron schedule Co-Authored-By: AJ Steers --- .github/workflows/generate-command.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/generate-command.yml b/.github/workflows/generate-command.yml index efe26e0a..4f5d8d43 100644 --- a/.github/workflows/generate-command.yml +++ b/.github/workflows/generate-command.yml @@ -5,7 +5,7 @@ # # Triggers: # - On push to main: Auto-generates after every merge to ensure SDK stays up-to-date (auto-merge enabled) -# - Daily schedule (5 AM & 5 PM Pacific): Catches upstream API spec changes (auto-merge enabled) +# - Daily schedule (5 AM & 5 PM America/Los_Angeles): Catches upstream API spec changes (auto-merge enabled) # - Manual workflow_dispatch: For on-demand generation # - Slash command (/generate): Regenerates and pushes results back to the PR branch # - workflow_call: For validation from other workflows (e.g., PR checks) @@ -30,8 +30,10 @@ name: Generate SDK branches: - main schedule: - - cron: '0 12 * * *' # 5am Pacific (PDT; 6am PST) - - cron: '0 0 * * *' # 5pm Pacific (PDT; 6pm PST) + - cron: '0 5 * * *' + timezone: America/Los_Angeles + - cron: '0 17 * * *' + timezone: America/Los_Angeles workflow_dispatch: inputs: dry_run: