Skip to content

Merge pull request #6262 from dzenanz/updatePixiAction #1634

Merge pull request #6262 from dzenanz/updatePixiAction

Merge pull request #6262 from dzenanz/updatePixiAction #1634

Workflow file for this run

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