Add a docs-build CI job#3252
Merged
Merged
Conversation
brendancol
commented
Jun 12, 2026
brendancol
left a comment
Contributor
Author
There was a problem hiding this comment.
PR Review: Add a docs-build CI job
Blockers
None.
Suggestions
- .github/workflows/docs.yml: the job has no
timeout-minutes.continue-on-error: truekeeps a linkcheck failure from gating, but a hung external link check still occupies the runner until the default 6-hour job timeout. A cap around 30 minutes covers a full build (RTD finishes in well under that) and bounds the damage.
Nits
None.
What looks good
- Action versions match test.yml (checkout@v4, setup-python@v5), and the install step mirrors .readthedocs.yml's
pip install '.[doc,tests]'exactly, so CI and RTD build from the same dependency set. - The paths filter includes the workflow file itself, which is why this check ran on this very PR.
- Job id
docs-buildavoids the duplicate-check-name dedup problem already seen between the pytest workflows. - apt pandoc install is needed: the
pandocpip package in the doc extra does not provide the binary.
Checklist
- Correctness/backend/test items: not applicable (CI config only)
- Verified the workflow triggers and the YAML parses
brendancol
commented
Jun 12, 2026
brendancol
left a comment
Contributor
Author
There was a problem hiding this comment.
Follow-up to the review: added timeout-minutes: 30 to the docs-build job so a stalled linkcheck can't hold a runner for the default 6-hour timeout. No other findings to address.
Contributor
Author
|
Measured the first two runs: ~26-27 minutes each (HTML build ~11, linkcheck ~14), which left under 3 minutes of headroom against the 30-minute cap. Raised it to 45. |
…ly cron (#3249) The PR job spent ~10 of its 18 minutes on linkcheck, whose failures were masked by continue-on-error, and ~8 on a serial HTML build whose read phase is dominated by plot-directive examples (sample data load plus numba compile per reference page). - build with -j auto; every extension in conf.py declares parallel_read_safe - run linkcheck on a weekly cron and workflow_dispatch instead of on PRs, without continue-on-error so broken links surface - drop the job timeout from 45 to 15 minutes to match
3 tasks
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.
Refs #3249 (part 2 of 6).
Sphinx currently only runs on Read the Docs, so a PR that breaks the docs build isn't caught until after merge. This adds a
docsworkflow that runs on PRs touchingdocs/**,README.md,setup.cfg, or.readthedocs.yml:.[doc,tests]on Python 3.12, mirroring the RTD pre_build step so the two can't driftpandocpip package doesn't ship it)sphinx-build -b html -j auto, gating on errors only (no-W; the tree has a handful of pre-existing notebook/reference warnings). The read phase is dominated by plot-directive examples in the reference docstrings (sample data load + numba compile per page); every extension in conf.py declares parallel_read_safe, so -j auto cuts the build from ~8 minutes to ~3.5.The job id is
docs-build, distinct from the pytest workflow'srunjob, to avoid the check-name dedup problem that hides failures.Test plan:
docs-buildpasses on this PR in 4m51s (was 18m48s)linkcheckis skipped on pull_request events