Skip to content

Update builds.yml #1906

Update builds.yml

Update builds.yml #1906

Workflow file for this run

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: r2
DEPENDENCY_TAG: v5
jobs:
linux_ubuntu:
runs-on: ubuntu-latest
container: ghcr.io/acts-project/ubuntu2404:63
env:
INSTALL_DIR: ${{ github.workspace }}/install
ACTS_LOG_FAILURE_THRESHOLD: WARNING
DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.v5.tar.zst
steps:
- uses: actions/checkout@v4
with:
submodules: true
lfs: true
- name: Install dependencies
run: CI/dependencies.sh
- name: Restore ccache
uses: actions/cache/restore@v4
id: ccache-restore
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }}
restore-keys: |
ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-
- name: Configure
# setting CMAKE_CXX_STANDARD=20 is a workaround for a bug in the
# dd4hep CMake configuration that gets triggered on recent CMake
# versions
# Need to set git user & email for patching to work (GeoModel plugin)
run: >
git config --global user.name 'CI' &&
git config --global user.email '<>' &&
ccache -z &&
cmake -B build -S .
--preset=github-ci
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}"
-DPython_EXECUTABLE=$(which python3)
-DACTS_BUILD_PLUGIN_ONNX=ON
- name: Build
run: cmake --build build
- name: ccache stats
run: ccache -s
- name: Save ccache
uses: actions/cache/save@v4
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@v4
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=20
-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/ubuntu2404:63
# needs: [linux_ubuntu]
# env:
# ACTS_SEQUENCER_DISABLE_FPEMON: true
# DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${{ env.DEPENDENCY_TAG }}.tar.zst
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# lfs: true
# - name: Install dependencies
# run: CI/dependencies.sh
# - uses: actions/download-artifact@v4
# with:
# name: acts-linux-ubuntu
# - name: Unpack build
# run: mkdir build && tar xf build.tar.gz -C build
# - name: Python level tests
# shell: bash
# env:
# PYTEST_MD_REPORT: true
# PYTEST_MD_REPORT_VERBOSE: 0
# PYTEST_MD_REPORT_OUTPUT: pytest.md
# run: >
# geant4-config --install-datasets
# && source build/this_acts_withdeps.sh
# && python3 -m pip install -r Examples/Python/tests/requirements.txt
# && python3 -m pip 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/ubuntu2404:63
# needs: [linux_ubuntu]
# env:
# ACTS_SEQUENCER_DISABLE_FPEMON: true
# DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${{ env.DEPENDENCY_TAG }}.tar.zst
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# lfs: true
# - run: apt-get update && apt-get install -y time
# - name: Install dependencies
# run: CI/dependencies.sh
# - uses: actions/download-artifact@v4
# 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"
# && python3 -m pip install histcmp==0.6.8 matplotlib
# && python3 -m pip install -r Examples/Scripts/requirements.txt
# && geant4-config --install-datasets
# && venv_python=$(which python3)
# && echo $venv_python
# && source build/this_acts_withdeps.sh
# && export PATH=$(dirname $venv_python):$PATH
# && echo $PATH
# && which python3
# && echo "::endgroup::"
# && CI/physmon/phys_perf_mon.sh all physmon
# - name: Post step summary
# if: always()
# run: cat physmon/summary.md >> $GITHUB_STEP_SUMMARY
# - uses: actions/upload-artifact@v4
# 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.2
# - uses: actions/download-artifact@v4
# 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: ubuntu2204
# std: 20
# - image: ubuntu2204_clang
# std: 20
# container: ghcr.io/acts-project/${{ matrix.image }}:63
# env:
# INSTALL_DIR: ${{ github.workspace }}/install
# ACTS_LOG_FAILURE_THRESHOLD: WARNING
# DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-22.04/deps.${{ env.DEPENDENCY_TAG }}.tar.zst
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# lfs: true
# - name: Install dependencies
# run: CI/dependencies.sh
# - name: Restore ccache
# uses: actions/cache/restore@v4
# id: ccache-restore
# with:
# path: ${{ env.CCACHE_DIR }}
# key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }}
# restore-keys: |
# ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-
# - name: Configure
# # setting CMAKE_CXX_STANDARD=20 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 .
# --preset=github-ci
# -DCMAKE_CXX_STANDARD=${{ matrix.std }}
# -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}"
# -DPython_EXECUTABLE=$(which python3)
# - name: Build
# run: cmake --build build
# - name: ccache stats
# run: ccache -s
# - name: Save ccache
# uses: actions/cache/save@v4
# 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=${{ matrix.std }}
# -DCMAKE_PREFIX_PATH="${INSTALL_DIR}"
# - name: Downstream build
# run: cmake --build build-downstream
# - name: Downstream run
# run: ./build-downstream/bin/ShowActsVersion
# macos:
# runs-on: macos-14
# env:
# INSTALL_DIR: ${{ github.workspace }}/install_acts
# ACTS_LOG_FAILURE_THRESHOLD: WARNING
# DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/macos-14/deps.${{ env.DEPENDENCY_TAG }}.tar.zst
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# lfs: true
# - name: Print architecture
# run: uname -p
# - name: Install dependencies
# run: >
# brew install cmake ninja ccache xerces-c
# && CI/dependencies.sh
# - name: Restore ccache
# uses: actions/cache/restore@v4
# id: ccache-restore
# with:
# path: ${{ env.CCACHE_DIR }}
# key: ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-${{ github.sha }}
# restore-keys: |
# ccache-${{ runner.os }}-${{ github.job }}-${{ env.CCACHE_KEY_SUFFIX }}-
# - name: Configure
# run: >
# ccache -z
# && cmake -B build -S .
# --preset=github-ci
# -DCMAKE_PREFIX_PATH="${{ env.DEPENDENCY_DIR }}"
# -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}"
# -DPython_EXECUTABLE=$(which python3)
# - name: Build
# run: cmake --build build
# - name: ccache stats
# run: ccache -s
# - name: Save ccache
# uses: actions/cache/save@v4
# 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@v4
# 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=20
# -DCMAKE_PREFIX_PATH="${INSTALL_DIR}"
# - name: Downstream build
# run: cmake --build build-downstream
# - name: Downstream run
# run: >
# PATH="${{ env.DEPENDENCY_DIR }}/bin:$PATH"
# && ./build-downstream/bin/ShowActsVersion