MAINT: consolidate GPU workflow config, bump download-artifact to v21 - #54
Merged
Conversation
Lands three overlapping PRs as one commit, since #51, #52 and #53 all rewrite the same few lines of ci.yml and collab.yml and conflict pairwise. - runs-on: disk=large -> volume=80gb (the v3 label rename), and spot=false on all four GPU workflows. Final state now matches lecture-jax and lecture-python.myst byte for byte, allowing for collab.yml's different image (ubuntu24-gpu-x64). - Explicit job-level permissions on ci.yml and collab.yml, and a top-level block on publish.yml, so the default workflow token can drop to read. Both ci.yml and collab.yml gain `actions: read` alongside the permissions block from #53, which declared it only on publish.yml. It is not currently load-bearing -- lecture-jax runs dawidd6/action-download-artifact green with contents+pull-requests alone, because public-repo tokens can read Actions data regardless -- but declaring it keeps the three files consistent and removes the reliance on that behaviour. Replaces #51, #52 and #53. Part of the rollout tracked in QuantEcon/meta#330, with the permissions work from QuantEcon/meta#347. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Brings all four call sites (ci, collab, linkcheck, publish) onto a single version. collab.yml was still on v3 while the rest were on v9. v21 over dependabot's v14 (#50): it has roughly three months of soak rather than one day, runs on node24 so it clears the Node 20 deprecation warning that v14 keeps, and matches what lecture-jax already runs green. The input surface this repo uses -- workflow, branch, name, path -- is unchanged across v3, v9, v14 and v21. One behaviour change is worth recording: allow_forks defaulted true in v3 and false from v9 onward, so collab.yml's behaviour does change. It is inert here because the step pins branch: main against an upstream workflow, so the runs being searched are never fork runs. Replaces #50, which dependabot will not update itself -- it has opened nothing in this repo since 2026-02-02. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ci.yml's PDF build was the only `jb build` in the file without -n, while publish.yml:53 runs the same pdflatex build with -n -W. That gap let a nitpick-class error -- a bad cross-reference, unknown role or missing citation in the PDF path -- pass the PR check and then fail the tag-only publish build, where it is far more expensive to discover. Salvaged from #25, which is otherwise superseded by 230e90c. The rest of that PR is not carried forward: its bayes_nonconj.md edit is already on main in better form, and its _build upload step lacks the `if: failure()` guard its three siblings have. Note cache.yml:36 still builds HTML without -n. Left alone deliberately -- that workflow is currently failing and tightening it is a separate change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
✅ Deploy Preview for timely-seahorse-68815c ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This was referenced Aug 5, 2026
There was a problem hiding this comment.
Pull request overview
This PR consolidates several workflow maintenance changes to standardize GPU runner configuration, tighten GitHub Actions token permissions, and modernize artifact download usage across the repository’s CI workflows.
Changes:
- Standardize GPU
runs-onlabels across workflows (volume=80gb+spot=false). - Add explicit
permissions:blocks (workflow/job level) to support lowering defaultGITHUB_TOKENpermissions. - Bump
dawidd6/action-download-artifactcall sites to@v21and add-nto theci.ymlPDF build.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/publish.yml | Adds workflow-level permissions, updates GPU runner label, and bumps artifact download action to v21. |
| .github/workflows/linkcheck.yml | Bumps artifact download action to v21 (permissions likely need tightening too). |
| .github/workflows/collab.yml | Updates GPU runner label, adds job permissions, and bumps artifact download action to v21. |
| .github/workflows/ci.yml | Updates GPU runner label, adds job permissions, bumps artifact download action to v21, and makes PDF build nitpicky (-n). |
| .github/workflows/cache.yml | Updates GPU runner label for the cache workflow. |
Suppressed comments (1)
.github/workflows/cache.yml:13
actions/checkoutis pinned togithub.event.pull_request.head.sha, but this workflow only runs onscheduleandworkflow_dispatch(nopull_requestpayload). On those events the expression resolves to empty/undefined and can cause checkout to fail or fetch the wrong ref. Prefer default checkout behavior (or usegithub.sha) for scheduled/manual runs.
runs-on: "runs-on=${{ github.run_id }}/family=g4dn.2xlarge/image=quantecon_ubuntu2404/volume=80gb/spot=false"
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
29
to
33
| - name: Download "build" folder (cache) | ||
| uses: dawidd6/action-download-artifact@v9 | ||
| uses: dawidd6/action-download-artifact@v21 | ||
| with: | ||
| workflow: cache.yml | ||
| branch: main |
This was referenced Aug 5, 2026
mmcky
added a commit
that referenced
this pull request
Aug 6, 2026
#55) Completes the hardening #54 landed for ci, collab and publish: the dawidd6 cache download works today via public-repo API leniency, but granting actions: read explicitly matches the documented requirement and the blocks the other workflows now carry. Raised by Copilot on the superseded #53. Co-authored-by: Claude Fable 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.
Consolidates five open PRs into three commits. #51, #52 and #53 all rewrite the same few lines of
ci.ymlandcollab.ymland conflict pairwise, so landing them separately would have needed two careful conflict resolutions where a careless "take theirs" silently dropsspot=false. Doing it in one commit resolves that region once.What changes
runs-on:disk=large→volume=80gb, plusspot=false, on all four GPU workflowspermissions:blocks so the default token can drop to readdawidd6/action-download-artifact→@v21at all four call sites-nadded to theci.ymlPDF buildThe four
runs-onstrings now matchlecture-jaxandlecture-python.mystbyte for byte, allowing forcollab.yml's different image (ubuntu24-gpu-x64).Notes on the judgement calls
actions: readon ci.yml and collab.yml. #53 declared this only onpublish.yml, though all three rundawidd6/action-download-artifact. It turns out not to be load-bearing:lecture-jax'sci.ymlruns that action green withcontents: readandpull-requests: writealone, because public-repo tokens can read Actions data without the explicit scope. Added anyway — it is strictly additive, keeps the three files consistent, and removes the reliance on that behaviour.v21 rather than dependabot's v14. v21 has roughly three months of soak against v14's one day, runs on
node24so it clears the Node 20 deprecation warning that v14 keeps, and is whatlecture-jaxalready runs. The input surface this repo uses —workflow,branch,name,path— is unchanged across v3, v9, v14 and v21. One real behaviour change:allow_forksdefaultedtruein v3 andfalsefrom v9 on, socollab.ymldoes change. It is inert here because the step pinsbranch: mainagainst an upstream workflow, so the runs being searched are never fork runs.The
-nflag.ci.yml's PDF build was the onlyjb buildin that file without-n, whilepublish.ymlruns the same pdflatex build with-n -W. That gap let a bad cross-reference or missing citation pass the PR check and then fail the tag-only publish build.cache.ymlalso builds HTML without-n; left alone deliberately, since that workflow is currently failing and tightening it is a separate change.What this does not fix
CI stays red. Both repo-wide breakages are untouched by this PR and are being handled separately: the stale PyTorch nightly index in
ci.yml's install step, andcache.ymlbeing both auto-disabled for inactivity and failing during notebook execution, so thebuild-cacheartifact every other workflow downloads has never existed.Part of the rollout tracked in QuantEcon/meta#330, with the permissions work from QuantEcon/meta#347.
🤖 Generated with Claude Code