Skip to content

Commit 21dd538

Browse files
ci: enforce FPE masking on GitHub, decommission mirrored GitLab jobs (#5714)
## Summary Moves the FPE-masking regression gate from the CERN GitLab mirror onto GitHub-hosted CI, and decommissions the now-redundant mirrored GitLab jobs. First concrete step of the GitLab → GitHub CI migration. ### Background The FPE-masking gate only *enforced* on GitLab: it built `RelWithDebInfo` (DWARF line info present) and left `failOnUnmaskedFpe` at its `true` default, so masks — matched on `source_file():source_line()` — resolve. GitHub built `Release` (no line info) and set `ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE=0`, so `test_fpe.py`'s masking tests were **silently skipped**. ### Changes **GitHub (`builds.yml` + `CMakePresets.json`):** - New `github-ci-fpe` preset: `RelWithDebInfo` + `-g1 -gz` — slim line tables so masks resolve, without full-debug artifact bloat (smaller than GitLab's full `-g`). - `linux_ubuntu` builds with it; its artifact already feeds the two FPE-aware consumers. - `linux_examples_test` and `linux_physmon` set `ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE=1` (enforce). Other jobs (macOS, clang22-extra) stay Release/non-enforcing. **GitLab (`.gitlab-ci.yml`):** - Remove `build_linux_ubuntu`, `linux_test_examples`, `linux_physmon` — their only GitLab-unique coverage was this FPE enforcement, now on GitHub. - GNN/TensorRT (GPU), LCG (CVMFS), clang22, detray, traccc jobs untouched — later migration phases. ### Validation Proven on this PR's earlier validation runs (see comments below): - Masking tests **pass at `-g1` post artifact round-trip** ([test_fpe.py run](https://github.com/acts-project/acts/actions/runs/29868661329)). - physmon runs **FPE-clean under enforcement** on the minimal-debug artifact ([physmon run](https://github.com/acts-project/acts/actions/runs/29895623646)). - Sizes: build tree ~1.5 GB, artifact ~202 MB — well within limits. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent 081ddad commit 21dd538

3 files changed

Lines changed: 20 additions & 120 deletions

File tree

.github/workflows/builds.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ jobs:
5959
ccache -z &&
6060
CI/dependencies/run.sh .env
6161
cmake -B build -S .
62-
--preset=github-ci
62+
--preset=github-ci-fpe
6363
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}"
6464
-DACTS_BUILD_PLUGIN_ONNX=ON
6565
@@ -132,7 +132,10 @@ jobs:
132132
container: ghcr.io/acts-project/ubuntu2404:87
133133
needs: [linux_ubuntu]
134134
env:
135-
ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE: 0
135+
# Enforce FPE masking on the RelWithDebInfo (github-ci-fpe) build: source
136+
# locations resolve, so the test_fpe.py masking tests run instead of being
137+
# skipped. Replaces the FPE coverage previously unique to GitLab.
138+
ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE: 1
136139

137140
steps:
138141
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -173,6 +176,11 @@ jobs:
173176
contents: read
174177
container: ghcr.io/acts-project/ubuntu2404:87
175178
needs: [linux_ubuntu]
179+
env:
180+
# Enforce FPE masking on the RelWithDebInfo (github-ci-fpe) build, matching
181+
# what GitLab's linux_physmon did. The full reconstruction must stay
182+
# FPE-clean (auto-loaded source masks resolve at -g1).
183+
ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE: 1
176184

177185
steps:
178186
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

.gitlab-ci.yml

Lines changed: 0 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -198,124 +198,6 @@ build_gnn_tensorrt:
198198
after_script:
199199
- !reference [.spack_cleanup, after_script]
200200

201-
build_linux_ubuntu:
202-
stage: build
203-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:87
204-
205-
cache:
206-
- !reference [.ccache_base, cache]
207-
- !reference [.spack_cache, cache]
208-
209-
artifacts:
210-
paths:
211-
- build/
212-
exclude:
213-
- build/bin/ActsUnitTest*
214-
- build/bin/ActsIntegrationTest*
215-
- build/**/*.o
216-
expire_in: 1 day
217-
218-
script:
219-
- git clone $CLONE_URL src
220-
221-
- cd src
222-
- git checkout $HEAD_SHA
223-
224-
- CI/dependencies/setup.sh -c g++ -e .env
225-
- source .env
226-
227-
- cd ..
228-
229-
- mkdir build
230-
- >
231-
cmake -B build -S src
232-
--preset=gitlab-ci
233-
-DACTS_BUILD_PLUGIN_ONNX=ON
234-
235-
- ccache -z
236-
- cmake --build build -- -j8
237-
- ccache -s
238-
239-
- ctest --test-dir build -j$(nproc)
240-
- cmake --build build --target integrationtests
241-
242-
# Install main project
243-
- cmake --install build
244-
245-
# Downstream configure
246-
- >
247-
cmake -B build-downstream -S src/Tests/DownstreamProject
248-
-GNinja
249-
-DCMAKE_BUILD_TYPE=Release
250-
-DCMAKE_CXX_FLAGS=-Werror
251-
-DCMAKE_PREFIX_PATH="${INSTALL_DIR}"
252-
253-
# Downstream build
254-
- cmake --build build-downstream
255-
256-
# Downstream tests
257-
- ctest --test-dir build-downstream --output-on-failure
258-
259-
after_script:
260-
- !reference [.spack_cleanup, after_script]
261-
262-
linux_test_examples:
263-
stage: test
264-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:87
265-
needs: [build_linux_ubuntu]
266-
267-
cache:
268-
- !reference [.spack_cache, cache]
269-
270-
script:
271-
- apt-get update && apt-get install -y git-lfs
272-
273-
- git clone $CLONE_URL src
274-
- cd src
275-
- git checkout $HEAD_SHA
276-
- CI/dependencies/setup.sh -c g++ -e .env -f
277-
- source .env
278-
- cd ..
279-
280-
- source build/this_acts_withdeps.sh
281-
- cd src
282-
- pytest -rsfExw --durations=10 -k "not gnn" -v
283-
284-
after_script:
285-
- !reference [.spack_cleanup, after_script]
286-
287-
linux_physmon:
288-
stage: test
289-
needs: [build_linux_ubuntu]
290-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:87
291-
292-
artifacts:
293-
when: always
294-
paths:
295-
- src/physmon
296-
expire_in: 1 week
297-
298-
cache:
299-
- !reference [.spack_cache, cache]
300-
301-
script:
302-
- apt-get update && apt-get install -y git-lfs time
303-
304-
- git clone $CLONE_URL src
305-
- cd src
306-
- git checkout $HEAD_SHA
307-
- CI/dependencies/setup.sh -c g++ -e .env -f
308-
- source .env
309-
- cd ..
310-
311-
- git config --global safe.directory "$GITHUB_WORKSPACE"
312-
- source build/this_acts_withdeps.sh
313-
- cd src
314-
- CI/physmon/phys_perf_mon.sh all physmon $(nproc)
315-
316-
after_script:
317-
- !reference [.spack_cleanup, after_script]
318-
319201
###############################
320202
### UBUNTU EXTRA JOB MATRIX ###
321203
###############################

CMakePresets.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,16 @@
105105
"CMAKE_BUILD_TYPE": "Release"
106106
}
107107
},
108+
{
109+
"name": "github-ci-fpe",
110+
"displayName": "GitHub-CI FPE (minimal-debug RelWithDebInfo)",
111+
"inherits": "github-ci",
112+
"cacheVariables": {
113+
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
114+
"CMAKE_CXX_FLAGS_RELWITHDEBINFO": "-O2 -DNDEBUG -g1 -gz",
115+
"CMAKE_C_FLAGS_RELWITHDEBINFO": "-O2 -DNDEBUG -g1 -gz"
116+
}
117+
},
108118
{
109119
"name": "github-ci-coverage",
110120
"displayName": "GitHub-CI Coverage",

0 commit comments

Comments
 (0)