From 759a904ca3e5ff28843185afe9e9f02ae9e0bef0 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 22 Sep 2025 12:53:42 +0200 Subject: [PATCH 01/16] First attempt at updating to spack v1 --- .gitlab/jobs/corona.yml | 4 ++-- .gitlab/jobs/lassen.yml | 8 -------- .gitlab/jobs/tioga.yml | 2 +- .gitlab/jobs/tuolumne.yml | 2 +- .uberenv_config.json | 21 ++++++++++----------- scripts/radiuss-spack-configs | 2 +- scripts/uberenv | 2 +- 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/.gitlab/jobs/corona.yml b/.gitlab/jobs/corona.yml index 0d5de5629..66aef7e79 100644 --- a/.gitlab/jobs/corona.yml +++ b/.gitlab/jobs/corona.yml @@ -14,11 +14,11 @@ variables: INCLUDED_FILE_CANNOT_BE_EMPTY: "True" -# The correct way is now to use rocmcc compiler directly as done in shared spec +# The correct way is now to use llvm-amdgpu compiler directly as done in shared spec ### Template for extra jobs defined by the project. #clang14.0.6-rocm5.4.1: # variables: -# SPEC: "%clang@14.0.6 +rocm amdgpu_target=gfx906 ^hip@5.4.1 " +# SPEC: "%llvm@14.0.6 +rocm amdgpu_target=gfx906 ^hip@5.4.1 " # extends: .job_on_corona master: diff --git a/.gitlab/jobs/lassen.yml b/.gitlab/jobs/lassen.yml index fcc3d41bb..255d1a9ff 100644 --- a/.gitlab/jobs/lassen.yml +++ b/.gitlab/jobs/lassen.yml @@ -23,14 +23,6 @@ variables: # No overridden jobs so far. -# Allow failure due to weird error only with XL on Lassen. Passes in debug mode. -xl_2023_06_28_gcc_11_2_1_cuda_11_8_0: - variables: - SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda %xl@=16.1.1.14.cuda.11.8.0.gcc.11.2.1 ^cuda@11.8.0+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}" - MODULE_LIST: "cuda/11.8.0" - extends: .job_on_lassen - allow_failure: true - ############ # Extra jobs ############ diff --git a/.gitlab/jobs/tioga.yml b/.gitlab/jobs/tioga.yml index 194017fb6..8ca680248 100644 --- a/.gitlab/jobs/tioga.yml +++ b/.gitlab/jobs/tioga.yml @@ -36,7 +36,7 @@ cce_18_0_1: # We do not recommend using ${PROJECT__VARIANTS} and # ${PROJECT__DEPS} in the extra jobs. There is no reason not to fully # describe the spec here. -# The correct way is now to use rocmcc compiler directly as done in shared spec +# The correct way is now to use llvm-amdgpu compiler directly as done in shared spec # As long as cce 18 fails, we keep this one. cce_17_0_1: diff --git a/.gitlab/jobs/tuolumne.yml b/.gitlab/jobs/tuolumne.yml index 096e1fba0..a0048363f 100644 --- a/.gitlab/jobs/tuolumne.yml +++ b/.gitlab/jobs/tuolumne.yml @@ -36,7 +36,7 @@ cce_18_0_1: # We do not recommend using ${PROJECT__VARIANTS} and # ${PROJECT__DEPS} in the extra jobs. There is no reason not to fully # describe the spec here. -# The correct way is now to use rocmcc compiler directly as done in shared spec +# The correct way is now to use llvm-amdgpu compiler directly as done in shared spec # As long as cce 18 fails, we keep this one. cce_19_0_0: diff --git a/.uberenv_config.json b/.uberenv_config.json index 8bb8610ad..d87ee8445 100755 --- a/.uberenv_config.json +++ b/.uberenv_config.json @@ -1,12 +1,11 @@ { - "package_name" : "caliper", - "package_version" : "master", - "package_source_dir" : "../..", - "package_final_phase" : "initconfig", - "spack_url": "https://github.com/spack/spack.git", - "spack_commit": "280017a9ba3f6a969743deca0eebc96e7c0e5cfd", - "spack_configs_path": "scripts/radiuss-spack-configs", - "spack_packages_path": "scripts/radiuss-spack-configs/packages", - "spack_concretizer": "clingo", - "spack_setup_clingo": false - } +"package_name" : "caliper", +"package_version" : "master", +"package_final_phase" : "initconfig", +"package_source_dir" : "../..", +"spack_url": "https://github.com/spack/spack.git", +"spack_branch": "v1.0.2", +"spack_configs_path": "scripts/radiuss-spack-configs", +"spack_packages_path": "scripts/radiuss-spack-configs/spack_repo/llnl_radiuss/packages", +"spack_setup_clingo": false +} diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index dcf807584..53ae62ac2 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit dcf807584584cb1ca4dca1d5cbf8b320bf73567e +Subproject commit 53ae62ac26f6306c9fa97ae708129c736f5d18e8 diff --git a/scripts/uberenv b/scripts/uberenv index 6ba67dcbd..b03569845 160000 --- a/scripts/uberenv +++ b/scripts/uberenv @@ -1 +1 @@ -Subproject commit 6ba67dcbd7ccbb9c03920b89de19ac959e2c3bdd +Subproject commit b03569845051ce2ec396a1dfba5ecc8142c7d657 From b98e2e6a2c3204bde796452c73f306ec94100a0d Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 22 Sep 2025 14:11:44 +0200 Subject: [PATCH 02/16] From RSC: stop including compilers.yaml in environments --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 53ae62ac2..3a41a0f2c 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 53ae62ac26f6306c9fa97ae708129c736f5d18e8 +Subproject commit 3a41a0f2c01f84cf309d01cac639d0320640bb90 From 7b5c7b1173fda5de81d174ce534eeac18c4a132d Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 22 Sep 2025 22:12:23 +0200 Subject: [PATCH 03/16] Fix FindLibunwind to prefer already defined libunwind location --- cmake/FindLibunwind.cmake | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/cmake/FindLibunwind.cmake b/cmake/FindLibunwind.cmake index 04f325d92..7868138f5 100644 --- a/cmake/FindLibunwind.cmake +++ b/cmake/FindLibunwind.cmake @@ -3,20 +3,38 @@ # # LIBUNWIND_PREFIX - Set to the libunwind installation directory # -# LIBUNWIND_INCLUDE_DIR - Path to libunwind.h +# LIBUNWIND_INCLUDE_DIRS - Path to libunwind.h # LIBUNWIND_LIBRARIES - List of libraries for using libunwind # LIBUNWIND_FOUND - True if libunwind was found -find_path(LIBUNWIND_PREFIX - include/libunwind.h) +if(LIBUNWIND_PREFIX) + # When prefix is explicitly provided, only look there + find_library(LIBUNWIND_LIBRARIES + NAMES unwind + PATHS ${LIBUNWIND_PREFIX}/lib + NO_DEFAULT_PATH) -find_library(LIBUNWIND_LIBRARIES - NAMES unwind - HINTS ${LIBUNWIND_PREFIX}/lib) + find_path(LIBUNWIND_INCLUDE_DIRS + NAMES libunwind.h + PATHS ${LIBUNWIND_PREFIX}/include + NO_DEFAULT_PATH) -find_path(LIBUNWIND_INCLUDE_DIRS - NAMES libunwind.h - HINTS ${LIBUNWIND_PREFIX}/include) + if(NOT LIBUNWIND_LIBRARIES OR NOT LIBUNWIND_INCLUDE_DIRS) + message(WARNING "LIBUNWIND_PREFIX was set to '${LIBUNWIND_PREFIX}' but libunwind was not found there") + endif() +else() + # Try to find libunwind in standard locations + find_path(LIBUNWIND_PREFIX + include/libunwind.h) + + find_library(LIBUNWIND_LIBRARIES + NAMES unwind + HINTS ${LIBUNWIND_PREFIX}/lib) + + find_path(LIBUNWIND_INCLUDE_DIRS + NAMES libunwind.h + HINTS ${LIBUNWIND_PREFIX}/include) +endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Libunwind DEFAULT_MSG LIBUNWIND_LIBRARIES LIBUNWIND_INCLUDE_DIRS) From bf59c27f781f3cff0469773166121a0d5c9573e1 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Fri, 26 Sep 2025 12:33:39 +0200 Subject: [PATCH 04/16] RSC Update --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 3a41a0f2c..3a1c20fb0 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 3a41a0f2c01f84cf309d01cac639d0320640bb90 +Subproject commit 3a1c20fb03708200edbfe525020db8a41f62f200 From 1eb06e7eef4e2f1d655b2c6e80c0391e6c44ff61 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Fri, 26 Sep 2025 14:52:18 +0200 Subject: [PATCH 05/16] CI: Better handling of machine outage --- .gitlab-ci.yml | 4 +-- .gitlab/subscribed-pipelines.yml | 43 +++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94ea6a20a..c38246566 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,7 +76,7 @@ stages: include: - local: '.gitlab/custom-jobs-and-variables.yml' - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.06.0' + ref: 'v2025.09.0' file: 'pipelines/${CI_MACHINE}.yml' - artifact: '${CI_MACHINE}-jobs.yml' job: 'generate-job-lists' @@ -90,7 +90,7 @@ include: file: 'id_tokens.yml' # [Optional] checks preliminary to running the actual CI test - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.06.0' + ref: 'v2025.09.0' file: 'utilities/preliminary-ignore-draft-pr.yml' # pipelines subscribed by the project - local: '.gitlab/subscribed-pipelines.yml' diff --git a/.gitlab/subscribed-pipelines.yml b/.gitlab/subscribed-pipelines.yml index f58680a27..3998590f7 100644 --- a/.gitlab/subscribed-pipelines.yml +++ b/.gitlab/subscribed-pipelines.yml @@ -50,64 +50,105 @@ generate-job-lists: - tioga-jobs.yml - tuolumne-jobs.yml - # DANE dane-up-check: variables: CI_MACHINE: "dane" extends: [.machine-check] + rules: + # Runs except if we explicitly deactivate dane by variable. + - if: '$ON_DANE == "OFF"' + when: never + - when: on_success dane-build-and-test: variables: CI_MACHINE: "dane" needs: [dane-up-check, generate-job-lists] extends: [.build-and-test] + rules: + # Runs except if we explicitly deactivate dane by variable. + - if: '$ON_DANE == "OFF"' + when: never + - when: on_success # CORONA corona-up-check: variables: CI_MACHINE: "corona" extends: [.machine-check] + rules: + - if: '$ON_CORONA == "OFF"' + when: never + - when: on_success corona-build-and-test: variables: CI_MACHINE: "corona" needs: [corona-up-check, generate-job-lists] extends: [.build-and-test] + rules: + - if: '$ON_CORONA == "OFF"' + when: never + - when: on_success # TIOGA tioga-up-check: variables: CI_MACHINE: "tioga" extends: [.machine-check] + rules: + - if: '$ON_TIOGA == "OFF"' + when: never + - when: on_success tioga-build-and-test: variables: CI_MACHINE: "tioga" needs: [tioga-up-check, generate-job-lists] extends: [.build-and-test] + rules: + - if: '$ON_TIOGA == "OFF"' + when: never + - when: on_success # TUOLUMNE tuolumne-up-check: variables: CI_MACHINE: "tuolumne" extends: [.machine-check] + rules: + - if: '$ON_TUOLUMNE == "OFF"' + when: never + - when: on_success tuolumne-build-and-test: variables: CI_MACHINE: "tuolumne" needs: [tuolumne-up-check, generate-job-lists] extends: [.build-and-test] + rules: + - if: '$ON_TUOLUMNE == "OFF"' + when: never + - when: on_success # LASSEN lassen-up-check: variables: CI_MACHINE: "lassen" extends: [.machine-check] + rules: + - if: '$ON_LASSEN == "OFF"' + when: never + - when: on_success lassen-build-and-test: variables: CI_MACHINE: "lassen" needs: [lassen-up-check, generate-job-lists] extends: [.build-and-test] + rules: + - if: '$ON_LASSEN == "OFF"' + when: never + - when: on_success From bc52832afea9d4d41ab2d010f706be7aa59c97d4 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 29 Sep 2025 09:50:07 +0200 Subject: [PATCH 06/16] From RSC: only depends on fortran when +fortran --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 3a1c20fb0..99d096056 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 3a1c20fb03708200edbfe525020db8a41f62f200 +Subproject commit 99d096056b045af3b3264e61ce1cf5c0b23d472d From 573a995dcea57e68cc6b344d82250fa8d91294d0 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:29:53 +0200 Subject: [PATCH 07/16] Point at uberenv@main with merged changes. --- scripts/uberenv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/uberenv b/scripts/uberenv index b03569845..eb1853586 160000 --- a/scripts/uberenv +++ b/scripts/uberenv @@ -1 +1 @@ -Subproject commit b03569845051ce2ec396a1dfba5ecc8142c7d657 +Subproject commit eb1853586821360613f1c6c415ebf65d370a47e7 From 1d0181a0d78415fd97079f3e86dd91561575165c Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:32:14 +0200 Subject: [PATCH 08/16] Update Radiuss Spack Configs --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 99d096056..0bdad3500 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 99d096056b045af3b3264e61ce1cf5c0b23d472d +Subproject commit 0bdad3500b5a18fd57b9f83a1eec9c15dd3b4b50 From b377bf2d6162d251ff31e5d7e4219d8f9d6900c5 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Tue, 30 Sep 2025 10:15:35 +0200 Subject: [PATCH 09/16] Point at new RSC release --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 0bdad3500..b39030f68 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 0bdad3500b5a18fd57b9f83a1eec9c15dd3b4b50 +Subproject commit b39030f680263f6c15c7dfe510fa6ffdb9482136 From a059a70f516568760bb9b6e07bd2379d952750c0 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:54:35 +0200 Subject: [PATCH 10/16] Update RSC with packages and configs updates --- scripts/radiuss-spack-configs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index b39030f68..4dac97ec2 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit b39030f680263f6c15c7dfe510fa6ffdb9482136 +Subproject commit 4dac97ec251994e9c4f30e4eb29f5377b8956166 From 5b8b624483d6c9bf1e8bfe319a654df2c92c21e3 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 1 Oct 2025 16:14:37 +0200 Subject: [PATCH 11/16] Add Matrix --- .gitlab-ci.yml | 4 ++-- .gitlab/custom-jobs-and-variables.yml | 10 ++++++++++ .gitlab/jobs/matrix.yml | 12 ++++++++++++ .gitlab/subscribed-pipelines.yml | 24 ++++++++++++++++++++++++ scripts/radiuss-spack-configs | 2 +- 5 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 .gitlab/jobs/matrix.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c38246566..9fcd26990 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,7 +76,7 @@ stages: include: - local: '.gitlab/custom-jobs-and-variables.yml' - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.09.0' + ref: 'v2025.09.1' file: 'pipelines/${CI_MACHINE}.yml' - artifact: '${CI_MACHINE}-jobs.yml' job: 'generate-job-lists' @@ -90,7 +90,7 @@ include: file: 'id_tokens.yml' # [Optional] checks preliminary to running the actual CI test - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.09.0' + ref: 'v2025.09.1' file: 'utilities/preliminary-ignore-draft-pr.yml' # pipelines subscribed by the project - local: '.gitlab/subscribed-pipelines.yml' diff --git a/.gitlab/custom-jobs-and-variables.yml b/.gitlab/custom-jobs-and-variables.yml index 6c7ef28b9..d5a3c164b 100644 --- a/.gitlab/custom-jobs-and-variables.yml +++ b/.gitlab/custom-jobs-and-variables.yml @@ -22,6 +22,16 @@ variables: # Project specific deps for dane PROJECT_DANE_DEPS: "" +# Matrix +# Arguments for top level allocation + MATRIX_SHARED_ALLOC: "--exclusive --time=10 --nodes=1" +# Arguments for job level allocation + MATRIX_JOB_ALLOC: "--overlap --nodes=1" +# Project specific variants for matrix + PROJECT_MATRIX_VARIANTS: "+tests ~papi +cuda cuda_arch=75" +# Project specific deps for matrix + PROJECT_MATRIX_DEPS: "" + # Corona # Arguments for top level allocation CORONA_SHARED_ALLOC: "--exclusive --time-limit=8m --nodes=1 -o per-resource.count=2" diff --git a/.gitlab/jobs/matrix.yml b/.gitlab/jobs/matrix.yml new file mode 100644 index 000000000..0b2ae7d44 --- /dev/null +++ b/.gitlab/jobs/matrix.yml @@ -0,0 +1,12 @@ +############################################################################## +# Copyright (c) 2022-25, Lawrence Livermore National Security, LLC and RADIUSS +# project contributors. See the COPYRIGHT file for details. +# +# SPDX-License-Identifier: (MIT) +############################################################################## + +# Override reproducer section to define project specific variables. +.matrix_reproducer_vars: + script: + - !reference [.reproducer_vars, script] + diff --git a/.gitlab/subscribed-pipelines.yml b/.gitlab/subscribed-pipelines.yml index 3998590f7..fe00fae03 100644 --- a/.gitlab/subscribed-pipelines.yml +++ b/.gitlab/subscribed-pipelines.yml @@ -38,6 +38,7 @@ generate-job-lists: LOCAL_JOBS_PATH: ".gitlab/jobs" script: - cat ${RADIUSS_JOBS_PATH}/dane.yml ${LOCAL_JOBS_PATH}/dane.yml > dane-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/matrix.yml ${LOCAL_JOBS_PATH}/matrix.yml > matrix-jobs.yml - cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-jobs.yml - cat ${RADIUSS_JOBS_PATH}/corona.yml ${LOCAL_JOBS_PATH}/corona.yml > corona-jobs.yml - cat ${RADIUSS_JOBS_PATH}/tioga.yml ${LOCAL_JOBS_PATH}/tioga.yml > tioga-jobs.yml @@ -45,6 +46,7 @@ generate-job-lists: artifacts: paths: - dane-jobs.yml + - matrix-jobs.yml - lassen-jobs.yml - corona-jobs.yml - tioga-jobs.yml @@ -72,6 +74,28 @@ dane-build-and-test: when: never - when: on_success +# MATRIX +matrix-up-check: + variables: + CI_MACHINE: "matrix" + extends: [.machine-check] + rules: + # Runs except if we explicitly deactivate matrix by variable. + - if: '$ON_MATRIX == "OFF"' + when: never + - when: on_success + +matrix-build-and-test: + variables: + CI_MACHINE: "matrix" + needs: [matrix-up-check, generate-job-lists] + extends: [.build-and-test] + rules: + # Runs except if we explicitly deactivate matrix by variable. + - if: '$ON_MATRIX == "OFF"' + when: never + - when: on_success + # CORONA corona-up-check: variables: diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 4dac97ec2..2b1f50d13 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 4dac97ec251994e9c4f30e4eb29f5377b8956166 +Subproject commit 2b1f50d135a497b06e29b9065fc50baf9766283c From 91f29528ea0bac0de0d6b78d43bd48a7bddbf6c5 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 11:35:34 +0100 Subject: [PATCH 12/16] Migrate CI to use GitLab Components from radiuss-shared-ci This commit migrates the CI configuration from template-based approach to GitLab CI Components: - Split custom-jobs-and-variables.yml into custom-jobs.yml and custom-variables.yml - Updated .gitlab-ci.yml to use radiuss-shared-ci components - Removed BUILD_ROOT variable (never actually used) - Removed subscribed-pipelines.yml (replaced by inline machine definitions) - Added support for all machines: dane, matrix, corona, tioga, tuolumne, lassen --- .gitlab-ci.yml | 221 +++++++++++++++++++++++++++---- .gitlab/custom-jobs.yml | 37 ++++++ .gitlab/custom-variables.yml | 67 ++++++++++ .gitlab/subscribed-pipelines.yml | 178 ------------------------- 4 files changed, 301 insertions(+), 202 deletions(-) create mode 100644 .gitlab/custom-jobs.yml create mode 100644 .gitlab/custom-variables.yml delete mode 100644 .gitlab/subscribed-pipelines.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9fcd26990..1dd4f824c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,10 +41,6 @@ variables: GIT_SUBMODULE_PATHS: scripts/radiuss-spack-configs scripts/uberenv ##### PROJECT VARIABLES -# We build the projects in the CI clone directory. Used in -# script/gitlab/build-and-test.sh script. -# TODO: add a clean-up mechanism. - BUILD_ROOT: ${CI_PROJECT_DIR} ##### SHARED_CI CONFIGURATION # Required information about GitHub repository @@ -58,39 +54,216 @@ variables: expand: false # Override the pattern describing branches that will skip the "draft PR filter # test". Add protected branches here. See default value in -# preliminary-ignore-draft-pr.yml. +# utility-draft-pr-filter component. ALWAYS_RUN_PATTERN: "^develop$|^master$|^v[0-9.]*$|^releases/$" # We organize the build-and-test stage with sub-pipelines. Each sub-pipeline # corresponds to a test batch on a given machine. # High level stages +# IMPORTANT: You must define stages yourself to allow customization. +# The following stages are REQUIRED by RADIUSS Shared CI components: stages: - - prerequisites - - build-and-test + - prerequisites # Required: machine availability checks + - build-and-test # Required: build and test jobs -# Template for jobs triggering a build-and-test sub-pipeline: -.build-and-test: +############################################################################### +# INCLUDES +############################################################################### + +include: + # Sets ID tokens for every job using `default:` + - project: 'lc-templates/id_tokens' + file: 'id_tokens.yml' + + # Base pipeline templates and utilities + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@woptim/migrate-to-components + inputs: + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + github_token: $GITHUB_TOKEN + + # Draft PR filter + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/utility-draft-pr-filter@woptim/migrate-to-components + inputs: + github_token: $GITHUB_TOKEN + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + always_run_pattern: $ALWAYS_RUN_PATTERN + + # Local custom variables (used for component inputs and forwarded to child pipelines) + - local: '.gitlab/custom-variables.yml' + +############################################################################### +# MACHINE PIPELINES +############################################################################### +# Note: .machine-check template is provided by the base-pipeline component +# and includes better error handling, validation, and GitHub status reporting. +# Trigger a build-and-test pipeline for each machine. +# Comment out the machine blocks you don't need. + +# One job to generate the job list for all the subpipelines +generate-job-lists: + stage: prerequisites + tags: [shell, oslic] + variables: + RADIUSS_JOBS_PATH: "scripts/radiuss-spack-configs/gitlab/radiuss-jobs" + LOCAL_JOBS_PATH: ".gitlab/jobs" + script: + - cat ${RADIUSS_JOBS_PATH}/dane.yml ${LOCAL_JOBS_PATH}/dane.yml > dane-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/matrix.yml ${LOCAL_JOBS_PATH}/matrix.yml > matrix-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/corona.yml ${LOCAL_JOBS_PATH}/corona.yml > corona-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/tioga.yml ${LOCAL_JOBS_PATH}/tioga.yml > tioga-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/tuolumne.yml ${LOCAL_JOBS_PATH}/tuolumne.yml > tuolumne-jobs.yml + - cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-jobs.yml + artifacts: + paths: + - dane-jobs.yml + - matrix-jobs.yml + - corona-jobs.yml + - tioga-jobs.yml + - tuolumne-jobs.yml + - lassen-jobs.yml + +# DANE +dane-up-check: + extends: [.dane, .machine-check] + +dane-build-and-test: stage: build-and-test + extends: [.dane] + needs: [dane-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs-and-variables.yml' - - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.09.1' - file: 'pipelines/${CI_MACHINE}.yml' - - artifact: '${CI_MACHINE}-jobs.yml' + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + shared_alloc: $DANE_SHARED_ALLOC + job_alloc: $DANE_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'dane-jobs.yml' job: 'generate-job-lists' strategy: depend forward: pipeline_variables: true -include: - # Sets ID tokens for every job using `default:` - - project: 'lc-templates/id_tokens' - file: 'id_tokens.yml' - # [Optional] checks preliminary to running the actual CI test - - project: 'radiuss/radiuss-shared-ci' - ref: 'v2025.09.1' - file: 'utilities/preliminary-ignore-draft-pr.yml' - # pipelines subscribed by the project - - local: '.gitlab/subscribed-pipelines.yml' +# MATRIX +matrix-up-check: + extends: [.matrix, .machine-check] + +matrix-build-and-test: + stage: build-and-test + extends: [.matrix] + needs: [matrix-up-check, generate-job-lists] + trigger: + include: + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + shared_alloc: $MATRIX_SHARED_ALLOC + job_alloc: $MATRIX_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'matrix-jobs.yml' + job: 'generate-job-lists' + strategy: depend + forward: + pipeline_variables: true + +# CORONA +corona-up-check: + extends: [.corona, .machine-check] + +corona-build-and-test: + stage: build-and-test + extends: [.corona] + needs: [corona-up-check, generate-job-lists] + trigger: + include: + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + shared_alloc: $CORONA_SHARED_ALLOC + job_alloc: $CORONA_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'corona-jobs.yml' + job: 'generate-job-lists' + strategy: depend + forward: + pipeline_variables: true + +# TIOGA +tioga-up-check: + extends: [.tioga, .machine-check] + +tioga-build-and-test: + stage: build-and-test + extends: [.tioga] + needs: [tioga-up-check, generate-job-lists] + trigger: + include: + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + shared_alloc: $TIOGA_SHARED_ALLOC + job_alloc: $TIOGA_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'tioga-jobs.yml' + job: 'generate-job-lists' + strategy: depend + forward: + pipeline_variables: true + +# TUOLUMNE +tuolumne-up-check: + extends: [.tuolumne, .machine-check] + +tuolumne-build-and-test: + stage: build-and-test + extends: [.tuolumne] + needs: [tuolumne-up-check, generate-job-lists] + trigger: + include: + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + shared_alloc: $TUOLUMNE_SHARED_ALLOC + job_alloc: $TUOLUMNE_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'tuolumne-jobs.yml' + job: 'generate-job-lists' + strategy: depend + forward: + pipeline_variables: true + +# LASSEN +lassen-up-check: + extends: [.lassen, .machine-check] + +lassen-build-and-test: + stage: build-and-test + extends: [.lassen] + needs: [lassen-up-check, generate-job-lists] + trigger: + include: + - local: '.gitlab/custom-jobs.yml' + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/lassen-pipeline@woptim/migrate-to-components + inputs: + job_cmd: $JOB_CMD + job_alloc: $LASSEN_JOB_ALLOC + github_project_name: $GITHUB_PROJECT_NAME + github_project_org: $GITHUB_PROJECT_ORG + - artifact: 'lassen-jobs.yml' + job: 'generate-job-lists' + strategy: depend + forward: + pipeline_variables: true diff --git a/.gitlab/custom-jobs.yml b/.gitlab/custom-jobs.yml new file mode 100644 index 000000000..4257a9d3b --- /dev/null +++ b/.gitlab/custom-jobs.yml @@ -0,0 +1,37 @@ +############################################################################### +# Copyright (c) 2022-25, Lawrence Livermore National Security, LLC and RADIUSS +# project contributors. See the COPYRIGHT file for details. +# +# SPDX-License-Identifier: (MIT) +############################################################################### + +# This file defines JOB TEMPLATES ONLY. +# It is included in CHILD pipelines (via trigger: include:) to provide +# templates that your jobs can extend. + +############################################################################### +# JOB CUSTOMIZATION TEMPLATES +############################################################################### + +# Configuration shared by build and test jobs specific to this project. +# Not all configuration can be shared. Here projects can fine tune the +# CI behavior. +.custom_job: + artifacts: + reports: + junit: junit.xml + name: "${CI_PROJECT_NAME}-${CI_MACHINE}-${CI_JOB_NAME}-${CI_PIPELINE_ID}" + paths: + - ./*.cmake + +.reproducer_vars: + script: + - | + echo -e " + # Required variables \n + export MODULE_LIST=\"${MODULE_LIST}\" \n + export SPEC=\"${SPEC//\"/\\\"}\" \n + # Allow to set job script for debugging (only this differs from CI) \n + export DEBUG_MODE=true \n + # Using the CI build cache is optional and requires a token. Set it like so: \n + # export REGISTRY_TOKEN=\"\" \n" diff --git a/.gitlab/custom-variables.yml b/.gitlab/custom-variables.yml new file mode 100644 index 000000000..118d3089c --- /dev/null +++ b/.gitlab/custom-variables.yml @@ -0,0 +1,67 @@ +############################################################################### +# Copyright (c) 2022-25, Lawrence Livermore National Security, LLC and RADIUSS +# project contributors. See the COPYRIGHT file for details. +# +# SPDX-License-Identifier: (MIT) +############################################################################### + +# This file defines project-specific VARIABLES ONLY. +# It is included in the PARENT pipeline (.gitlab-ci.yml) to provide +# variables that are passed as component inputs and forwarded to child pipelines. + +############################################################################### +# MACHINE-SPECIFIC ALLOCATION VARIABLES +############################################################################### + +variables: + # Allocation name (used for shared allocations) + ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID} + + # Dane (SLURM) allocation settings + DANE_SHARED_ALLOC: "--exclusive --reservation=ci --time=10 --nodes=1" + DANE_JOB_ALLOC: "--reservation=ci --overlap --nodes=1" + # Project specific variants for dane + PROJECT_DANE_VARIANTS: "+tests ~papi" + # Project specific deps for dane + PROJECT_DANE_DEPS: "" + + # Matrix (SLURM) allocation settings + MATRIX_SHARED_ALLOC: "--exclusive --time=10 --nodes=1" + MATRIX_JOB_ALLOC: "--overlap --nodes=1" + # Project specific variants for matrix + PROJECT_MATRIX_VARIANTS: "+tests ~papi +cuda cuda_arch=75" + # Project specific deps for matrix + PROJECT_MATRIX_DEPS: "" + + # Corona (flux) allocation settings + CORONA_SHARED_ALLOC: "--exclusive --time-limit=8m --nodes=1 -o per-resource.count=2" + CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for corona + PROJECT_CORONA_VARIANTS: "+tests" + # Project specific deps for corona + PROJECT_CORONA_DEPS: "" + + # Tioga (flux) allocation settings + TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=15m --nodes=1 -o per-resource.count=2" + TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for tioga + PROJECT_TIOGA_VARIANTS: "+tests" + # Project specific deps for tioga + PROJECT_TIOGA_DEPS: "" + + # Tuolumne (flux) allocation settings + TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=15m --nodes=1 -o per-resource.count=2" + TUOLUMNE_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for tuolumne + PROJECT_TUOLUMNE_VARIANTS: "+tests" + # Project specific deps for tuolumne + PROJECT_TUOLUMNE_DEPS: "" + + # Lassen (LSF) allocation settings + # Lassen uses a different job scheduler (spectrum lsf) that does not + # allow pre-allocation the same way slurm does. + LASSEN_JOB_ALLOC: "1 -W 10 -q pci" + # Project specific variants for lassen + PROJECT_LASSEN_VARIANTS: " +tests" + # Project specific deps for lassen + PROJECT_LASSEN_DEPS: "^adiak ~mpi" diff --git a/.gitlab/subscribed-pipelines.yml b/.gitlab/subscribed-pipelines.yml deleted file mode 100644 index fe00fae03..000000000 --- a/.gitlab/subscribed-pipelines.yml +++ /dev/null @@ -1,178 +0,0 @@ -############################################################################### -# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS -# project contributors. See the COPYRIGHT file for details. -# -# SPDX-License-Identifier: (MIT) -############################################################################### - -# The template job to test whether a machine is up. -# Expects CI_MACHINE defined to machine name. -.machine-check: - stage: prerequisites - tags: [shell, oslic] - variables: - GIT_STRATEGY: none - script: - - | - if [[ $(jq '.[env.CI_MACHINE].total_nodes_up' /usr/global/tools/lorenz/data/loginnodeStatus) == 0 ]] - then - echo -e "\e[31mNo node available on ${CI_MACHINE}\e[0m" - curl --url "https://api.github.com/repos/${GITHUB_PROJECT_ORG}/${GITHUB_PROJECT_NAME}/statuses/${CI_COMMIT_SHA}" \ - --header 'Content-Type: application/json' \ - --header "authorization: Bearer ${GITHUB_TOKEN}" \ - --data "{ \"state\": \"failure\", \"target_url\": \"${CI_PIPELINE_URL}\", \"description\": \"GitLab ${CI_MACHINE} down\", \"context\": \"ci/gitlab/${CI_MACHINE}\" }" - exit 1 - fi - -### -# Trigger a build-and-test pipeline for a machine. -# Comment the jobs for machines you don’t need. -### - -# One job to generate the job list for all the subpipelines -generate-job-lists: - stage: prerequisites - tags: [shell, oslic] - variables: - RADIUSS_JOBS_PATH: "scripts/radiuss-spack-configs/gitlab/radiuss-jobs" - LOCAL_JOBS_PATH: ".gitlab/jobs" - script: - - cat ${RADIUSS_JOBS_PATH}/dane.yml ${LOCAL_JOBS_PATH}/dane.yml > dane-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/matrix.yml ${LOCAL_JOBS_PATH}/matrix.yml > matrix-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/corona.yml ${LOCAL_JOBS_PATH}/corona.yml > corona-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/tioga.yml ${LOCAL_JOBS_PATH}/tioga.yml > tioga-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/tuolumne.yml ${LOCAL_JOBS_PATH}/tuolumne.yml > tuolumne-jobs.yml - artifacts: - paths: - - dane-jobs.yml - - matrix-jobs.yml - - lassen-jobs.yml - - corona-jobs.yml - - tioga-jobs.yml - - tuolumne-jobs.yml - -# DANE -dane-up-check: - variables: - CI_MACHINE: "dane" - extends: [.machine-check] - rules: - # Runs except if we explicitly deactivate dane by variable. - - if: '$ON_DANE == "OFF"' - when: never - - when: on_success - -dane-build-and-test: - variables: - CI_MACHINE: "dane" - needs: [dane-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - # Runs except if we explicitly deactivate dane by variable. - - if: '$ON_DANE == "OFF"' - when: never - - when: on_success - -# MATRIX -matrix-up-check: - variables: - CI_MACHINE: "matrix" - extends: [.machine-check] - rules: - # Runs except if we explicitly deactivate matrix by variable. - - if: '$ON_MATRIX == "OFF"' - when: never - - when: on_success - -matrix-build-and-test: - variables: - CI_MACHINE: "matrix" - needs: [matrix-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - # Runs except if we explicitly deactivate matrix by variable. - - if: '$ON_MATRIX == "OFF"' - when: never - - when: on_success - -# CORONA -corona-up-check: - variables: - CI_MACHINE: "corona" - extends: [.machine-check] - rules: - - if: '$ON_CORONA == "OFF"' - when: never - - when: on_success - -corona-build-and-test: - variables: - CI_MACHINE: "corona" - needs: [corona-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - - if: '$ON_CORONA == "OFF"' - when: never - - when: on_success - -# TIOGA -tioga-up-check: - variables: - CI_MACHINE: "tioga" - extends: [.machine-check] - rules: - - if: '$ON_TIOGA == "OFF"' - when: never - - when: on_success - -tioga-build-and-test: - variables: - CI_MACHINE: "tioga" - needs: [tioga-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - - if: '$ON_TIOGA == "OFF"' - when: never - - when: on_success - -# TUOLUMNE -tuolumne-up-check: - variables: - CI_MACHINE: "tuolumne" - extends: [.machine-check] - rules: - - if: '$ON_TUOLUMNE == "OFF"' - when: never - - when: on_success - -tuolumne-build-and-test: - variables: - CI_MACHINE: "tuolumne" - needs: [tuolumne-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - - if: '$ON_TUOLUMNE == "OFF"' - when: never - - when: on_success - -# LASSEN -lassen-up-check: - variables: - CI_MACHINE: "lassen" - extends: [.machine-check] - rules: - - if: '$ON_LASSEN == "OFF"' - when: never - - when: on_success - -lassen-build-and-test: - variables: - CI_MACHINE: "lassen" - needs: [lassen-up-check, generate-job-lists] - extends: [.build-and-test] - rules: - - if: '$ON_LASSEN == "OFF"' - when: never - - when: on_success - From b09c45a02c4d3169424e9d31fcddf5e4f97f2be1 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:52:59 +0100 Subject: [PATCH 13/16] Cleanup CI config + remove lassen --- .gitlab-ci.yml | 72 +++++++++++++++----------------------------------- 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1dd4f824c..48159152a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,38 +11,36 @@ # at Lawrence Livermore National Laboratory (LLNL). # This entire pipeline is LLNL-specific # -# Important note: This file is a template provided by llnl/radiuss-shared-ci. -# Remains to set variable values, change the reference to the radiuss-shared-ci -# repo, opt-in and out optional features. The project can then extend it with -# additional stages. +# This file uses GitLab CI Components from radiuss-shared-ci (requires GitLab 17.0+). +# Components provide better versioning, type-safe inputs, and cleaner syntax. # -# In addition, each project should copy over and complete: -# - .gitlab/custom-jobs-and-variables.yml -# - .gitlab/subscribed-pipelines.yml -# -# The jobs should be specified in a file local to the project, -# - .gitlab/jobs/${CI_MACHINE}.yml -# or generated (see LLNL/Umpire for an example). +# In addition, each project should have: +# - .gitlab/custom-jobs.yml - Job templates for child pipelines +# - .gitlab/custom-variables.yml - Machine-specific variables +# - .gitlab/jobs/${CI_MACHINE}.yml - Machine-specific job definitions +############################################################################### + +############################################################################### +# VARIABLES ############################################################################### -# We define the following GitLab pipeline variables: variables: -##### LC GITLAB CONFIGURATION + +# LC GITLAB CONFIGURATION # Use an LLNL service user to run CI. This prevents from running pipelines as # an actual user. LLNL_SERVICE_USER: "" # Use the service user workspace. Solves permission issues, stores everything # at the same location whoever triggers a pipeline. # CUSTOM_CI_BUILDS_DIR: "" -# Submodules: We don't need to fetch dependencies handled by Spack. +# Optimize submodules usage: only fetch the ones we need. +# Note: We don't need to fetch dependencies handled by Spack. GIT_SUBMODULE_STRATEGY: normal GIT_SUBMODULE_DEPTH: 1 GIT_SUBMODULE_UPDATE_FLAGS: --jobs 2 GIT_SUBMODULE_PATHS: scripts/radiuss-spack-configs scripts/uberenv -##### PROJECT VARIABLES - -##### SHARED_CI CONFIGURATION +# SHARED_CI CONFIGURATION # Required information about GitHub repository GITHUB_PROJECT_NAME: "Caliper" GITHUB_PROJECT_ORG: "LLNL" @@ -52,15 +50,10 @@ variables: JOB_CMD: value: "./scripts/gitlab/build-and-test.sh" expand: false -# Override the pattern describing branches that will skip the "draft PR filter -# test". Add protected branches here. See default value in -# utility-draft-pr-filter component. - ALWAYS_RUN_PATTERN: "^develop$|^master$|^v[0-9.]*$|^releases/$" - -# We organize the build-and-test stage with sub-pipelines. Each sub-pipeline -# corresponds to a test batch on a given machine. -# High level stages +############################################################################### +# MAIN PIPELINE STAGES +############################################################################### # IMPORTANT: You must define stages yourself to allow customization. # The following stages are REQUIRED by RADIUSS Shared CI components: stages: @@ -89,7 +82,7 @@ include: github_token: $GITHUB_TOKEN github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG - always_run_pattern: $ALWAYS_RUN_PATTERN + always_run_pattern: "^develop$|^master$|^v[0-9.]*$|^releases/$" # Local custom variables (used for component inputs and forwarded to child pipelines) - local: '.gitlab/custom-variables.yml' @@ -97,6 +90,9 @@ include: ############################################################################### # MACHINE PIPELINES ############################################################################### +# We organize the build-and-test stage with sub-pipelines. Each sub-pipeline +# corresponds to a test batch on a given machine. + # Note: .machine-check template is provided by the base-pipeline component # and includes better error handling, validation, and GitHub status reporting. # Trigger a build-and-test pipeline for each machine. @@ -115,7 +111,6 @@ generate-job-lists: - cat ${RADIUSS_JOBS_PATH}/corona.yml ${LOCAL_JOBS_PATH}/corona.yml > corona-jobs.yml - cat ${RADIUSS_JOBS_PATH}/tioga.yml ${LOCAL_JOBS_PATH}/tioga.yml > tioga-jobs.yml - cat ${RADIUSS_JOBS_PATH}/tuolumne.yml ${LOCAL_JOBS_PATH}/tuolumne.yml > tuolumne-jobs.yml - - cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-jobs.yml artifacts: paths: - dane-jobs.yml @@ -123,7 +118,6 @@ generate-job-lists: - corona-jobs.yml - tioga-jobs.yml - tuolumne-jobs.yml - - lassen-jobs.yml # DANE dane-up-check: @@ -245,25 +239,3 @@ tuolumne-build-and-test: forward: pipeline_variables: true -# LASSEN -lassen-up-check: - extends: [.lassen, .machine-check] - -lassen-build-and-test: - stage: build-and-test - extends: [.lassen] - needs: [lassen-up-check, generate-job-lists] - trigger: - include: - - local: '.gitlab/custom-jobs.yml' - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/lassen-pipeline@woptim/migrate-to-components - inputs: - job_cmd: $JOB_CMD - job_alloc: $LASSEN_JOB_ALLOC - github_project_name: $GITHUB_PROJECT_NAME - github_project_org: $GITHUB_PROJECT_ORG - - artifact: 'lassen-jobs.yml' - job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true From 706a912ba832034f8585c1c5eed2ac0c4f85d458 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Fri, 7 Nov 2025 14:43:58 +0100 Subject: [PATCH 14/16] Use .build-and-test template and reorder includes - Extend .build-and-test template to avoid duplication of trigger config - Move custom-jobs.yml include after component to allow overriding - Remove redundant stage and trigger configuration (now in template) --- .gitlab-ci.yml | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 48159152a..d50540764 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -124,12 +124,10 @@ dane-up-check: extends: [.dane, .machine-check] dane-build-and-test: - stage: build-and-test - extends: [.dane] + extends: [.dane, .build-and-test] needs: [dane-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs.yml' - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@woptim/migrate-to-components inputs: job_cmd: $JOB_CMD @@ -137,23 +135,19 @@ dane-build-and-test: job_alloc: $DANE_JOB_ALLOC github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG + - local: '.gitlab/custom-jobs.yml' - artifact: 'dane-jobs.yml' job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true # MATRIX matrix-up-check: extends: [.matrix, .machine-check] matrix-build-and-test: - stage: build-and-test - extends: [.matrix] + extends: [.matrix, .build-and-test] needs: [matrix-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs.yml' - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@woptim/migrate-to-components inputs: job_cmd: $JOB_CMD @@ -161,23 +155,19 @@ matrix-build-and-test: job_alloc: $MATRIX_JOB_ALLOC github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG + - local: '.gitlab/custom-jobs.yml' - artifact: 'matrix-jobs.yml' job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true # CORONA corona-up-check: extends: [.corona, .machine-check] corona-build-and-test: - stage: build-and-test - extends: [.corona] + extends: [.corona, .build-and-test] needs: [corona-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs.yml' - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@woptim/migrate-to-components inputs: job_cmd: $JOB_CMD @@ -185,23 +175,19 @@ corona-build-and-test: job_alloc: $CORONA_JOB_ALLOC github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG + - local: '.gitlab/custom-jobs.yml' - artifact: 'corona-jobs.yml' job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true # TIOGA tioga-up-check: extends: [.tioga, .machine-check] tioga-build-and-test: - stage: build-and-test - extends: [.tioga] + extends: [.tioga, .build-and-test] needs: [tioga-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs.yml' - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@woptim/migrate-to-components inputs: job_cmd: $JOB_CMD @@ -209,23 +195,19 @@ tioga-build-and-test: job_alloc: $TIOGA_JOB_ALLOC github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG + - local: '.gitlab/custom-jobs.yml' - artifact: 'tioga-jobs.yml' job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true # TUOLUMNE tuolumne-up-check: extends: [.tuolumne, .machine-check] tuolumne-build-and-test: - stage: build-and-test - extends: [.tuolumne] + extends: [.tuolumne, .build-and-test] needs: [tuolumne-up-check, generate-job-lists] trigger: include: - - local: '.gitlab/custom-jobs.yml' - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@woptim/migrate-to-components inputs: job_cmd: $JOB_CMD @@ -233,9 +215,7 @@ tuolumne-build-and-test: job_alloc: $TUOLUMNE_JOB_ALLOC github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG + - local: '.gitlab/custom-jobs.yml' - artifact: 'tuolumne-jobs.yml' job: 'generate-job-lists' - strategy: depend - forward: - pipeline_variables: true From 16c76129208d54b8a17e299500eb57519b0133f2 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Thu, 13 Nov 2025 15:01:02 +0100 Subject: [PATCH 15/16] Fix: add matrix cores count + use ci reservation --- .gitlab/custom-jobs-and-variables.yml | 4 ++-- scripts/gitlab/build-and-test.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab/custom-jobs-and-variables.yml b/.gitlab/custom-jobs-and-variables.yml index d5a3c164b..6ecff9266 100644 --- a/.gitlab/custom-jobs-and-variables.yml +++ b/.gitlab/custom-jobs-and-variables.yml @@ -24,9 +24,9 @@ variables: # Matrix # Arguments for top level allocation - MATRIX_SHARED_ALLOC: "--exclusive --time=10 --nodes=1" + MATRIX_SHARED_ALLOC: "--exclusive --reservation=ci --time=10 --nodes=1" # Arguments for job level allocation - MATRIX_JOB_ALLOC: "--overlap --nodes=1" + MATRIX_JOB_ALLOC: "--reservation=ci --overlap --nodes=1" # Project specific variants for matrix PROJECT_MATRIX_VARIANTS: "+tests ~papi +cuda cuda_arch=75" # Project specific deps for matrix diff --git a/scripts/gitlab/build-and-test.sh b/scripts/gitlab/build-and-test.sh index 6c93e4b69..268eccd29 100755 --- a/scripts/gitlab/build-and-test.sh +++ b/scripts/gitlab/build-and-test.sh @@ -194,7 +194,7 @@ then timed_message "Cleaning working directory" # Map CPU core allocations - declare -A core_counts=(["lassen"]=40 ["dane"]=28 ["corona"]=32 ["rzansel"]=48 ["tioga"]=32 ["tuolumne"]=48) + declare -A core_counts=(["lassen"]=40 ["dane"]=28 ["matrix"]=28 ["corona"]=32 ["rzansel"]=48 ["tioga"]=32 ["tuolumne"]=48) # If building, then delete everything first # NOTE: 'cmake --build . -j core_counts' attempts to reduce individual build resources. From 97ca7dbf6d321d80f0ab3413bc6bd569848e8d11 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Thu, 13 Nov 2025 21:52:20 +0100 Subject: [PATCH 16/16] Fix: CI partition instead of reservation on matrix --- .gitlab/custom-jobs-and-variables.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/custom-jobs-and-variables.yml b/.gitlab/custom-jobs-and-variables.yml index 6ecff9266..e30e7e344 100644 --- a/.gitlab/custom-jobs-and-variables.yml +++ b/.gitlab/custom-jobs-and-variables.yml @@ -24,9 +24,9 @@ variables: # Matrix # Arguments for top level allocation - MATRIX_SHARED_ALLOC: "--exclusive --reservation=ci --time=10 --nodes=1" + MATRIX_SHARED_ALLOC: "--exclusive --partition=pci --time=10 --nodes=1" # Arguments for job level allocation - MATRIX_JOB_ALLOC: "--reservation=ci --overlap --nodes=1" + MATRIX_JOB_ALLOC: "--partition=pci --overlap --nodes=1" # Project specific variants for matrix PROJECT_MATRIX_VARIANTS: "+tests ~papi +cuda cuda_arch=75" # Project specific deps for matrix