ci: opt this repo's docs build into the GPU upgrade pass (#885 part 2) - #946
Merged
Conversation
Phase F of the plan, the last piece: `CTActions/documentation.yml` (#71, merged) and CTBase's `AmbiguousDescription` fix this page relies on (#941, #945) are both in. This just wires the two new inputs and adds the concurrency group they require. - `gpu_runner: '["occidata"]'` -- opts into `build-gpu`. The existing GitHub-hosted `build` job is untouched and still deploys first, every time; `build-gpu` only runs once `build` has already published (`needs: build` in the reusable) and can never fail the workflow (`continue-on-error: true`) -- on success it redeploys with real GPU numbers, on failure or a long SLURM queue the already-published site is simply left as is. `build-gpu`'s own `if` restricts it to push/tag, so PR-preview docs builds are unaffected regardless. - `gpu_timeout_minutes: 90` -- real margin over the 2265s (~38 min) measured on a same-day build (Phase D probe, 2026-09-02), not the reusable's blanket 120 default, budgeting for the slower case right after occidata-runner-maintenance.yml's Monday cache purge. - `concurrency: { group: documentation-${{ github.ref }}, cancel-in-progress: true }` -- new, and load-bearing now that a GPU pass can run behind a push for up to 90 minutes: without it, two pushes to `main` in quick succession could let an older run's GPU pass finish (and redeploy) after a newer run's CPU build has already published, showing older content over newer. Tags carry distinct refs, so a release build is never cancelled by an unrelated push to `main`. Closes #885. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase F — the last piece of #885. Everything it depends on is merged: CTActions#71 (the reusable
build-gpujob), #941 + #945 (gpu.mdexecutable,CTBase0.30.4-beta).Full design and the feasibility probe behind it:
.reports/campaign/P-gpu-docs-executable.md.What this wires
gpu_runneropts this repo into the reusable'sbuild-gpujob. The existing GitHub-hostedbuildjob is untouched and still deploys first, every push and tag —build-gpuruns only oncebuildhas already published (needs: build) and, withcontinue-on-error: true, can never fail the workflow. On success it redeploys the same site with real GPU output; on failure, or ifoccidatais queued past its budget, the sitebuildalready published is simply left in place. Docs publishing is never on the critical path of a self-hosted box.build-gpu's ownifrestricts it topush/tag, so PR-preview builds are unaffected regardless of what's passed here.gpu_timeout_minutes: 90— real margin over the 2265s (~38 min) measured onoccidataduring the Phase D probe (2026-09-02), not the reusable's blanket 120 default. Budgets for the slower case right afteroccidata-runner-maintenance.yml's Monday 02:30 UTC cache purge, not the same-day warm case that was actually measured.New: a
concurrencygroupLoad-bearing now that a GPU pass can run behind a push for up to 90 minutes: without it, two pushes to
mainin quick succession could leave an older run's GPU pass finishing — and redeploying — after a newer run's CPU build has already published, showing older content over newer.cancel-in-progresscancels the whole older run, its queued or running GPU job included. Tags carry distinct refs (the tag name, notmain), so a release build is never cancelled by an unrelated push tomain, and vice versa.What this PR's own CI will and won't show
build-gpuonly fires onpush/tag, by design (see above) — so this PR's own preview build stays exactly as fast as every other docs PR today, and does not exercise the new job. The real test is the first push tomainafter merge, wherebuilddeploys as always andbuild-gpushould show up as a second job in the run graph, landing onoccidatabehind it.🤖 Generated with Claude Code