Skip to content

Commit d157670

Browse files
ci: Add a C++23 build (#5223)
1 parent 45e006b commit d157670

29 files changed

+256
-101
lines changed

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ghcr.io/acts-project/spack-container:19.0.0_linux-ubuntu24.04_gcc-13.3.0
1+
FROM ghcr.io/acts-project/spack-container:21.0.0_linux-ubuntu24.04_gcc-13.3.0_cxx20
22

33
RUN apt-get update && apt-get install -y clangd vim
44

.github/actions/dependencies/action.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,23 @@ inputs:
1313
spack_version:
1414
description: 'Version of Spack to use'
1515
required: false
16-
default: 'v1.0.2'
16+
default: 'v1.1.1'
1717
spack_repo_version:
1818
description: 'Version of Spack builtin repo to use'
1919
required: false
20-
default: 'v2025.07.0'
20+
default: 'v2025.11.0'
2121
DEPENDENCY_TAG:
2222
description: 'Dependency tag to pull from'
2323
required: false
24-
default: 'v19.0.0'
24+
default: 'v21.0.0'
2525
full_install:
2626
description: 'Whether to do a full dependency installation including Geant4 datasets and Python packages'
2727
required: false
2828
default: 'false'
29+
cxx_std:
30+
description: 'C++ standard for lockfile selection (e.g. 20, 23). Defaults to 20.'
31+
required: false
32+
default: '20'
2933
env_file:
3034
description: 'Where to generate the environment file'
3135
required: true
@@ -72,8 +76,8 @@ runs:
7276
spack/bin/spack list > /dev/null
7377
rm -rf spack/.git
7478
mkdir spack_cache
75-
cp -r spack spack_cache/
76-
cp -r ~/.spack spack_cache/
79+
cp -RP spack spack_cache/
80+
cp -RP ~/.spack spack_cache/
7781
7882
- name: Save cache
7983
if: steps.cache-restore.outputs.cache-hit != 'true'
@@ -89,6 +93,7 @@ runs:
8993
GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
9094
SPACK_REPO_VERSION: ${{ inputs.spack_repo_version }}
9195
DEPENDENCY_TAG: ${{ inputs.DEPENDENCY_TAG }}
96+
CXXSTD: ${{ inputs.cxx_std }}
9297
run: |
9398
args="-e ${{ inputs.env_file }}"
9499
if [ "${{ inputs.full_install }}" == "true" ]; then

.github/workflows/analysis.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ env:
2929
jobs:
3030
build_debug:
3131
runs-on: ubuntu-latest
32-
container: ghcr.io/acts-project/ubuntu2404:83
32+
container: ghcr.io/acts-project/ubuntu2404:85
3333
steps:
3434

3535
- uses: actions/checkout@v6
@@ -79,7 +79,9 @@ jobs:
7979
- name: ccache stats
8080
run: ccache -s
8181
- name: Unit tests
82-
run: ctest --test-dir build -j$(nproc)
82+
run: >
83+
CI/dependencies/run.sh .env
84+
ctest --test-dir build -j$(nproc)
8385
8486
- name: Remove .o files
8587
run: >
@@ -114,7 +116,7 @@ jobs:
114116
115117
clang_tidy:
116118
runs-on: ubuntu-latest
117-
container: ghcr.io/acts-project/ubuntu2404_clang19:83
119+
container: ghcr.io/acts-project/ubuntu2404_clang22:85
118120

119121
steps:
120122
- uses: actions/checkout@v6
@@ -132,10 +134,10 @@ jobs:
132134

133135
- name: Install clang-tidy
134136
run: |
135-
apt-get update && apt-get install -y clang-tidy-19
136-
ln -sf /usr/bin/clang-tidy-19 /usr/bin/clang-tidy
137-
ln -sf /usr/bin/clang++-19 /usr/bin/clang++
138-
ln -sf /usr/bin/clang-19 /usr/bin/clang
137+
apt-get update && apt-get install -y clang-tidy-22
138+
ln -sf /usr/bin/clang-tidy-22 /usr/bin/clang-tidy
139+
ln -sf /usr/bin/clang++-22 /usr/bin/clang++
140+
ln -sf /usr/bin/clang-22 /usr/bin/clang
139141
140142
- name: Install dependencies
141143
uses: ./.github/actions/dependencies

.github/workflows/builds.yml

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ env:
2525
jobs:
2626
linux_ubuntu:
2727
runs-on: ubuntu-latest
28-
container: ghcr.io/acts-project/ubuntu2404:83
28+
container: ghcr.io/acts-project/ubuntu2404:85
2929
env:
3030
INSTALL_DIR: ${{ github.workspace }}/install
3131
ACTS_LOG_FAILURE_THRESHOLD: WARNING
@@ -78,10 +78,14 @@ jobs:
7878
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
7979

8080
- name: Unit tests
81-
run: ctest --test-dir build -j$(nproc)
81+
run: >
82+
CI/dependencies/run.sh .env
83+
ctest --test-dir build -j$(nproc)
8284
8385
- name: Integration tests
84-
run: cmake --build build --target integrationtests
86+
run: >
87+
CI/dependencies/run.sh .env
88+
cmake --build build --target integrationtests
8589
8690
- name: Install
8791
run: cmake --build build --target install
@@ -118,7 +122,7 @@ jobs:
118122

119123
linux_examples_test:
120124
runs-on: ubuntu-latest
121-
container: ghcr.io/acts-project/ubuntu2404:83
125+
container: ghcr.io/acts-project/ubuntu2404:85
122126
needs: [linux_ubuntu]
123127
env:
124128
ACTS_SEQUENCER_FAIL_ON_UNMASKED_FPE: 0
@@ -157,7 +161,7 @@ jobs:
157161
158162
linux_physmon:
159163
runs-on: ubuntu-latest
160-
container: ghcr.io/acts-project/ubuntu2404:83
164+
container: ghcr.io/acts-project/ubuntu2404:85
161165
needs: [linux_ubuntu]
162166

163167
steps:
@@ -234,10 +238,10 @@ jobs:
234238
strategy:
235239
matrix:
236240
include:
237-
- image: ubuntu2404_clang19
238-
std: 20
239-
cxx: clang++-19
240-
container: ghcr.io/acts-project/${{ matrix.image }}:83
241+
- image: ubuntu2404_clang22
242+
std: 23
243+
cxx: clang++-22
244+
container: ghcr.io/acts-project/${{ matrix.image }}:85
241245
env:
242246
INSTALL_DIR: ${{ github.workspace }}/install
243247
ACTS_LOG_FAILURE_THRESHOLD: WARNING
@@ -251,6 +255,7 @@ jobs:
251255
uses: ./.github/actions/dependencies
252256
with:
253257
compiler: ${{ matrix.cxx }}
258+
cxx_std: ${{ matrix.std }}
254259
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
255260
env_file: .env
256261

@@ -287,10 +292,14 @@ jobs:
287292
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
288293

289294
- name: Unit tests
290-
run: cmake --build build --target test
295+
run: >
296+
CI/dependencies/run.sh .env
297+
cmake --build build --target test
291298
292299
- name: Integration tests
293-
run: cmake --build build --target integrationtests
300+
run: >
301+
CI/dependencies/run.sh .env
302+
cmake --build build --target integrationtests
294303
295304
- name: Install
296305
run: cmake --build build --target install
@@ -313,7 +322,7 @@ jobs:
313322
run: ./build-downstream/bin/ShowActsVersion
314323

315324
macos:
316-
runs-on: macos-15
325+
runs-on: macos-26
317326
env:
318327
INSTALL_DIR: ${{ github.workspace }}/install_acts
319328
ACTS_LOG_FAILURE_THRESHOLD: WARNING
@@ -326,7 +335,7 @@ jobs:
326335
- name: Setup Xcode version
327336
uses: maxim-lobanov/setup-xcode@v1
328337
with:
329-
xcode-version: "16.3.0"
338+
xcode-version: "26.3.0"
330339

331340
- name: Install dependencies
332341
uses: ./.github/actions/dependencies
@@ -580,7 +589,7 @@ jobs:
580589
linux_ubuntu_python_wheel:
581590
runs-on: ubuntu-latest
582591
needs: [linux_ubuntu]
583-
container: ghcr.io/acts-project/ubuntu2404:83
592+
container: ghcr.io/acts-project/ubuntu2404:85
584593

585594
steps:
586595
- uses: actions/checkout@v6

.github/workflows/sonarcloud.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
sonarcloud:
99
name: SonarCloud
1010
runs-on: ubuntu-latest
11-
container: ghcr.io/acts-project/ubuntu2404:83
11+
container: ghcr.io/acts-project/ubuntu2404:85
1212
if: github.event.workflow_run.conclusion == 'success'
1313
steps:
1414
- name: Dump job context

.gitlab-ci.yml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ variables:
44
CCACHE_KEY_SUFFIX: r2
55
CTEST_OUTPUT_ON_FAILURE: 1
66

7-
SPACK_VERSION: v1.0.2
8-
SPACK_REPO_VERSION: v2025.07.0
7+
SPACK_VERSION: v1.1.1
8+
SPACK_REPO_VERSION: v2025.11.0
99

1010
LOCKFILE_CACHE_DIR: ${CI_PROJECT_DIR}/spack_lockfile_cache
1111

12-
DEPENDENCY_TAG: v19.0.0
12+
DEPENDENCY_TAG: v21.0.0
1313

1414
MODEL_STORAGE: ${CI_PROJECT_DIR}/ci_models
1515

@@ -45,7 +45,7 @@ variables:
4545

4646
build_gnn_cpu:
4747
stage: build
48-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:83
48+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:85
4949
tags:
5050
- large
5151

@@ -78,7 +78,7 @@ build_gnn_cpu:
7878

7979
build_gnn:
8080
stage: build
81-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:83
81+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:85
8282
tags:
8383
- large
8484

@@ -120,7 +120,7 @@ test_gnn_unittests:
120120
stage: test
121121
needs:
122122
- build_gnn
123-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:83
123+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:85
124124
tags:
125125
- docker-gpu-nvidia
126126

@@ -144,7 +144,7 @@ test_gnn_python:
144144
stage: test
145145
needs:
146146
- build_gnn
147-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:83
147+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_gnn:85
148148
tags:
149149
- docker-gpu-nvidia
150150

@@ -175,7 +175,7 @@ test_gnn_python:
175175

176176
build_gnn_tensorrt:
177177
stage: build
178-
image: ghcr.io/acts-project/ubuntu2404_tensorrt:83
178+
image: ghcr.io/acts-project/ubuntu2404_tensorrt:85
179179

180180
cache:
181181
- !reference [.spack_cache, cache]
@@ -200,7 +200,7 @@ build_gnn_tensorrt:
200200

201201
build_linux_ubuntu:
202202
stage: build
203-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:83
203+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:85
204204

205205
cache:
206206
- !reference [.ccache_base, cache]
@@ -261,7 +261,7 @@ build_linux_ubuntu:
261261

262262
linux_test_examples:
263263
stage: test
264-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:83
264+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:85
265265
needs: [build_linux_ubuntu]
266266

267267
cache:
@@ -287,7 +287,7 @@ linux_test_examples:
287287
linux_physmon:
288288
stage: test
289289
needs: [build_linux_ubuntu]
290-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:83
290+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404:85
291291

292292
artifacts:
293293
when: always
@@ -375,20 +375,20 @@ linux_physmon:
375375
after_script:
376376
- !reference [.spack_cleanup, after_script]
377377

378-
linux_ubuntu_2404_clang19:
378+
linux_ubuntu_2404_clang22:
379379
extends: .linux_ubuntu_extra
380380
variables:
381-
CXX: clang++-19
382-
CXXSTD: 20
383-
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_clang19:83
381+
CXX: clang++-22
382+
CXXSTD: 23
383+
image: registry.cern.ch/ghcr.io/acts-project/ubuntu2404_clang22:85
384384

385385

386386
######################
387387
### LCG JOB MATRIX ###
388388
######################
389389

390390
.lcg_base_job:
391-
image: registry.cern.ch/ghcr.io/acts-project/${OS}-base:83
391+
image: registry.cern.ch/ghcr.io/acts-project/${OS}-base:85
392392
stage: build
393393
tags:
394394
- cvmfs

0 commit comments

Comments
 (0)