Repository navigation
ci(docs): publish release-candidate/v1 docs under /rc/ - #1429
Conversation
Co-Authored-By: AJ Steers <aj@airbyte.io>
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksTesting This PyAirbyte VersionYou 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/1793142384-rc-docs-publish' pyairbyte --help
# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1793142384-rc-docs-publish'PR Slash CommandsAirbyte Maintainers can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful ResourcesCommunity SupportQuestions? Join the #pyairbyte channel in our Slack workspace. |
Code coverage overviewLanguages: Python Python / code-coverage/pytest-no-creds
View coverage of the 10 most impacted files.
Python / code-coverage/pytest
View coverage of the 10 most impacted files.
Python / code-coverage/pytest-unit
Line coverage data for the main branch is not yet available. View coverage of the 10 most covered files.
ℹ️ Calculations represent line coverage. Results may change as calculations are updated. Updated |
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the workflow changes that publish release-candidate documentation alongside stable docs.
No open issues 🎉
What changed in this PR
Publishes release-candidate documentation under /rc/ alongside stable PyAirbyte docs, making RC-only APIs and MCP tools browsable before they reach main.
Changes:
- Builds both branches and combines their documentation into one Pages artifact.
- Allows stable docs to publish if RC dependency installation or documentation generation fails.
- Dispatches RC-triggered updates to
mainto respect the Pages deployment restriction.
| File | Description |
|---|---|
.github/workflows/pydoc_publish.yml |
Adds dual-branch docs builds, conditional /rc/ inclusion, and RC-to-main publish dispatch. |
Review effort: Balanced
Summary
Publishes the
release-candidate/v1docs alongside themaindocs, athttps://airbytehq.github.io/PyAirbyte/rc/. This makes MCP tools that only exist on the RC branch browsable before the RC merges, such as the insiders-only Connector Builder tools (#1407). Todayairbyte/mcp/connector_builder.htmlreturns 404 on the live site because Publish Docs only buildsmain.Changes
pydoc_publish.ymlchecks outmain(at the triggering SHA) andrelease-candidate/v1side by side, builds both withpoe docs-generate, and uploads one Pages artifact:mainat the root, RC under/rc/.continue-on-error, so a broken RC docs build can't block themaindocs from publishing. The/rc/copy step runs only when the RC build succeeds.release-candidate/v1. Thegithub-pagesenvironment only allows deployments frommain, so on an RC push the newdispatch_from_rcjob runsgh workflow run pydoc_publish.yml --ref maininstead of deploying.GITHUB_TOKENis allowed to fireworkflow_dispatch, and that job getsactions: write.publish_docsis now gated torefs/heads/mainand has a jobname:.Notes
main→ RC sync. RC pushes start dispatching only after that sync lands./rc/pages have no "pre-release" banner and no link from the stable docs. That could be a follow-up if wanted.Test plan
actionlint .github/workflows/pydoc_publish.ymlpasses.uv run poe docs-generatelocally onrelease-candidate/v1. The output includesairbyte/mcp/connector_builder.htmlwith all 10 builder tools, each labelled "experimental, insiders only". The generated HTML has no root-absolutehref="/..."links, so it works when served under/rc/.https://airbytehq.github.io/PyAirbyte/rc/airbyte/mcp/connector_builder.html.Link to Devin session: https://app.devin.ai/sessions/4a494a658fcc4210892ae2c59065bc99
Open in Devin Desktop: https://app.devin.ai/desktop/session/4a494a658fcc4210892ae2c59065bc99?variant=devin
Requested by: Aaron ("AJ") Steers (@aaronsteers)