Skip to content

COMP: Backport CI infrastructure (ccache, GHA cache, pixi CI tasks, Azure/macOS-arm caching) to release-5.4#6334

Open
hjmjohnson wants to merge 5 commits into
release-5.4from
ci-backport-rel54
Open

COMP: Backport CI infrastructure (ccache, GHA cache, pixi CI tasks, Azure/macOS-arm caching) to release-5.4#6334
hjmjohnson wants to merge 5 commits into
release-5.4from
ci-backport-rel54

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

Backport CI-infrastructure improvements from main to release-5.4: ccache support, GitHub Actions cache management, pixi *-ci tasks, and ccache caching for the Azure + macOS-arm pipelines. No toolchain/Python/OS/C++-standard version bumps — only caching/infrastructure. Draft: opened to run the pull_request CI (pixi / macOS-arm / Azure), which a branch push alone does not trigger.

Commits (one COMP: per category)
Commit Scope
ccache support + pixi CI tasks CMake/itkCCacheSupport.cmake (verbatim from main) + include(itkCCacheSupport) in CMakeLists.txt; pixi configure-ci/build-ci/test-ci/build-external-data-ci tasks; ccache>=4 dependency; regenerated pixi.lock. configure-ci sets CMAKE_{C,CXX}_COMPILER_LAUNCHER=ccache + ITK_USE_CCACHE=ON.
GHA cache management cleanup-pr-caches.yml, cleanup-stale-caches-nightly.yml, populate-externaldata-cache.yml + backported Utilities/Maintenance/PrefetchCIDContentLinks.py (was main-only; release-5.4 uses .cid content links).
pixi.yml Invoke the *-ci tasks + actions/cache for ccache (ccache-rel54-* keys) + CCACHE_* tuning env.
Azure pipelines CCACHE_* env + ccache install + Cache@2 with rel54-scoped keys across the 4 gcc/clang jobs (Linux, LinuxPython, MacOS, MacOSPython). Windows/MSVC untouched (matches main).
macOS-arm ccache wired into both macos-arm.yml jobs, mirroring main's arm.yml (rel54-scoped keys).
Local validation
  • pixi run build-ci (macOS-arm64): clean build, 5897/5897 targets, ccache 100% cacheable with hits climbing on warm runs.
  • configure-ci confirmed wiring LAUNCHER = ccache into build.ninja.
  • Every ccache-enabled CI path is Release/MinSizeRel (no -g) — no RelWithDebInfo+ccache interaction. Mirrors main's "Release not RelWithDebInfo" CI fix.
  • Lint checks on the branch push: clang-format linter ✅, Spell Checking ✅.
Notes for reviewers
  • pixi.lock diff is large but it is format churn, not dependency churn: regenerating with pixi 0.68.0 to add ccache bumped the lockfile format v5 → v7 (now matching main). The only real dependency added is ccache 4.13.6 across all 5 platforms.
  • configure-ci omits main's -DModule_* remote-module list — those modules are ingested on main and not present on release-5.4; including them would break configure.
  • Out of scope (deliberately not backported): Python 3.10 / ubuntu-24.04 / the LinuxLegacyRemovedDebugCxx20 rename + C++20 / de_DE.UTF-8 locale. The release-5.4 LinuxLegacyRemoved job stays MinSizeRel (already no -g, already ccache-friendly).

@github-actions github-actions Bot added type:Compiler Compiler support or related warnings type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots area:Python wrapping Python bindings for a class type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct labels May 25, 2026
@hjmjohnson hjmjohnson marked this pull request as ready for review May 25, 2026 17:50
@greptile-apps

This comment was marked as resolved.

Comment thread CMake/itkCCacheSupport.cmake Outdated
Comment thread .github/workflows/pixi.yml
@hjmjohnson hjmjohnson force-pushed the ci-backport-rel54 branch from a50c9c2 to ee3567e Compare May 25, 2026 22:53
Backport CMake/itkCCacheSupport.cmake and the configure-ci/build-ci/test-ci
pixi tasks so ITK_USE_CCACHE drives the compiler launchers on release-5.4.
Remote-module enables from main's configure-ci are omitted (not present on
release-5.4).
Add cleanup-pr-caches, cleanup-stale-caches-nightly, and
populate-externaldata-cache; triggers adapted to release* branches and
ExternalData pinned to 5.4.5.
Invoke configure-ci/build-ci/test-ci and add actions/cache for the ccache
directory (release-5.4-scoped key). Matrix and Python/OS versions unchanged.
Backport CCACHE_* env vars, ccache install, and Pipeline.Workspace cache to
the gcc/clang Azure jobs with release-5.4-scoped cache keys. No Python/OS/C++
standard changes.
Wire ccache into both macos-arm.yml jobs (install, actions/cache with
rel54-scoped keys, CMAKE_*_COMPILER_LAUNCHER=ccache in dashboard_cache),
mirroring main's arm.yml. Release config; no OS/Python/coverage changes.
@hjmjohnson hjmjohnson force-pushed the ci-backport-rel54 branch from ee3567e to 25dbd45 Compare May 26, 2026 01:06
@hjmjohnson hjmjohnson requested a review from thewtex May 26, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:Python wrapping Python bindings for a class type:Compiler Compiler support or related warnings type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant