Skip to content

tidying after rebase #56

tidying after rebase

tidying after rebase #56

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: 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 }}