From 90e381d75863b2a2776d46eb7069a0435be8cd11 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 27 Jun 2026 03:48:54 +0000 Subject: [PATCH 1/4] ci(mcp): trigger cloud-mcp deploy after PyPI publish After publishing to PyPI, wait 2 minutes for package availability then dispatch the cloud-mcp deploy workflow on airbyte-ops-mcp via repository_dispatch. This keeps the hosted Cloud MCP server in sync with each PyAirbyte release. Co-Authored-By: AJ Steers --- .github/workflows/pypi_publish.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml index a32cbc5df..0fdc6d2af 100644 --- a/.github/workflows/pypi_publish.yml +++ b/.github/workflows/pypi_publish.yml @@ -79,3 +79,20 @@ jobs: - name: Publish to PyPI if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') uses: pypa/gh-action-pypi-publish@v1.13.0 + + deploy_cloud_mcp: + name: Deploy Cloud MCP + needs: publish_to_pypi + if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') + runs-on: ubuntu-latest + steps: + - name: Wait for PyPI availability + run: sleep 120 + + - name: Trigger cloud-mcp deploy + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.GITHUB_CI_WORKFLOW_TRIGGER_PAT }} + repository: airbytehq/airbyte-ops-mcp + event-type: deploy-cloud-mcp + client-payload: '{"mcp-server": "cloud-mcp"}' From 2fabc844606a4cd0b2f08b19faa482c50323ecce Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 27 Jun 2026 03:53:10 +0000 Subject: [PATCH 2/4] ci: lock down deploy_cloud_mcp job permissions Co-Authored-By: AJ Steers --- .github/workflows/pypi_publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml index 0fdc6d2af..c8a6ba8b0 100644 --- a/.github/workflows/pypi_publish.yml +++ b/.github/workflows/pypi_publish.yml @@ -85,6 +85,7 @@ jobs: needs: publish_to_pypi if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') runs-on: ubuntu-latest + permissions: {} steps: - name: Wait for PyPI availability run: sleep 120 From 8c3e7b7fdc4aafc667e6982b17bfad007ead5441 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 27 Jun 2026 04:13:35 +0000 Subject: [PATCH 3/4] ci: pin peter-evans/repository-dispatch to SHA Co-Authored-By: AJ Steers --- .github/workflows/pypi_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml index c8a6ba8b0..60e098845 100644 --- a/.github/workflows/pypi_publish.yml +++ b/.github/workflows/pypi_publish.yml @@ -91,7 +91,7 @@ jobs: run: sleep 120 - name: Trigger cloud-mcp deploy - uses: peter-evans/repository-dispatch@v3 + uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3 with: token: ${{ secrets.GITHUB_CI_WORKFLOW_TRIGGER_PAT }} repository: airbytehq/airbyte-ops-mcp From bb0a5fba19e00f2c5f12318477725b72054df2ff Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 16:15:37 +0000 Subject: [PATCH 4/4] ci(mcp): deploy prereleases to cloud-mcp-preview, stable to production Split deploy_cloud_mcp into two jobs: - deploy_cloud_mcp: fires on release events, deploys to production - deploy_cloud_mcp_preview: fires on workflow_dispatch prereleases, sends preview=true in client_payload to deploy to cloud-mcp-preview Co-Authored-By: AJ Steers --- .github/workflows/pypi_publish.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml index 60e098845..0300d5d77 100644 --- a/.github/workflows/pypi_publish.yml +++ b/.github/workflows/pypi_publish.yml @@ -83,17 +83,35 @@ jobs: deploy_cloud_mcp: name: Deploy Cloud MCP needs: publish_to_pypi - if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') + if: github.event_name == 'release' runs-on: ubuntu-latest permissions: {} steps: - name: Wait for PyPI availability run: sleep 120 - - name: Trigger cloud-mcp deploy + - name: Trigger cloud-mcp production deploy uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3 with: token: ${{ secrets.GITHUB_CI_WORKFLOW_TRIGGER_PAT }} repository: airbytehq/airbyte-ops-mcp event-type: deploy-cloud-mcp client-payload: '{"mcp-server": "cloud-mcp"}' + + deploy_cloud_mcp_preview: + name: Deploy Cloud MCP (Preview) + needs: publish_to_pypi + if: github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true' + runs-on: ubuntu-latest + permissions: {} + steps: + - name: Wait for PyPI availability + run: sleep 120 + + - name: Trigger cloud-mcp preview deploy + uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3 + with: + token: ${{ secrets.GITHUB_CI_WORKFLOW_TRIGGER_PAT }} + repository: airbytehq/airbyte-ops-mcp + event-type: deploy-cloud-mcp + client-payload: '{"mcp-server": "cloud-mcp", "preview": "true"}'