feat: add auto-precompile input to the reusable test workflows - #125
Merged
ChrisRackauckas merged 1 commit intoAug 10, 2026
Conversation
A job that calls a reusable workflow with `uses:` may not carry an `env:` map, so a consumer cannot set JULIA_PKG_PRECOMPILE_AUTO at its call site -- adding one there makes the workflow file invalid and GitHub refuses to create any jobs for it at all. Expose it as an input instead: tests.yml sets it job-level (covering buildpkg's instantiate/build as well as the test run), and grouped-tests.yml / sublibrary-project-tests.yml forward it so both the root matrix and every sublibrary shard can opt out of Pkg's eager parallel precompilation. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This was referenced Aug 4, 2026
ChrisRackauckas
marked this pull request as ready for review
August 10, 2026 02:17
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.
Note
Draft — please ignore until reviewed by @ChrisRackauckas.
Problem
A job that calls a reusable workflow with
uses:may not carry anenv:map. GitHub's schema allows onlyname,uses,with,secrets,needs,if, andpermissionsthere. Addingenv:doesn't just get ignored — it makes the whole workflow file invalid, so GitHub creates zero jobs for it and reports a bare startup failure.That is exactly what happened in SciML/ModelingToolkit.jl#4867, which tried to set
JULIA_PKG_PRECOMPILE_AUTO: "0"at the call sites ofgrouped-tests.ymlandsublibrary-project-tests.yml:The result on that PR: no
Testsand noSublibrary CIchecks at all, just two runs listed by file path with no jobs ("This run likely failed because of a workflow file issue"). There is currently no supported way for a consumer to control this env var.Change
Expose it as an input instead.
tests.yml— new boolean inputauto-precompile(defaulttrue), applied as a job-levelenv:so it coversjulia-buildpkg's instantiate/build as well as thejulia-runteststep:grouped-tests.yml— same input, forwarded to the root-matrix test job.sublibrary-project-tests.yml— same input, forwarded from all four shard jobs.Default
trueis Pkg's normal behavior, so this is a no-op for every existing consumer. Settingauto-precompile: falsedefers compilation to load time in the test process, which is the escape hatch for dependency trees that OOM the 4vCPU/8GB runners during Pkg's eager parallel precompilation.Testing
Full suite passes. The new testset asserts the input exists on all three workflows, that
tests.ymlsets the env var abovesteps:(job-level, not step-level), and that all four shards forward it. Verified non-vacuous by deleting one shard's forward:Runic-clean on
test/runtests.jl.Follow-up
v1only moves when avX.Y.Zrelease tag is pushed (major-version-tag.yml), so consumers on@v1won't see this input until a release is cut. The ModelingToolkit side is being fixed in two steps: drop the invalidenv:blocks now to unblock CI, then passauto-precompile: falseoncev1carries this.Alternative considered
A generic
env-varsmultiline input piped into$GITHUB_ENVwould cover future vars without another PR here, but it's a broader surface for a narrow need. Happy to switch if you'd prefer that shape.🤖 Generated with Claude Code
https://claude.ai/code/session_0172My4BE5TgvJmuYxkBuvxU