Skip to content

Improve reuse of /compiled cache in CI #50667

Closed
@IanButterworth

Description

@IanButterworth

It would be nice to speed up julia CI startup time

Take GitHub julia CI, which typically

  • downloads any registries
  • downloads packages
  • downloads any artifacts
  • builds all packages
  • precompiles all packages with test args (--coverage and --check-bounds etc.)
  • runs tests

https://github.com/julia-actions/cache provides a way to cache useful parts of the depot between runs.

However two of the above are disabled by default:

I tried enabling caching of /compiled over at JuliaIO/PNGFiles.jl#66

However on the second run it hits re-precompilation for most of the packages because:

  1. pkgimages are disabled in the test environment due to coverage being on by default on julia-runtest
  2. We only ship julia with stdlib caches with pkgimages on (default and --check-bounds=yes)

i.e.

 Debug: Rejecting cache file /opt/hostedtoolcache/julia/1.9.2/x64/share/julia/compiled/v1.9/MbedTLS_jll/u5NEn_RmBmg.ji for  [top-level] since the flags are mismatched
│   current session: use_pkgimages = false, debug_level = 1, check_bounds = 1, inline = true, opt_level = 2
│   cache file:      use_pkgimages = true, debug_level = 1, check_bounds = 1, inline = true, opt_level = 2
└ @ Base loading.jl:2730

Two ways to improve this caching would be to

### Tasks
- [ ] https://github.com/JuliaLang/julia/issues/50918
- [ ] https://github.com/JuliaLang/julia/pull/49866
- [ ] https://github.com/JuliaLang/julia/pull/50666
- [ ] https://github.com/JuliaLang/julia/pull/52123
- [ ] https://github.com/julia-actions/cache/pull/71
- [ ] https://github.com/julia-actions/julia-runtest/issues/89
- [ ] https://github.com/julia-actions/julia-buildpkg/issues/40
- [ ] https://github.com/julia-actions/setup-julia/pull/196

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciContinuous integration

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions