Migrate the five native lecture CI pipelines to quantecon/actions/build-lectures

Open
#348 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Quiet
Tech stack
github-actions, jupyter

Research direction

Start with the lecture-jax ci.yml and the existing build-lectures action used by lecture-dp, then review QuantEcon/actions#97 and #98 before migrating. Compare lecture-jax's built output with its native build, then apply the same migration to the remaining four native pipelines and remove their redundant patches from #340 as each lands.

Written by the indexing model from the issue text.

Description

maintenance

Five lecture repos hand-roll their Jupyter Book build steps in ci.yml. lecture-dp does not — it calls quantecon/actions/build-lectures. This issue tracks moving the rest across.

Why

The immediate motivation is #340. That issue found that a broken notebook could pass CI green in most repos, for two reasons: the execution step lacked -W, and its exit code came from a trailing cp rather than from jb build — because shell: bash -l {0} is a custom shell spec, so GitHub does not inject -eo pipefail.

The composite action is structurally immune to that second failure. Its build step captures the exit code explicitly and exits with it:

set +e
jb build "$SOURCE_DIR" --path-output "$OUTPUT_DIR" "${builder_args[@]}" $EXTRA_ARGS
BUILD_EXIT_CODE=$?
set -e
# ... set outputs ...
exit $BUILD_EXIT_CODE

It also moves PDF and notebook staging into separate steps that run before the build, so there is no trailing command to mask anything, and it defaults extra-args to -W --keep-going.

#340 is being closed with per-repo patches, which is the right immediate move — the gate was open and five one-to-two-line changes close it. But those patches each carry a comment explaining a bash gotcha that the action makes irrelevant, and they leave five copies of build logic to keep in sync. Migration is the durable answer.

Scope

Repo Current shape First jb build
lecture-python-intro native Build PDF from LaTeX
lecture-python-advanced.myst native Build PDF from LaTeX
lecture-python.myst native Build Download Notebooks (sphinx-tojupyter)
lecture-python-programming native Build Download Notebooks (sphinx-tojupyter)
lecture-jax native Build Download Notebooks (sphinx-tojupyter)
lecture-dp already migratedbuild-lectures@v0.8.0 n/a

The three zh-cn editions and lecture-datascience.myst are also native but already gate correctly; they should follow eventually for consistency, not urgency.

Known blockers

The v0.8.0 validation study already compared the composite against the native intro and programming pipelines and found two gaps. Both should be resolved before migrating those two repos, or the migration silently loses build strictness:

  • QuantEcon/actions#97build-lectures defaults extra-args to -W --keep-going without -n, which the native intro and programming builds pass. Cross-reference warnings that fail a native build would pass silently on the composite. Compounding it, build-jupyter-cache invokes build-lectures with a fixed with: block and no extra-args passthrough, so a consumer cannot get -n into that HTML build at all.
  • QuantEcon/actions#98 — the native intro and programming pipelines run rm -r _build/.doctrees before the final HTML build to fix ipywidget mimetype rendering. The composite has no equivalent.

Suggested sequence

  1. Resolve QuantEcon/actions#97 and #98.
  2. Migrate one repo as a pilot and compare its built output against the native build — not just a green tick. lecture-jax is a reasonable candidate: smallest of the five at 33 lectures, and its first jb build is the tojupyter step, so it exercises the notebook-staging path.
  3. Migrate the remaining four, and drop the per-repo set -eo pipefail patches from #340 as each lands, since the action makes them redundant.
  4. Consider the zh-cn editions and lecture-datascience.myst afterwards.

Related

  • #340 — the tactical gate fix this supersedes
  • #266 — mono repo vs centralised GitHub Actions; this is the centralised-actions direction in practice
Dominant language
No language data
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from QuantEcon/meta

All issues in QuantEcon/meta

Similar issues

More Build System issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.