diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index e770fb90841..135318791ad 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -29,16 +29,14 @@ jobs: env: INSTALL_DIR: ${{ github.workspace }}/install ACTS_LOG_FAILURE_THRESHOLD: WARNING - # DEPENDENCY_URL: https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.{{$DEPENDENCY_TAG}}.tar.zst steps: - - name: Set Dependency URL - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - uses: actions/checkout@v4 with: submodules: true lfs: true + - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV - name: Install dependencies run: CI/dependencies.sh @@ -111,291 +109,293 @@ jobs: - 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 "action@github.com" - # git config --global user.name "GitHub Action" - # git clone git@github.com: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 + linux_examples_test: + runs-on: ubuntu-latest + container: ghcr.io/acts-project/ubuntu2404:63 + needs: [linux_ubuntu] + env: + ACTS_SEQUENCER_DISABLE_FPEMON: true + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + lfs: true + + - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + - 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 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + lfs: true + + - run: apt-get update && apt-get install -y time + - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + - 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 "action@github.com" + git config --global user.name "GitHub Action" + git clone git@github.com: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 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + lfs: true + + - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/ubuntu-24.04/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + - 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 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + lfs: true + + - name: Print architecture + run: uname -p + + - run: echo "DEPENDENCY_URL=https://acts.web.cern.ch/ACTS/ci/macos-14/deps.${DEPENDENCY_TAG}.tar.zst" >> $GITHUB_ENV + - 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