Skip to content

ci: forward the /prerelease build source SHA to the Cloud MCP preview deploy - #1468

Merged
Aaron ("AJ") Steers (aaronsteers) merged 1 commit into
release-candidate/v1from
devin/1794513088-prerelease-build-sha
Nov 12, 2026
Merged

Aaron ("AJ") Steers (aaronsteers) merged 1 commit into
release-candidate/v1from
devin/1794513088-prerelease-build-sha

Conversation

@aaronsteers

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Overview

👉 TL;DR: /prerelease dev builds now tell the Cloud MCP preview deploy exactly which commit they were built from, so the deploy can install that commit's locked dependencies instead of resolving them. Dev wheels have no release lock file to download, so without this the preview deploy would have no lock to install.

Specifically, pypi_publish.yml records git rev-parse HEAD of the git_ref checkout, and deploy_cloud_mcp.yml takes a new pyairbyte-source-sha input and adds it to the preview repository_dispatch payload as cloud-mcp-pyairbyte-source-sha.

Pairs with:

Changes

  • pypi_publish.yml: new Resolve build source SHA step after the workflow_dispatch checkout, exposed as the publish_to_pypi job output source_sha and passed to deploy_cloud_mcp.yml. It is the commit git_ref resolved to, not GITHUB_SHA, which for this dispatch is main (the workflow runs from main for trusted publishing).
  • deploy_cloud_mcp.yml: new optional workflow_call input pyairbyte-source-sha. For trigger-type=pr-prerelease it must be a 40-character lowercase hex SHA or the run fails; for every other trigger type it is ignored.
  • The internal cloud-mcp-preview payload carries cloud-mcp-pyairbyte-source-sha only when a SHA was resolved. The cloud-mcp-pyairbyte-requirement stays airbyte==<dev version>, so the published wheel is still what gets installed. The internal cloud-mcp and production payloads are unchanged.

Contract with airbyte-ops-mcp

The Ops deploy exports uv export --locked --format pylock.toml --no-dev --no-emit-project --extra datadog from that SHA, installs it, then installs the pinned dev wheel with --no-deps. It accepts the SHA only for previews with a .devN pin; release pins still need the release's published pylock.toml.

Risks

  • Merge this before https://github.com/airbytehq/airbyte-ops-mcp/pull/1644. Merging it first is backward compatible, because the current Ops workflow ignores payload keys it doesn't know. If the Ops PR merges first, /prerelease preview deploys fail closed on the missing SHA until this PR lands.

Test plan

  • actionlint on both workflows.
  • Ran the extracted Resolve Variables script locally: pr-prerelease with a full SHA outputs it; an empty or malformed SHA fails with the error; rc-release outputs an empty source_sha even if a SHA is passed.
  • Ran the payload step locally: with a SHA the preview payload includes cloud-mcp-pyairbyte-source-sha; without one, both payloads are byte-identical to today's.
  • Not yet run end to end: that needs a /prerelease on a PR after this merges.

Requested by Aaron ("AJ") Steers (@aaronsteers).

Link to Devin session: https://app.devin.ai/sessions/6e2ae2a988f74dd9af69b2e8eaadd141
Link to Bot: https://app.devin.ai/org/airbytehq/bots/9b3f0480dd6148c9aba17702f8349056
Open in Devin Desktop: https://app.devin.ai/desktop/session/6e2ae2a988f74dd9af69b2e8eaadd141?variant=devin


MCP Guru Devin - By AJ

MCP Guru Devin - By AJ opened this PR for AJ

Implemented in Pin Cloud MCP image to release pylock.toml · Review with Devin


… deploy

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@github-actions

Copy link
Copy Markdown

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

Testing This PyAirbyte Version

You can test this version of PyAirbyte using the following:

# Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1794513088-prerelease-build-sha' pyairbyte --help

# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1794513088-prerelease-build-sha'

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /fix-pr - Fixes most formatting and linting issues
  • /uv-lock - Updates uv.lock file
  • /test-pr - Runs tests with the updated PyAirbyte
  • /prerelease - Builds and publishes a prerelease version to PyPI
  • /evals - Runs the Cloud MCP evals that use the MCP tools this PR changed (/evals full=true runs the full suite)
📚 Show Repo Guidance

Helpful Resources

Community Support

Questions? Join the #pyairbyte channel in our Slack workspace.

📝 Edit this welcome message.

@github-code-quality

github-code-quality Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Code coverage overview

Languages: Python

Python / code-coverage/pytest-no-creds

release-candidate/v1 d9f652f devin/1794513088-pre... 2e530b1 +/-
65% 81% +16%
View coverage of the 10 most impacted files.
File release-candidate/v1 d9f652f devin/1794513088-pre... 2e530b1 +/-
airbyte/_util/api_util.py 36% 68% +32%
airbyte/mcp/cloud.py 52% 87% +35%
airbyte/cloud/connectors.py 34% 81% +47%
airbyte/cloud/connections.py 26% 76% +50%
airbyte/mcp/_datadog.py 0% 50% +50%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/cloud/c...lder/project.py 0% 94% +94%
airbyte/_direct...ctors/models.py 0% 95% +95%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 96% +96%

Python / code-coverage/pytest

release-candidate/v1 d9f652f devin/1794513088-pre... 2e530b1 +/-
71% 83% +12%
View coverage of the 10 most impacted files.
File release-candidate/v1 d9f652f devin/1794513088-pre... 2e530b1 +/-
airbyte/cloud/connectors.py 51% 84% +33%
airbyte/mcp/cloud.py 52% 87% +35%
airbyte/cloud/connections.py 34% 78% +44%
airbyte/mcp/_datadog.py 0% 50% +50%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/cloud/c...lder/project.py 0% 94% +94%
airbyte/_direct...ctors/models.py 0% 95% +95%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 96% +96%
airbyte/mcp/int...nc_status_ui.py 0% 97% +97%

Python / code-coverage/pytest-unit

release-candidate/v1 devin/1794513088-pre... 2e530b1 +/-
— 78% —

Line coverage data for the release-candidate/v1 branch is not yet available.

View coverage of the 10 most covered files.
File release-candidate/v1 devin/1794513088-pre... 2e530b1 +/-
airbyte/mcp/_sso_auth.py — 96% —
airbyte/cloud/models.py — 96% —
airbyte/_direct...ctors/models.py — 95% —
airbyte/cloud/client.py — 91% —
airbyte/mcp/cloud.py — 87% —
airbyte/cloud/connectors.py — 81% —
airbyte/progress.py — 80% —
airbyte/cloud/connections.py — 76% —
airbyte/_util/api_util.py — 68% —
airbyte/shared/...ql_processor.py — 68% —

ℹ️ Calculations represent line coverage. Results may change as calculations are updated.


Updated November 12, 2026 20:04 UTC

@aaronsteers
Aaron ("AJ") Steers (aaronsteers) marked this pull request as ready for review November 12, 2026 20:18
Copilot AI balanced review requested due to automatic review settings November 12, 2026 20:18
@aaronsteers
Aaron ("AJ") Steers (aaronsteers) merged commit 08c407e into release-candidate/v1 Nov 12, 2026
36 checks passed
@aaronsteers
Aaron ("AJ") Steers (aaronsteers) deleted the devin/1794513088-prerelease-build-sha branch November 12, 2026 20:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The downstream PR was unavailable (404) and end-to-end deployment is untested, requiring human confirmation of SHA/lock compatibility and coordinated merge and rollout order.

No open issues 🎉

What changed in this PR

This PR forwards the exact source commit of /prerelease builds to the Cloud MCP preview deployment, allowing it to use that commit’s locked dependencies while installing the published dev wheel.

Changes:

  • Capture the checked-out build SHA and pass it to the reusable deployment workflow.
  • Require a full lowercase commit SHA for prerelease deployments and include it only in preview dispatch payloads.
  • Display the lock source SHA in the deployment summary, leaving release and production payloads unchanged.
File Description
.github/​workflows/​pypi_publish.yml Capture the build source SHA and forward it to the deployment workflow.
.github/​workflows/​deploy_cloud_mcp.yml Validate the prerelease SHA, include it in preview payloads, and report it in the summary.

Review effort: Balanced

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@devin-ai-integration

Copy link
Copy Markdown
Contributor

Devin Review

🟢 Devin Review found nothing to fix · View findings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants