tidying after rebase #56
This file contains 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: Builds | |
on: | |
push: | |
pull_request: | |
branches: | |
- main | |
- 'release/**' | |
- 'develop/**' | |
paths-ignore: | |
- "docs/**" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
CCACHE_DIR: ${{ github.workspace }}/ccache | |
CCACHE_MAXSIZE: 500M | |
CCACHE_KEY_SUFFIX: r1 | |
jobs: | |
linux_ubuntu: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/ubuntu2204:v41 | |
env: | |
INSTALL_DIR: ${{ github.workspace }}/install | |
ACTS_LOG_FAILURE_THRESHOLD: WARNING | |
steps: | |
- name: Install git lfs | |
run: apt-get update && apt-get install -y git-lfs | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
lfs: true | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache-linux_ubuntu_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache-linux_ubuntu_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
# setting CMAKE_CXX_STANDARD=17 is a workaround for a bug in the | |
# dd4hep CMake configuration that gets triggered on recent CMake | |
# versions | |
run: > | |
ccache -z && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=17 | |
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" | |
-DACTS_ENABLE_LOG_FAILURE_THRESHOLD=ON | |
-DACTS_BUILD_EVERYTHING=ON | |
-DACTS_BUILD_ODD=ON | |
-DACTS_BUILD_EXAMPLES_PYTHON_BINDINGS=ON | |
-DACTS_BUILD_EXAMPLES_BINARIES=ON | |
-DACTS_BUILD_EXAMPLES_EDM4HEP=ON | |
-DACTS_FORCE_ASSERTIONS=ON | |
-DACTS_BUILD_ANALYSIS_APPS=ON | |
-DACTS_BUILD_PLUGIN_ONNX=ON | |
-DACTS_BUILD_PLUGIN_ACTSVG=ON | |
- name: Build | |
run: cmake --build build | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
- name: Unit tests | |
run: ctest --test-dir build -j$(nproc) | |
- name: Integration tests | |
run: cmake --build build --target integrationtests | |
- name: Install | |
run: cmake --build build --target install | |
- name: Package build | |
run: tar czf build.tar.gz -C build --exclude "*.o" --exclude "bin/ActsUnitTest*" --exclude "bin/ActsIntegrationTest*" . | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: acts-linux-ubuntu | |
path: build.tar.gz | |
- name: Downstream configure | |
run: > | |
cmake -B build-downstream -S Tests/DownstreamProject | |
-GNinja | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=17 | |
-DCMAKE_PREFIX_PATH="${INSTALL_DIR}" | |
- name: Downstream build | |
run: cmake --build build-downstream | |
- name: Downstream run | |
run: ./build-downstream/bin/ShowActsVersion | |
linux_examples_test: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/ubuntu2204:v41 | |
needs: [linux_ubuntu] | |
env: | |
ACTS_SEQUENCER_DISABLE_FPEMON: true | |
steps: | |
- name: Install git lfs | |
run: apt-get update && apt-get install -y git-lfs | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
lfs: true | |
- uses: actions/download-artifact@v3 | |
with: | |
name: acts-linux-ubuntu | |
- name: Unpack build | |
run: mkdir build && tar xf build.tar.gz -C build | |
- name: Examples | |
shell: bash | |
run: > | |
export LD_LIBRARY_PATH=$PWD/build/thirdparty/OpenDataDetector/factory:$LD_LIBRARY_PATH | |
&& source /usr/local/bin/thisdd4hep_only.sh | |
&& ./CI/run_examples.sh | |
- name: Python level tests | |
shell: bash | |
env: | |
PYTEST_MD_REPORT: true | |
PYTEST_MD_REPORT_VERBOSE: 0 | |
PYTEST_MD_REPORT_OUTPUT: pytest.md | |
run: > | |
/usr/local/bin/geant4-config --install-datasets | |
&& source /usr/local/bin/thisroot.sh | |
&& source /usr/local/bin/thisdd4hep_only.sh | |
&& source /usr/local/bin/geant4.sh | |
&& source build/python/setup.sh | |
&& export PYTHONPATH=/usr/local/python:$PYTHONPATH | |
&& export LD_LIBRARY_PATH=$PWD/build/thirdparty/OpenDataDetector/factory:$LD_LIBRARY_PATH | |
&& pip3 install -r Examples/Python/tests/requirements.txt | |
&& pip3 install pytest-md-report | |
&& pytest -rFsv -k "not exatrkx" -v | |
&& cat ${PYTEST_MD_REPORT_OUTPUT} >> $GITHUB_STEP_SUMMARY | |
linux_physmon: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/ubuntu2204:v41 | |
needs: [linux_ubuntu] | |
env: | |
ACTS_SEQUENCER_DISABLE_FPEMON: true | |
steps: | |
- name: Install git lfs | |
run: apt-get update && apt-get install -y git-lfs | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
lfs: true | |
- uses: actions/download-artifact@v3 | |
with: | |
name: acts-linux-ubuntu | |
- name: Unpack build | |
run: mkdir build && tar xf build.tar.gz -C build | |
- name: Save PR number | |
if: ${{ github.event_name == 'pull_request' }} | |
run: | | |
mkdir -p physmon | |
echo ${{ github.event.number }} > physmon/pr_number | |
echo ${{ github.event.pull_request.head.sha }} > physmon/sha | |
- name: Physics performance checks | |
shell: bash | |
run: > | |
echo "::group::Dependencies" | |
&& git config --global safe.directory "$GITHUB_WORKSPACE" | |
&& pip3 install histcmp==0.6.3 spyral-cli==1.1.1 matplotlib | |
&& pip3 install -r Examples/Scripts/requirements.txt | |
&& /usr/local/bin/geant4-config --install-datasets | |
&& source /usr/local/bin/thisroot.sh | |
&& source /usr/local/bin/thisdd4hep_only.sh | |
&& source /usr/local/bin/geant4.sh | |
&& source build/python/setup.sh | |
&& export LD_LIBRARY_PATH=$PWD/build/thirdparty/OpenDataDetector/factory:$LD_LIBRARY_PATH | |
&& echo "::endgroup::" | |
&& export PYTHONPATH="${PYTHONPATH}":"${GITHUB_WORKSPACE}/Examples/Scripts/Python" | |
&& CI/physmon/phys_perf_mon.sh all physmon | |
&& cat physmon/summary.md >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: physmon | |
path: physmon | |
linux_physmon_perf_report: | |
needs: [linux_physmon] | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Install dependencies | |
run: pip3 install spyral-cli==1.1.0 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: physmon | |
path: physmon | |
- name: Store metrics | |
env: | |
SSH_AUTH_SOCK: /tmp/ssh_agent.sock | |
run: | | |
ssh-agent -a $SSH_AUTH_SOCK > /dev/null | |
ssh-add - <<< "${{ secrets.RUNTIME_METRIC_DEPLOY_SSH_KEY }}" | |
git config --global user.email "[email protected]" | |
git config --global user.name "GitHub Action" | |
git clone [email protected]:acts-project/runtime_metrics.git | |
spyral maxima runtime_metrics/metrics.csv physmon/memory/*.csv -e $(date +%Y-%m-%dT%H-%M-%S) -e ${GITHUB_REF_NAME} -e ${GITHUB_REF} -e ${GITHUB_SHA} | |
cd runtime_metrics | |
git add -A | |
git commit -m"update metrics" | |
git push | |
linux_ubuntu_extra: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- image: ubuntu2004 | |
std: 17 | |
- image: ubuntu2204_cpp20 | |
std: 20 | |
- image: ubuntu2204_clang | |
std: 17 | |
container: ghcr.io/acts-project/${{ matrix.image }}:v41 | |
env: | |
INSTALL_DIR: ${{ github.workspace }}/install | |
ACTS_LOG_FAILURE_THRESHOLD: WARNING | |
steps: | |
- name: Install git lfs | |
run: apt-get update && apt-get install -y git-lfs | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
lfs: true | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache-linux_${{ matrix.image }}_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache-linux_${{ matrix.image }}_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
# setting CMAKE_CXX_STANDARD=17 is a workaround for a bug in the | |
# dd4hep CMake configuration that gets triggered on recent CMake | |
# versions | |
run: > | |
ccache -z && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=${{ matrix.std }} | |
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" | |
-DACTS_ENABLE_LOG_FAILURE_THRESHOLD=ON | |
-DACTS_BUILD_EVERYTHING=ON | |
-DACTS_BUILD_ODD=ON | |
-DACTS_BUILD_EXAMPLES_PYTHON_BINDINGS=ON | |
-DACTS_BUILD_EXAMPLES_EDM4HEP=ON | |
-DACTS_FORCE_ASSERTIONS=OFF | |
-DACTS_BUILD_ANALYSIS_APPS=ON | |
-DACTS_BUILD_PLUGIN_ACTSVG=ON | |
- name: Build | |
run: cmake --build build | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
- name: Unit tests | |
run: cmake --build build --target test | |
- name: Integration tests | |
run: cmake --build build --target integrationtests | |
- name: Install | |
run: cmake --build build --target install | |
- name: Downstream configure | |
run: > | |
cmake -B build-downstream -S Tests/DownstreamProject | |
-GNinja | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=17 | |
-DCMAKE_PREFIX_PATH="${INSTALL_DIR}" | |
- name: Downstream build | |
run: cmake --build build-downstream | |
- name: Downstream run | |
run: ./build-downstream/bin/ShowActsVersion | |
linux-nodeps: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/${{ matrix.image }}:v41 | |
strategy: | |
matrix: | |
image: | |
# Note: We only want the centos8 base here, and so we do not | |
# setup the lcg environment below | |
- centos8-lcg100-gcc10 | |
env: | |
# NOTE: we setup the ROOT from LCG even though this is a | |
# "nodeps" build. This is because we want to test that the boost | |
# dependency is handled correctly when building the examples | |
# (same for tbb below). ROOT is available from the "epel" | |
# official centos8 repo, but to save hundreds of MB's of package | |
# download we simply use lcg for this one package. | |
SETUP: source /opt/lcg/ROOT/v6.24.00-e7098/x86_64-centos8-gcc10-opt/bin/thisroot.sh | |
PRELOAD: export LD_PRELOAD=/opt/lcg/gcc/10/x86_64-centos8/lib64/libstdc++.so.6 | |
INSTALL_DIR: ${{ github.workspace }}/install | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
# Install tbb-devel also to build the examples | |
run: > | |
dnf -y install ninja-build tbb-devel ccache | |
&& ln -s $(find / -type f -name 'ccache') /usr/local/bin/ccache | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache-linux-nodeps_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache-linux-nodeps_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
run: > | |
ccache -z && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" | |
-DACTS_BUILD_UNITTESTS=ON | |
-DACTS_BUILD_INTEGRATIONTESTS=ON | |
-DACTS_LOG_FAILURE_THRESHOLD=WARNING | |
-DACTS_FORCE_ASSERTIONS=ON | |
-DACTS_USE_SYSTEM_BOOST=OFF | |
-DACTS_USE_SYSTEM_EIGEN3=OFF | |
-DACTS_BUILD_PLUGIN_JSON=ON | |
- name: Build | |
run: ${SETUP} && ( cmake --build build || cmake --build build ) | |
# The above line is required as a sort of retry mechanism. Without it, | |
# the build fails for technical reasons. | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
- name: Unit tests | |
run: ${SETUP} && cmake --build build --target test | |
- name: Integration tests | |
run: ${SETUP} && cmake --build build --target integrationtests | |
- name: Install | |
run: ${SETUP} && cmake --build build --target install | |
# For some reasons, this version of ROOT complains that it | |
# cannot find the nlohmann::json config before we even installed | |
# it. So we have to do the examples in separate step. | |
- name: Configure Examples | |
run: > | |
${SETUP} && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" | |
-DACTS_LOG_FAILURE_THRESHOLD=WARNING | |
-DACTS_BUILD_EXAMPLES_BINARIES=ON | |
-DACTS_FORCE_ASSERTIONS=ON | |
-DACTS_USE_SYSTEM_BOOST=OFF | |
-DACTS_USE_SYSTEM_EIGEN3=OFF | |
-DACTS_BUILD_EXAMPLES=ON | |
- name: Build Examples | |
run: ${SETUP} && cmake --build build | |
- name: Install Examples | |
run: ${SETUP} && cmake --build build --target install | |
- name: Run Examples | |
# Run a single example to be sure that the boost dependencies | |
# got linked correctly | |
run: ${SETUP} && ${PRELOAD} && "${INSTALL_DIR}/bin/ActsExampleHelloWorld" -n 1 | |
- name: Downstream configure | |
run: > | |
${SETUP} && | |
cmake -B build-downstream-nodeps -S Tests/DownstreamProjectNodeps | |
-GNinja | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_PREFIX_PATH="${INSTALL_DIR}" | |
- name: Downstream build | |
run: cmake --build build-downstream-nodeps | |
- name: Downstream run | |
run: ./build-downstream-nodeps/bin/ShowActsVersion | |
&& CI/check_boost_eigen_versions.sh ./build-downstream-nodeps/bin/ShowActsVersion | |
macos: | |
runs-on: macos-11 | |
env: | |
INSTALL_DIR: ${{ github.workspace }}/install | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
lfs: true | |
- name: Install dependencies | |
run: > | |
brew install cmake eigen ninja ccache | |
&& sudo mkdir /usr/local/acts | |
&& sudo chown $USER /usr/local/acts | |
&& wget --verbose --progress=dot:giga --continue --retry-connrefused --tries=5 --timeout=2 -O deps.tar.gz https://acts.web.cern.ch/ACTS/ci/macOS/deps.67dd08d.tar.gz | |
&& tar -xf deps.tar.gz -C /usr/local/acts | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
# setting CMAKE_CXX_STANDARD=17 is a workaround for a bug in the | |
# dd4hep CMake configuration that gets triggered on recent CMake | |
# versions such as the one installed via homebrew | |
run: > | |
ccache -z && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=17 | |
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" | |
-DCMAKE_PREFIX_PATH=/usr/local/acts | |
-DACTS_BUILD_EVERYTHING=ON | |
-DACTS_BUILD_ODD=ON | |
-DACTS_LOG_FAILURE_THRESHOLD=WARNING | |
-DACTS_FORCE_ASSERTIONS=ON | |
-DACTS_BUILD_EXAMPLES_EDM4HEP=ON | |
-DACTS_BUILD_PLUGIN_ACTSVG=ON | |
- name: Build | |
run: cmake --build build | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
- name: Unit tests | |
run: cmake --build build --target test | |
- name: Integration tests | |
run: cmake --build build --target integrationtests | |
- name: Install | |
run: cmake --build build --target install | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: acts-macos | |
path: ${{ env.INSTALL_DIR }} | |
- name: Downstream configure | |
run: > | |
cmake -B build-downstream -S Tests/DownstreamProject | |
-GNinja | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DCMAKE_CXX_STANDARD=17 | |
-DCMAKE_PREFIX_PATH="${INSTALL_DIR};/usr/local/acts" | |
- name: Downstream build | |
run: cmake --build build-downstream | |
- name: Downstream run | |
run: ./build-downstream/bin/ShowActsVersion | |
cuda: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/ubuntu1804_cuda:v41 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache-cuda_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache-cuda_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
run: > | |
ccache -z && | |
cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_CXX_COMPILER=/usr/bin/g++-8 | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DACTS_BUILD_PLUGIN_CUDA=ON | |
-DACTS_BUILD_UNITTESTS=ON | |
- name: Build | |
run: cmake --build build | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
sycl: | |
runs-on: ubuntu-latest | |
container: ghcr.io/acts-project/ubuntu2004_oneapi:v41 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Restore ccache | |
uses: actions/cache/restore@v3 | |
id: ccache-restore | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ runner.os }}-ccache-sycl_${{ env.CCACHE_KEY_SUFFIX }}_${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-ccache-sycl_${{ env.CCACHE_KEY_SUFFIX }}_ | |
- name: Configure | |
run: > | |
source /opt/intel/oneapi/setvars.sh | |
&& ccache -z | |
&& cmake -B build -S . | |
-GNinja | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
-DCMAKE_CXX_COMPILER=/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/clang++ | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_CXX_FLAGS=-Werror | |
-DACTS_SETUP_VECMEM=ON | |
-DACTS_BUILD_PLUGIN_SYCL=ON | |
-DACTS_BUILD_UNITTESTS=ON | |
- name: Build | |
run: > | |
source /opt/intel/oneapi/setvars.sh | |
&& cmake --build build | |
- name: ccache stats | |
run: ccache -s | |
- name: Save ccache | |
uses: actions/cache/save@v3 | |
if: always() | |
with: | |
path: ${{ github.workspace }}/ccache | |
key: ${{ steps.ccache-restore.outputs.cache-primary-key }} |