From 1956a044a62bab7a0513deb6b267c55764e8728d Mon Sep 17 00:00:00 2001 From: Jakob Gamper <97gamjak@gmail.com> Date: Wed, 12 Aug 2026 08:29:39 +0200 Subject: [PATCH 1/3] refactor: move path filtering logic from on to steps -- skipped jobs appear as a failed check in a ruleset --- .github/workflows/ci_build.yml | 265 +++------------------------- .github/workflows/clang_format.yml | 49 +++-- .github/workflows/license_check.yml | 71 +++++--- .github/workflows/lint.yml | 66 ++++--- 4 files changed, 146 insertions(+), 305 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 660de56f2..4b54fb7c0 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -4,39 +4,41 @@ on: pull_request: branches: - '*' - paths: - - '.github/workflows/ci_build.yml' - - '.cmake/**' - - 'apps/**' - - 'include/**' - - 'src/**' - - 'integration_tests/**' - - 'tests/**' - - 'benchmarks/CMakeLists.txt' - - 'benchmarks/src/**' - - 'CMakeLists.txt' push: branches: - dev - main - paths: - - '.github/workflows/ci_build.yml' - - '.cmake/**' - - 'apps/**' - - 'include/**' - - 'src/**' - - 'integration_tests/**' - - 'tests/**' - - 'benchmarks/CMakeLists.txt' - - 'benchmarks/src/**' - - 'CMakeLists.txt' schedule: - cron: '0 2 * * *' workflow_dispatch: jobs: + changes: + if: github.event_name != 'schedule' + runs-on: ubuntu-24.04 + outputs: + relevant: ${{ steps.filter.outputs.relevant }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + relevant: + - '.github/workflows/ci_build.yml' + - '.cmake/**' + - 'apps/**' + - 'include/**' + - 'src/**' + - 'integration_tests/**' + - 'tests/**' + - 'benchmarks/CMakeLists.txt' + - 'benchmarks/src/**' + - 'CMakeLists.txt' + build: if: github.event_name != 'schedule' + needs: changes strategy: matrix: os: [ubuntu-24.04, ubuntu-24.04-arm] @@ -47,225 +49,10 @@ jobs: - uses: actions/checkout@v4 - name: install gcc13 + if: needs.changes.outputs.relevant == 'true' run: | sudo apt update sudo apt install gcc-13 g++-13 mold shell: bash - # safe because CI builds with -DBUILD_WITH_NATIVE=Off (portable objects) - - name: setup ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ matrix.os }}-${{ matrix.build }} - - - name: setup python ubuntu - uses: actions/setup-python@v3 - with: - python-version: '3.12' - - - name: install python dependencies - run: | - python -m pip install numpy - shell: bash - - - name: install coverage - if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} - run: | - python -m pip install coverage - python -m pip install gcovr - shell: bash - - - name: Build and Test Project - if : ${{ matrix.os != 'ubuntu-24.04' || (matrix.os == 'ubuntu-24.04' && matrix.build != 'Debug') }} - run: | - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DBUILD_WITH_NATIVE=Off .. - make -j$(nproc) - make test - env: - CC: gcc-13 - CXX: g++-13 - - - name: Build and Test Project with coverage - if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} - run: | - mkdir build - cd build - cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_GCOVR=ON -DBUILD_WITH_NATIVE=Off .. - make -j$(nproc) - make coverage_xml - env: - CC: gcc-13 - CXX: g++-13 - - - name: Upload coverage to Codecov - if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true # optional (default = false) - gcov: true - gcov_executable: gcov-13 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - - name: Setup Conda Environment - if: ${{matrix.build == 'Release'}} - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - python-version: '3.12' - activate-environment: test-env - channels: default, conda-forge - auto-activate-base: false - - - name: Cache conda env - if: ${{matrix.build == 'Release'}} - id: cache-conda-env - uses: actions/cache@v4 - with: - path: ${{ env.CONDA }}/envs/test-env - key: conda-env-${{ matrix.os }}-${{ hashFiles('.github/workflows/ci_build.yml') }} - - - name: Install Integration Test Dependencies in Conda Env - if: ${{matrix.build == 'Release' && steps.cache-conda-env.outputs.cache-hit != 'true'}} - run: | - conda install -n test-env -y pip conda-forge::dftbplus conda-forge::xtb - conda run -n test-env python -m pip install pytest pytest-cov pqanalysis ase pyscf==2.9.0 - - - name: Integration Tests - if: ${{matrix.build == 'Release' }} - run: | - conda run -n test-env pytest integration_tests -v - - benchmark: - if: github.event_name != 'schedule' - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - - - name: install gcc13 - run: | - sudo apt update - sudo apt install gcc-13 g++-13 - shell: bash - - - name: Build benchmark suite - run: | - cmake -S . -B build-benchmark \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_WITH_BENCHMARKING=On \ - -DBUILD_WITH_TESTS=Off \ - -DBUILD_WITH_ASE=Off \ - -DBUILD_WITH_DOCS=Off \ - -DBUILD_WITH_NATIVE=Off - cmake --build build-benchmark --target google_benchmarks -j$(nproc) - env: - CC: gcc-13 - CXX: g++-13 - - - name: Run benchmark smoke tests - run: | - ctest --test-dir build-benchmark -L benchmark --output-on-failure - - build-static-lto: - if: github.event_name != 'schedule' - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - - - name: Install GCC 13 - run: | - sudo apt update - sudo apt install gcc-13 g++-13 mold ninja-build - - - name: Build and test static LTO - run: | - cmake -S . -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DBUILD_WITH_ASE=OFF \ - -DBUILD_WITH_LTO=ON \ - -DBUILD_WITH_NATIVE=OFF - cmake --build build --parallel - ctest --test-dir build --output-on-failure -j1 - env: - CC: gcc-13 - CXX: g++-13 - - static-singularity-build: - if: >- - github.event_name == 'schedule' || - github.event_name == 'workflow_dispatch' - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - - - name: Install build dependencies - run: | - sudo apt update - sudo apt install gcc-13 g++-13 mold - - - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: static-singularity - - - name: Build project - run: | - cmake -S . -B build \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DBUILD_WITH_SINGULARITY=ON \ - -DBUILD_WITH_TESTS=ON \ - -DBUILD_WITH_ASE=OFF \ - -DBUILD_WITH_NATIVE=OFF - cmake --build build --parallel "$(nproc)" - env: - CC: gcc-13 - CXX: g++-13 - - - name: Run tests - run: ctest --test-dir build --output-on-failure -j1 - - mpi-build: - if: github.event_name != 'schedule' - runs-on: ubuntu-24.04 - - steps: - - uses: actions/checkout@v4 - - - name: Install build dependencies - run: | - sudo apt update - sudo apt install \ - gcc-13 \ - g++-13 \ - mold \ - openmpi-bin \ - libopenmpi-dev \ - python-is-python3 - - - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: mpi-release - - - name: Build project - run: | - cmake -S . -B build \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_WITH_MPI=ON \ - -DBUILD_WITH_ASE=OFF \ - -DBUILD_WITH_NATIVE=OFF \ - -DBUILD_WITH_TESTS=ON - cmake --build build --parallel "$(nproc)" - env: - CC: gcc-13 - CXX: g++-13 - - - name: Run tests - run: ctest --test-dir build --output-on-failure -j1 + # ... every subsequent step gets `if: needs.changes.outputs.relevant == 'true'` ... diff --git a/.github/workflows/clang_format.yml b/.github/workflows/clang_format.yml index cc55f415f..078a99275 100644 --- a/.github/workflows/clang_format.yml +++ b/.github/workflows/clang_format.yml @@ -5,22 +5,35 @@ on: branches: - main - dev - paths: - - '.clang-format' - - '.github/workflows/clang_format.yml' - - '**/*.c' - - '**/*.cc' - - '**/*.cpp' - - '**/*.cxx' - - '**/*.h' - - '**/*.hh' - - '**/*.hpp' - - '**/*.hxx' - - '!external/**' workflow_dispatch: jobs: + changes: + runs-on: ubuntu-24.04 + outputs: + relevant: ${{ steps.filter.outputs.relevant }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + relevant: + - '.clang-format' + - '.github/workflows/clang_format.yml' + - '**/*.c' + - '**/*.cc' + - '**/*.cpp' + - '**/*.cxx' + - '**/*.h' + - '**/*.hh' + - '**/*.hpp' + - '**/*.hxx' + - '!external/**' + clang-format: + needs: changes + if: needs.changes.outputs.relevant == 'true' runs-on: ubuntu-24.04 name: Check Changed C++ Formatting @@ -55,3 +68,15 @@ jobs: "$base_sha" \ "$head_sha" \ -- apps benchmarks include src tests + + clang-format-gate: + if: always() + needs: [changes, clang-format] + runs-on: ubuntu-24.04 + steps: + - name: Check clang-format result + run: | + if [[ "${{ needs.clang-format.result }}" == "failure" ]]; then + exit 1 + fi + echo "OK — clang-format passed or was skipped (no relevant paths changed)" diff --git a/.github/workflows/license_check.yml b/.github/workflows/license_check.yml index 69115df78..0d934e4c8 100644 --- a/.github/workflows/license_check.yml +++ b/.github/workflows/license_check.yml @@ -4,30 +4,35 @@ on: pull_request: branches: - '*' - paths: - - '**/*.cpp' - - '**/*.hpp' - - '**/*.c' - - '**/*.h' - - '.github/workflows/license_check.yml' - - 'scripts/addLicense.sh' - - 'config/licenseHeader.txt' push: branches: - main - master - paths: - - '**/*.cpp' - - '**/*.hpp' - - '**/*.c' - - '**/*.h' - - '.github/workflows/license_check.yml' - - 'scripts/addLicense.sh' - - 'config/licenseHeader.txt' workflow_dispatch: jobs: + changes: + runs-on: ubuntu-24.04 + outputs: + relevant: ${{ steps.filter.outputs.relevant }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + relevant: + - '**/*.cpp' + - '**/*.hpp' + - '**/*.c' + - '**/*.h' + - '.github/workflows/license_check.yml' + - 'scripts/addLicense.sh' + - 'config/licenseHeader.txt' + license-check: + needs: changes + if: needs.changes.outputs.relevant == 'true' runs-on: ubuntu-latest name: Check License Headers @@ -38,31 +43,31 @@ jobs: - name: Check for license headers in C++ files run: | echo "Checking for exact GPL license headers in C++ files..." - + # Verify license header template exists if [ ! -f "config/licenseHeader.txt" ]; then echo "❌ License header template not found at config/licenseHeader.txt" exit 1 fi - + # Get the expected license header content license_header=$(cat config/licenseHeader.txt) header_line_count=$(wc -l < config/licenseHeader.txt) - + echo "Expected license header has $header_line_count lines" echo "" - + # Find all C++ files in the relevant directories (excluding external dependencies) missing_count=0 total_files=0 - + find src/ tests/ include/ apps/ benchmarks/ -regex ".*\.\(hpp\|cpp\|c\|h\)$" -print0 2>/dev/null | while IFS= read -r -d '' file; do total_files=$((total_files + 1)) echo "Checking: $file" - + # Extract the first N lines from the file (where N = number of lines in license header) file_header=$(head -n "$header_line_count" "$file" 2>/dev/null) - + # Compare the extracted header with the expected license header if [ "$file_header" = "$license_header" ]; then echo "✅ Exact license header match: $file" @@ -71,22 +76,22 @@ jobs: echo "$file" >> /tmp/missing_files.txt fi done - + # Count missing files if [ -f /tmp/missing_files.txt ]; then missing_count=$(wc -l < /tmp/missing_files.txt) else missing_count=0 fi - + # Get total file count total_files=$(find src/ tests/ include/ apps/ benchmarks/ -regex ".*\.\(hpp\|cpp\|c\|h\)$" 2>/dev/null | wc -l) - + echo "" echo "=== License Check Summary ===" echo "Total files checked: $total_files" echo "Files with missing/invalid license headers: $missing_count" - + if [ $missing_count -gt 0 ]; then echo "" echo "Files with incorrect license headers:" @@ -113,3 +118,15 @@ jobs: cat config/licenseHeader.txt echo "=== End of Template ===" shell: bash + + license-check-gate: + if: always() + needs: [changes, license-check] + runs-on: ubuntu-24.04 + steps: + - name: Check license-check result + run: | + if [[ "${{ needs.license-check.result }}" == "failure" ]]; then + exit 1 + fi + echo "OK — license check passed or was skipped (no relevant paths changed)" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ea03c8beb..d87f27263 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,41 +4,41 @@ on: pull_request: branches: - '*' - paths: - - '.github/workflows/ci_build.yml' - - '.cmake/**' - - 'apps/**' - - 'include/**' - - 'src/**' - - 'integration_tests/**' - - 'tests/**' - - 'benchmarks/CMakeLists.txt' - - 'benchmarks/src/**' - - 'CMakeLists.txt' - - '.clang-tidy' - - 'scripts/clang_tidy.sh' - - '.github/workflows/lint.yml' push: branches: - dev - main - paths: - - '.github/workflows/ci_build.yml' - - '.cmake/**' - - 'apps/**' - - 'include/**' - - 'src/**' - - 'integration_tests/**' - - 'CMakeLists.txt' - - '.clang-tidy' - - 'scripts/clang_tidy.sh' - - '.github/workflows/lint.yml' - - 'benchmarks/src/**' - - 'CMakeLists.txt' workflow_dispatch: jobs: + changes: + runs-on: ubuntu-24.04 + outputs: + relevant: ${{ steps.filter.outputs.relevant }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + relevant: + - '.github/workflows/ci_build.yml' + - '.cmake/**' + - 'apps/**' + - 'include/**' + - 'src/**' + - 'integration_tests/**' + - 'tests/**' + - 'benchmarks/CMakeLists.txt' + - 'benchmarks/src/**' + - 'CMakeLists.txt' + - '.clang-tidy' + - 'scripts/clang_tidy.sh' + - '.github/workflows/lint.yml' + lint: + needs: changes + if: needs.changes.outputs.relevant == 'true' runs-on: ubuntu-24.04 steps: @@ -78,3 +78,15 @@ jobs: - name: Run clangd-tidy run: | clangd-tidy $(find src/ apps/ include/ -name "*.cpp" -o -name "*.hpp" -o -name "*.tpp" 2>/dev/null) -p=build + + lint-gate: + if: always() + needs: [changes, lint] + runs-on: ubuntu-24.04 + steps: + - name: Check lint result + run: | + if [[ "${{ needs.lint.result }}" == "failure" ]]; then + exit 1 + fi + echo "OK — lint passed or was skipped (no relevant paths changed)" From 91761bf2e400004f7eea6523816c3d8e2f9624f5 Mon Sep 17 00:00:00 2001 From: Jakob Gamper <97gamjak@gmail.com> Date: Wed, 12 Aug 2026 08:33:03 +0200 Subject: [PATCH 2/3] chore: fix lost ci file --- .github/workflows/ci_build.yml | 242 ++++++++++++++++++++++++++++++++- 1 file changed, 239 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 4b54fb7c0..20e8e778f 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -37,7 +37,7 @@ jobs: - 'CMakeLists.txt' build: - if: github.event_name != 'schedule' + if: needs.changes.outputs.relevant == 'true' && github.event_name != 'schedule' needs: changes strategy: matrix: @@ -49,10 +49,246 @@ jobs: - uses: actions/checkout@v4 - name: install gcc13 - if: needs.changes.outputs.relevant == 'true' run: | sudo apt update sudo apt install gcc-13 g++-13 mold shell: bash - # ... every subsequent step gets `if: needs.changes.outputs.relevant == 'true'` ... + # safe because CI builds with -DBUILD_WITH_NATIVE=Off (portable objects) + - name: setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ matrix.os }}-${{ matrix.build }} + + - name: setup python ubuntu + uses: actions/setup-python@v3 + with: + python-version: '3.12' + + - name: install python dependencies + run: | + python -m pip install numpy + shell: bash + + - name: install coverage + if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} + run: | + python -m pip install coverage + python -m pip install gcovr + shell: bash + + - name: Build and Test Project + if : ${{ matrix.os != 'ubuntu-24.04' || (matrix.os == 'ubuntu-24.04' && matrix.build != 'Debug') }} + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DBUILD_WITH_NATIVE=Off .. + make -j$(nproc) + make test + env: + CC: gcc-13 + CXX: g++-13 + + - name: Build and Test Project with coverage + if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_GCOVR=ON -DBUILD_WITH_NATIVE=Off .. + make -j$(nproc) + make coverage_xml + env: + CC: gcc-13 + CXX: g++-13 + + - name: Upload coverage to Codecov + if : ${{ matrix.os == 'ubuntu-24.04' && matrix.build == 'Debug' }} + uses: codecov/codecov-action@v3 + with: + fail_ci_if_error: true # optional (default = false) + gcov: true + gcov_executable: gcov-13 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + - name: Setup Conda Environment + if: ${{matrix.build == 'Release'}} + uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + python-version: '3.12' + activate-environment: test-env + channels: default, conda-forge + auto-activate-base: false + + - name: Cache conda env + if: ${{matrix.build == 'Release'}} + id: cache-conda-env + uses: actions/cache@v4 + with: + path: ${{ env.CONDA }}/envs/test-env + key: conda-env-${{ matrix.os }}-${{ hashFiles('.github/workflows/ci_build.yml') }} + + - name: Install Integration Test Dependencies in Conda Env + if: ${{matrix.build == 'Release' && steps.cache-conda-env.outputs.cache-hit != 'true'}} + run: | + conda install -n test-env -y pip conda-forge::dftbplus conda-forge::xtb + conda run -n test-env python -m pip install pytest pytest-cov pqanalysis ase pyscf==2.9.0 + + - name: Integration Tests + if: ${{matrix.build == 'Release' }} + run: | + conda run -n test-env pytest integration_tests -v + + benchmark: + if: needs.changes.outputs.relevant == 'true' && github.event_name != 'schedule' + needs: changes + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - name: install gcc13 + run: | + sudo apt update + sudo apt install gcc-13 g++-13 + shell: bash + + - name: Build benchmark suite + run: | + cmake -S . -B build-benchmark \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_WITH_BENCHMARKING=On \ + -DBUILD_WITH_TESTS=Off \ + -DBUILD_WITH_ASE=Off \ + -DBUILD_WITH_DOCS=Off \ + -DBUILD_WITH_NATIVE=Off + cmake --build build-benchmark --target google_benchmarks -j$(nproc) + env: + CC: gcc-13 + CXX: g++-13 + + - name: Run benchmark smoke tests + run: | + ctest --test-dir build-benchmark -L benchmark --output-on-failure + + build-static-lto: + if: needs.changes.outputs.relevant == 'true' && github.event_name != 'schedule' + needs: changes + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - name: Install GCC 13 + run: | + sudo apt update + sudo apt install gcc-13 g++-13 mold ninja-build + + - name: Build and test static LTO + run: | + cmake -S . -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_WITH_ASE=OFF \ + -DBUILD_WITH_LTO=ON \ + -DBUILD_WITH_NATIVE=OFF + cmake --build build --parallel + ctest --test-dir build --output-on-failure -j1 + env: + CC: gcc-13 + CXX: g++-13 + + static-singularity-build: + if: >- + github.event_name == 'schedule' || + github.event_name == 'workflow_dispatch' + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - name: Install build dependencies + run: | + sudo apt update + sudo apt install gcc-13 g++-13 mold + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: static-singularity + + - name: Build project + run: | + cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_WITH_SINGULARITY=ON \ + -DBUILD_WITH_TESTS=ON \ + -DBUILD_WITH_ASE=OFF \ + -DBUILD_WITH_NATIVE=OFF + cmake --build build --parallel "$(nproc)" + env: + CC: gcc-13 + CXX: g++-13 + + - name: Run tests + run: ctest --test-dir build --output-on-failure -j1 + + mpi-build: + if: needs.changes.outputs.relevant == 'true' && github.event_name != 'schedule' + needs: changes + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - name: Install build dependencies + run: | + sudo apt update + sudo apt install \ + gcc-13 \ + g++-13 \ + mold \ + openmpi-bin \ + libopenmpi-dev \ + python-is-python3 + + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: mpi-release + + - name: Build project + run: | + cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_WITH_MPI=ON \ + -DBUILD_WITH_ASE=OFF \ + -DBUILD_WITH_NATIVE=OFF \ + -DBUILD_WITH_TESTS=ON + cmake --build build --parallel "$(nproc)" + env: + CC: gcc-13 + CXX: g++-13 + + - name: Run tests + run: ctest --test-dir build --output-on-failure -j1 + + ci-build-gate: + if: always() + needs: [changes, build, benchmark, build-static-lto, mpi-build] + runs-on: ubuntu-24.04 + steps: + - name: Check CI build results + run: | + for result in \ + "${{ needs.build.result }}" \ + "${{ needs.benchmark.result }}" \ + "${{ needs.build-static-lto.result }}" \ + "${{ needs.mpi-build.result }}"; do + if [[ "$result" == "failure" ]]; then + exit 1 + fi + done + echo "OK — all CI build jobs passed or were skipped (no relevant paths changed)" From 877ac74d0cb7f53ba850900cecd9b6454ae66420 Mon Sep 17 00:00:00 2001 From: Jakob Gamper <97gamjak@gmail.com> Date: Wed, 12 Aug 2026 20:07:44 +0200 Subject: [PATCH 3/3] chore: update changes file --- changes/developer/internal.workflow.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/developer/internal.workflow.md diff --git a/changes/developer/internal.workflow.md b/changes/developer/internal.workflow.md new file mode 100644 index 000000000..9d1c159e4 --- /dev/null +++ b/changes/developer/internal.workflow.md @@ -0,0 +1 @@ +- add explicit path filtering via filters in CI to make them checkable in rulesets