Skip to content

Reference: external actions and CI tooling worth studying for our own design #115

Description

@mmcky

A standing collection of external GitHub Actions and CI tooling worth studying as we design our own action surface. Not a work item — a reading list. Add further finds as comments and they can be folded into this body.

xu-cheng/latex-action

Link: https://github.com/xu-cheng/latex-action — "GitHub Action to compile LaTeX documents". ~1.4k stars, actively maintained (last pushed 2026-06-25).

It compiles LaTeX inside a pinned TeX Live container, and it is the closest well-travelled analogue to what build-lectures does with builder: pdflatex. It was originally proposed for QuantEcon back in 2020 in QuantEcon/meta#16, which has now been closed in favour of build-lectures — but its input design is still the interesting part.

Four patterns in its interface worth comparing against ours:

Their pattern Why it is interesting for us
texlive_version and docker_image as first-class inputs Toolchain version pinning is exposed to the caller rather than baked into the action. Relevant to how containers/ and the Anaconda baseline are surfaced (#106).
pre_compile and post_compile hooks A general escape hatch instead of growing a new input for every scenario. Directly relevant to the extra-args passthrough question in #97.
continue_on_error An explicit, named decision about whether a failed build fails the job — worth contrasting with our --keep-going default and the CI-gate defect in QuantEcon/meta#340, where a broken build can still go green.
extra_system_packages and extra_fonts Layering extra dependencies at run time without rebuilding or forking the base image.

The contrast worth drawing: their action takes a document and a toolchain and is otherwise stateless, whereas ours carry environment setup, caching and publishing concerns as well. Where that extra scope is genuinely load-bearing it should stay — but their input surface is a good yardstick for which of our inputs are essential and which are accidental.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions