Merge pull request #6262 from dzenanz/updatePixiAction #1634
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
| name: ITK.Arm64 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - 'release*' | |
| paths-ignore: | |
| - '*.md' | |
| - LICENSE | |
| - NOTICE | |
| - 'Documentation/**' | |
| - 'Utilities/Debugger/**' | |
| - 'Utilities/ITKv5Preparation/**' | |
| - 'Utilities/Maintenance/**' | |
| - 'Modules/Remote/*.remote.cmake' | |
| pull_request: | |
| paths-ignore: | |
| - '*.md' | |
| - LICENSE | |
| - NOTICE | |
| - 'Documentation/**' | |
| - 'Utilities/Debugger/**' | |
| - 'Utilities/ITKv5Preparation/**' | |
| - 'Utilities/Maintenance/**' | |
| - 'Modules/Remote/*.remote.cmake' | |
| concurrency: | |
| group: '${{ github.workflow }}@${{ github.head_ref || github.ref }}' | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| CMakeVersion: "4.0.1" | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 600 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04-arm | |
| name: "Ubuntu-24.04-arm" | |
| cmake-build-type: "Release" | |
| cmake-generator: "Ninja" | |
| python-version: "" | |
| parallel-level: 4 | |
| ctest-cache: | | |
| BUILD_SHARED_LIBS:BOOL=OFF | |
| BUILD_EXAMPLES:BOOL=OFF | |
| ITK_WRAP_PYTHON:BOOL=OFF | |
| ITK_USE_CLANG_FORMAT:BOOL=OFF | |
| ITK_COMPUTER_MEMORY_SIZE:STRING=11 | |
| ctest-options: "" | |
| - os: macos-15 | |
| name: "x86_64-rosetta" | |
| cmake-build-type: "Release" | |
| cmake-generator: "Ninja" | |
| python-version: "" | |
| parallel-level: 3 | |
| ctest-cache: | | |
| BUILD_SHARED_LIBS:BOOL=OFF | |
| BUILD_EXAMPLES:BOOL=OFF | |
| ITK_WRAP_PYTHON:BOOL=OFF | |
| ITK_USE_CLANG_FORMAT:BOOL=OFF | |
| CMAKE_OSX_ARCHITECTURES:STRING=x86_64 | |
| ITK_COMPUTER_MEMORY_SIZE:STRING=11 | |
| ctest-options: "" | |
| - os: macos-15 | |
| name: "Python" | |
| cmake-build-type: "Release" | |
| cmake-generator: "Ninja" | |
| python-version: "3.11" | |
| parallel-level: 3 | |
| ctest-cache: | | |
| BUILD_SHARED_LIBS:BOOL=OFF | |
| BUILD_EXAMPLES:BOOL=OFF | |
| ITK_WRAP_PYTHON:BOOL=ON | |
| ITK_USE_CLANG_FORMAT:BOOL=OFF | |
| ITK_COMPUTER_MEMORY_SIZE:STRING=11 | |
| ctest-options: "-E itkPyBufferMemoryLeakTest" | |
| name: ARMBUILD-${{ matrix.name }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 5 | |
| clean: true | |
| - name: Install ccache | |
| shell: bash | |
| run: | | |
| echo "CCACHE_BASEDIR=${GITHUB_WORKSPACE}" >> "$GITHUB_ENV" | |
| echo "CCACHE_COMPILERCHECK=content" >> "$GITHUB_ENV" | |
| echo "CCACHE_NOHASHDIR=true" >> "$GITHUB_ENV" | |
| echo "CCACHE_SLOPPINESS=pch_defines,time_macros" >> "$GITHUB_ENV" | |
| echo "CCACHE_DIR=${{ runner.temp }}/ccache" >> "$GITHUB_ENV" | |
| echo "CCACHE_MAXSIZE=5G" >> "$GITHUB_ENV" | |
| if [ "$RUNNER_OS" == "Linux" ]; then | |
| sudo apt-get update -qq && sudo apt-get install -y ccache locales | |
| sudo locale-gen de_DE.UTF-8 | |
| elif [ "$RUNNER_OS" == "macOS" ]; then | |
| brew install ccache | |
| fi | |
| - name: Restore compiler cache | |
| id: restore-ccache | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ${{ runner.temp }}/ccache | |
| key: ccache-v4-${{ runner.os }}-${{ matrix.name }}-${{ github.sha }} | |
| restore-keys: | | |
| ccache-v4-${{ runner.os }}-${{ matrix.name }}- | |
| - name: Restore ExternalData object store | |
| id: restore-externaldata | |
| uses: actions/cache/restore@v5 | |
| with: | |
| # ExternalData blobs are platform-agnostic; share a single cache | |
| # entry across every workflow/job/OS in the repo. The SHA suffix | |
| # produces an immutable save key per run; restore-keys falls | |
| # through to the most recent prior cache under the same version. | |
| path: ${{ runner.temp }}/ExternalData | |
| key: externaldata-v1-${{ hashFiles('**/*.cid') }} | |
| restore-keys: | | |
| externaldata-v1- | |
| - name: Show ccache configuration, stats and maintenance | |
| shell: bash | |
| run: | | |
| ccache --zero-stats | |
| ccache --evict-older-than 7d | |
| ccache --show-config | |
| - name: Set up Python | |
| if: matrix.python-version != '' | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Python dependencies | |
| if: matrix.python-version != '' | |
| run: | | |
| set -x | |
| python3 -m pip install --upgrade --pre numpy | |
| - name: Get specific version of CMake, latest Ninja | |
| uses: lukka/get-cmake@v4.0.1 | |
| with: | |
| cmakeVersion: ~${{ env.CMakeVersion }} | |
| ninjaVersion: latest | |
| - name: Download dashboard script | |
| run: | | |
| set -x | |
| git clone -b dashboard --single-branch https://github.com/InsightSoftwareConsortium/ITK.git ITK-dashboard | |
| - name: Export ExternalData_OBJECT_STORES | |
| shell: bash | |
| run: | | |
| echo "ExternalData_OBJECT_STORES=${{ runner.temp }}/ExternalData" >> "$GITHUB_ENV" | |
| - name: Configure CTest script | |
| run: | | |
| cat > ITK-dashboard/dashboard.cmake << EOF | |
| set(CTEST_BUILD_CONFIGURATION "${{ matrix.cmake-build-type }}") | |
| set(CTEST_CMAKE_GENERATOR "${{ matrix.cmake-generator }}") | |
| set(dashboard_cache " | |
| ${{ matrix.ctest-cache }} | |
| CMAKE_C_COMPILER_LAUNCHER:STRING=ccache | |
| CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache | |
| ") | |
| include(${{ github.workspace }}/ITK-dashboard/github_actions_dashboard.cmake) | |
| EOF | |
| cat ITK-dashboard/dashboard.cmake | |
| - name: Build and test | |
| run: | | |
| set -x | |
| c++ --version | |
| cmake --version | |
| ctest -S ${{ github.workspace }}/ITK-dashboard/dashboard.cmake -V -j ${{ matrix.parallel-level }} ${{ matrix.ctest-options }} | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: 1 | |
| - name: Report build warnings and errors | |
| if: always() | |
| run: python3 ${{ github.workspace }}/Testing/ContinuousIntegration/report_build_diagnostics.py ${{ github.workspace }}/build | |
| - name: Save compiler cache | |
| if: ${{ !cancelled() }} | |
| uses: actions/cache/save@v5 | |
| with: | |
| path: ${{ runner.temp }}/ccache | |
| key: ccache-v4-${{ runner.os }}-${{ matrix.name }}-${{ github.sha }} | |
| # ExternalData object store is populated by | |
| # .github/workflows/populate-externaldata-cache.yml — a dedicated | |
| # workflow whose only job is to prefetch every CID and write the | |
| # shared cache entry. Consumer workflows (this one, pixi.yml, the | |
| # Azure pipelines) restore-only. Do not reintroduce a Save step | |
| # here: races across platforms overwrite the single shared key with | |
| # a fraction of the expected blobs and poison every subsequent | |
| # restore. | |
| - name: ccache stats | |
| if: always() | |
| run: ccache --show-stats | |
| prune-superseded-caches: | |
| # Background housekeeping: removes ccache entries whose SHA-suffixed | |
| # key has been superseded by a newer build of the same (ref, OS). | |
| # ccache restore-keys still falls back to the newest prefix match, | |
| # so older entries are dead weight under the 10 GB repo cache budget. | |
| needs: build | |
| if: always() | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| actions: write | |
| contents: read | |
| continue-on-error: true | |
| steps: | |
| - name: Checkout maintenance script | |
| uses: actions/checkout@v5 | |
| with: | |
| sparse-checkout: Utilities/Maintenance/PruneSupersededCiCaches.py | |
| sparse-checkout-cone-mode: false | |
| - name: Prune superseded ccache entries | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| run: python3 Utilities/Maintenance/PruneSupersededCiCaches.py |