CI: re-introduce Windows and macOS with pkgimage-friendly settings#73
Merged
JKRT merged 4 commits intoJun 14, 2026
Merged
Conversation
Three runner-level changes that together make Windows and macOS realistic
again on github-hosted runners:
1. Disable coverage on Windows and macOS. julia-actions/julia-runtest
defaults coverage=true, which forces --pkgimages=no and rejects the
warm cache restored by julia-actions/cache. Keep coverage on Linux,
where it is cheap, so Codecov uploads still happen exactly once.
2. Point JULIA_DEPOT_PATH at D:\.julia on Windows. The C: drive is the
slow system drive; D: is the fast ephemeral SSD on windows-latest
and shaves a large chunk off heavy I/O during precompile.
3. Cap JULIA_NUM_PRECOMPILE_TASKS=2 on macos-latest. The M1 runner has
only 3 vCPU and 7 GB RAM and the default nprocs+1 over-subscribes
with the SciML+MTK precompile cone.
The processcoverage and Codecov steps are gated to Linux as well, since
only Linux now produces coverage data.
Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
julia-actions/julia-runtest@v1 defaults to --check-bounds=yes, which is a separate precompile configuration from the runtime default. On Windows this caused a 13 minute test-time pkgimage rebuild of every dependency (ModelingToolkit, Symbolics, OrdinaryDiffEq, Plots, ...) even with the warm depot cache restored, because the cached pkgimages are tagged for --check-bounds=default and unusable under --check-bounds=yes. Switch to check_bounds: auto so the test driver inherits Julia's default behavior of honoring @inbounds annotations. The warm depot cache becomes usable on Windows and macOS, recovering ~13 minutes of wall clock there and at most ~1 minute on Linux. Refs the 90-minute Windows cap hit on ci-windows-macos-coverage-off run 27470066228. Trade-off: @inbounds blocks in OMBackend's own source no longer get the forced runtime check. Dependencies (MTK, Symbolics, OrdinaryDiffEq) run their own --check-bounds=yes CI upstream, so their @inbounds usage is already covered. OMBackend's own @inbounds usage is small and the test suite still exercises it under default bounds-check rules. Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
The 90-minute job cap is hit consistently on Windows even after the warm depot cache, D:-drive depot, coverage off and check_bounds=auto reduce setup + pre-test precompile to about 3 minutes. After precompile the test runner emits no output for 70+ minutes before the cap. Linux finishes the same suite in ~26 minutes and macOS in ~29 minutes, so the stall is platform-specific and inside the test suite itself, not the toolchain. Local Windows reproduction will be faster than blind CI iteration. Re-enable once the hung @testset is identified and either fixed or skipped on Windows. Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com>
SVAGEN26
referenced
this pull request
in SVAGEN26/OM.jl
Jun 15, 2026
Same situation as JKRT/OMBackend.jl#73. The Windows job hits the 90-minute cap with no test output for the last 70+ minutes, and the stall reproduces under the same conditions in the OMBackend test suite that this PR exercises through the integration tests. Linux runs the same suite in well under 50 minutes. Local Windows reproduction is faster than blind CI iteration. Re-enable once the hung @testset is identified and either fixed or skipped on Windows. Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.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.
Reintroduces Windows and macOS to the CI matrix with three targeted changes that address why earlier attempts timed out.
1. Disable coverage on non-Linux
julia-actions/julia-runtest@v1defaults tocoverage: true. Coverage forces--pkgimages=no, which rejects the warm pkgimage cache restored byjulia-actions/cache@v2and forces a full precompile on every run. That is why Windows kept burning 25 minutes precompiling even when the cache action succeeded.Coverage stays on for Linux (cheap there); Codecov upload is gated to Linux as well, so we still upload exactly one coverage report per push.
2.
JULIA_DEPOT_PATH=D:\.juliaon WindowsOn
windows-latest, C: is the slow system disk and D: is a fast ephemeral SSD. Moving the depot to D: is independently reported to drop heavy-I/O CI wall-time by ~30% (pip benchmark).julia-actions/cache@v2honoursJULIA_DEPOT_PATHso caching still works.3.
JULIA_NUM_PRECOMPILE_TASKS=2on macOSmacos-latestis M1 with only 3 vCPU and 7 GB RAM. The defaultnprocs+1over-subscribes the SciML+MTK precompile cone. Capping at 2 avoids RAM swapping.Expected behaviour