From 888d458362dd4b2f0027e166dfe837097fdc3523 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 11:30:54 +0100 Subject: [PATCH 01/10] Point at RAJA branch with coherent changes --- tpl/RAJA | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tpl/RAJA b/tpl/RAJA index d5d53b759..ad01286a8 160000 --- a/tpl/RAJA +++ b/tpl/RAJA @@ -1 +1 @@ -Subproject commit d5d53b7594c0cc2eb1e2d9f65d9ab9bf2b3ccc7b +Subproject commit ad01286a8ef25ce62d6ca99ca5885c1be8cfdef8 From c6d7e94efb721a38e0a44dcbc93523b1a2010ee4 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 11:39:10 +0100 Subject: [PATCH 02/10] 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 - Updated tpl/RAJA submodule to point to woptim/rsci-migrate-to-components branch --- .gitlab-ci.yml | 202 +++++++++++++++++++++++++++---- .gitlab/custom-jobs.yml | 38 ++++++ .gitlab/custom-variables.yml | 59 +++++++++ .gitlab/subscribed-pipelines.yml | 159 ------------------------ 4 files changed, 275 insertions(+), 183 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 21c3554f1..82c47ffb9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,10 +40,6 @@ variables: GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4 ##### 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 @@ -55,41 +51,199 @@ variables: JOB_CMD: value: "./scripts/gitlab/build_and_test.sh" expand: false +# Component version to use (using development branch for migration) + RADIUSS_SHARED_CI_REF: "woptim/migrate-to-components" # 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. -# ALWAYS_RUN_PATTERN: "^develop$|^main$|^v[0-9.]*-RC$" +# ALWAYS_RUN_PATTERN: "" # 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 + component_version: $RADIUSS_SHARED_CI_REF + + # [Optional] Draft PR filter - commented out by default + #- 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 + + # 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 +# RAJAPerf uses the RAJA submodule for radiuss-jobs +generate-job-lists: + stage: prerequisites + tags: [shell, oslic] + variables: + GIT_SUBMODULE_DEPTH: 2 + GIT_SUBMODULE_STRATEGY: recursive + GIT_SUBMODULE_PATHS: tpl/RAJA + RADIUSS_JOBS_PATH: "tpl/RAJA/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 + artifacts: + paths: + - dane-jobs.yml + - matrix-jobs.yml + - corona-jobs.yml + - tioga-jobs.yml + - tuolumne-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 diff --git a/.gitlab/custom-jobs.yml b/.gitlab/custom-jobs.yml new file mode 100644 index 000000000..b333b42d0 --- /dev/null +++ b/.gitlab/custom-jobs.yml @@ -0,0 +1,38 @@ +############################################################################### +# Copyright (c) 2017-25, Lawrence Livermore National Security, LLC +# and RAJA Performance Suite project contributors. +# See the RAJAPerf/LICENSE file for details. +# +# SPDX-License-Identifier: (BSD-3-Clause) +############################################################################### + +# 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..864e91179 --- /dev/null +++ b/.gitlab/custom-variables.yml @@ -0,0 +1,59 @@ +############################################################################### +# Copyright (c) 2017-25, Lawrence Livermore National Security, LLC +# and RAJA Performance Suite project contributors. +# See the RAJAPerf/LICENSE file for details. +# +# SPDX-License-Identifier: (BSD-3-Clause) +############################################################################### + +# 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=45 --nodes=1" + DANE_JOB_ALLOC: "--reservation=ci --nodes=1" + # Project specific variants for dane + PROJECT_DANE_VARIANTS: "~shared +openmp" + # Project specific deps for dane + PROJECT_DANE_DEPS: "^blt@develop " + + # Matrix (SLURM) allocation settings + MATRIX_SHARED_ALLOC: "--exclusive --time=45 --nodes=1" + MATRIX_JOB_ALLOC: "--nodes=1" + # Project specific variants for matrix + PROJECT_MATRIX_VARIANTS: "~shared +openmp +cuda cuda_arch=75" + # Project specific deps for matrix + PROJECT_MATRIX_DEPS: "^blt@develop " + + # Corona (flux) allocation settings + CORONA_SHARED_ALLOC: "--exclusive --time-limit=25m --nodes=1 -o per-resource.count=2" + CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for corona + PROJECT_CORONA_VARIANTS: "~shared ~openmp" + # Project specific deps for corona + PROJECT_CORONA_DEPS: "^blt@develop " + + # Tioga (flux) allocation settings + TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" + TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for tioga + PROJECT_TIOGA_VARIANTS: "~shared +openmp" + # Project specific deps for tioga + PROJECT_TIOGA_DEPS: "^blt@develop " + + # Tuolumne (flux) allocation settings + TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" + TUOLUMNE_JOB_ALLOC: "--nodes=1 --begin-time=+5s" + # Project specific variants for tuolumne + PROJECT_TUOLUMNE_VARIANTS: "~shared +openmp" + # Project specific deps for tuolumne + PROJECT_TUOLUMNE_DEPS: "^blt@develop " diff --git a/.gitlab/subscribed-pipelines.yml b/.gitlab/subscribed-pipelines.yml deleted file mode 100644 index 325e6d0a1..000000000 --- a/.gitlab/subscribed-pipelines.yml +++ /dev/null @@ -1,159 +0,0 @@ -############################################################################### -# Copyright (c) 2017-25, Lawrence Livermore National Security, LLC -# and RAJA Performance Suite project contributors. -# See the RAJAPerf/LICENSE file for details. -# -# SPDX-License-Identifier: (BSD-3-Clause) -############################################################################## - -# 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 do not need. -### - -# One job to generate the job list for all the subpipelines -generate-job-lists: - stage: prerequisites - tags: [shell, oslic] - variables: - GIT_SUBMODULE_DEPTH: 2 - GIT_SUBMODULE_STRATEGY: recursive - GIT_SUBMODULE_PATHS: tpl/RAJA - RADIUSS_JOBS_PATH: "tpl/RAJA/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 - artifacts: - paths: - - dane-jobs.yml - - matrix-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 From adc179d834cc93c256a365d1409a188fed55ab5c Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:19:23 +0100 Subject: [PATCH 03/10] Remove unused variable and input --- .gitlab-ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 82c47ffb9..d940f8656 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,8 +51,6 @@ variables: JOB_CMD: value: "./scripts/gitlab/build_and_test.sh" expand: false -# Component version to use (using development branch for migration) - RADIUSS_SHARED_CI_REF: "woptim/migrate-to-components" # 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. @@ -83,7 +81,6 @@ include: github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG github_token: $GITHUB_TOKEN - component_version: $RADIUSS_SHARED_CI_REF # [Optional] Draft PR filter - commented out by default #- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/utility-draft-pr-filter@woptim/migrate-to-components From 8db868dcc0d2181f0413dd37d1c67e131e3641cf Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:50:56 +0100 Subject: [PATCH 04/10] Cleanup CI config --- .gitlab-ci.yml | 54 ++++++++++++++++++++------------------------------ 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d940f8656..b1a8a2bf5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,36 +12,34 @@ # 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: rajasa # Use the service user workspace. Solves permission issues, stores everything # at the same location whoever triggers a pipeline. # CUSTOM_CI_BUILDS_DIR: "/usr/workspace/rajasa/gitlab-runner" -# Tells Gitlab to recursively update the submodules when cloning the project. +# Optimize submodules usage: only fetch the ones we need. +# Note: We don't need to fetch dependencies handled by Spack. GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4 -##### PROJECT VARIABLES - -##### SHARED_CI CONFIGURATION +# SHARED_CI CONFIGURATION # Required information about GitHub repository GITHUB_PROJECT_NAME: "RAJAPerf" GITHUB_PROJECT_ORG: "LLNL" @@ -51,17 +49,13 @@ 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 -# preliminary-ignore-draft-pr.yml. -# ALWAYS_RUN_PATTERN: "" - -# 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: - prerequisites # Required: machine availability checks - build-and-test # Required: build and test jobs @@ -82,19 +76,15 @@ include: github_project_org: $GITHUB_PROJECT_ORG github_token: $GITHUB_TOKEN - # [Optional] Draft PR filter - commented out by default - #- 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 - # Local custom variables (used for component inputs and forwarded to child pipelines) - local: '.gitlab/custom-variables.yml' ############################################################################### # 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. From 4299d9730075e127f080bee1ebc216d99b393fee Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:51:30 +0100 Subject: [PATCH 05/10] Update RAJA --- tpl/RAJA | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tpl/RAJA b/tpl/RAJA index ad01286a8..473c1cb1c 160000 --- a/tpl/RAJA +++ b/tpl/RAJA @@ -1 +1 @@ -Subproject commit ad01286a8ef25ce62d6ca99ca5885c1be8cfdef8 +Subproject commit 473c1cb1c0c55208a6be082f3778401f236e950d From 9be33ea12aea2b8dd65fd7a25bcfaf33b08e2e6b Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Fri, 7 Nov 2025 12:29:26 +0100 Subject: [PATCH 06/10] Adapt CI config to latest changes + update RAJA --- .gitlab-ci.yml | 40 ++++++++++------------------------------ tpl/RAJA | 2 +- 2 files changed, 11 insertions(+), 31 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b1a8a2bf5..f9e26d71b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -120,12 +120,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 @@ -133,23 +131,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 @@ -157,23 +151,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 @@ -181,23 +171,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 @@ -205,23 +191,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 @@ -229,8 +211,6 @@ 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 diff --git a/tpl/RAJA b/tpl/RAJA index 473c1cb1c..1a6a21e54 160000 --- a/tpl/RAJA +++ b/tpl/RAJA @@ -1 +1 @@ -Subproject commit 473c1cb1c0c55208a6be082f3778401f236e950d +Subproject commit 1a6a21e5447a9299cdf8f1a10b2e103f5c21d187 From aab65a3b6381ac2030aad879ddb6c80b6d919892 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Tue, 16 Dec 2025 15:21:08 +0100 Subject: [PATCH 07/10] Point at radiuss-shared-ci latest release --- .gitlab-ci.yml | 12 ++++++------ tpl/RAJA | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f9e26d71b..4104e9659 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,7 +70,7 @@ include: file: 'id_tokens.yml' # Base pipeline templates and utilities - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@v2025.12.0 inputs: github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG @@ -124,7 +124,7 @@ dane-build-and-test: needs: [dane-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@v2025.12.0 inputs: job_cmd: $JOB_CMD shared_alloc: $DANE_SHARED_ALLOC @@ -144,7 +144,7 @@ matrix-build-and-test: needs: [matrix-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@v2025.12.0 inputs: job_cmd: $JOB_CMD shared_alloc: $MATRIX_SHARED_ALLOC @@ -164,7 +164,7 @@ corona-build-and-test: needs: [corona-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@v2025.12.0 inputs: job_cmd: $JOB_CMD shared_alloc: $CORONA_SHARED_ALLOC @@ -184,7 +184,7 @@ tioga-build-and-test: needs: [tioga-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@v2025.12.0 inputs: job_cmd: $JOB_CMD shared_alloc: $TIOGA_SHARED_ALLOC @@ -204,7 +204,7 @@ tuolumne-build-and-test: needs: [tuolumne-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@woptim/migrate-to-components + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@v2025.12.0 inputs: job_cmd: $JOB_CMD shared_alloc: $TUOLUMNE_SHARED_ALLOC diff --git a/tpl/RAJA b/tpl/RAJA index 8a2280993..a279fd24e 160000 --- a/tpl/RAJA +++ b/tpl/RAJA @@ -1 +1 @@ -Subproject commit 8a22809937f3a1fcbbc48d99973e3bd304e7881b +Subproject commit a279fd24e2f2e5bbd04075361dba88be0635856c From 111b43355752c77dcfd96443b96c99dbf72ecf78 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:56:09 +0100 Subject: [PATCH 08/10] Fix job naming on matrix --- .gitlab/jobs/matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/jobs/matrix.yml b/.gitlab/jobs/matrix.yml index f40a6ec2b..a7c6d2a55 100644 --- a/.gitlab/jobs/matrix.yml +++ b/.gitlab/jobs/matrix.yml @@ -19,7 +19,7 @@ # the comparison with the original job is easier. # Shared job uses %clang-18-gcc-13, replaced with %clang-18 below -clang_18_1_1_gcc_13_cuda_12_6_0: +clang_18_1_8_gcc_13_cuda_12_6_0: extends: .job_on_matrix variables: ON_MATRIX: "OFF" From 0b17530325fe1c7ae5b0e0971d59dfe62fededfa Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:56:22 +0100 Subject: [PATCH 09/10] Remove custom-jobs-and-variables.yml after porting changes to custom-variables.yml --- .gitlab/custom-jobs-and-variables.yml | 88 --------------------------- .gitlab/custom-variables.yml | 20 +++--- 2 files changed, 11 insertions(+), 97 deletions(-) delete mode 100644 .gitlab/custom-jobs-and-variables.yml diff --git a/.gitlab/custom-jobs-and-variables.yml b/.gitlab/custom-jobs-and-variables.yml deleted file mode 100644 index 545e2701c..000000000 --- a/.gitlab/custom-jobs-and-variables.yml +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################### -# Copyright (c) 2017-25, Lawrence Livermore National Security, LLC -# and RAJA Performance Suite project contributors. -# See the RAJAPerf/LICENSE file for details. -# -# SPDX-License-Identifier: (BSD-3-Clause) -############################################################################## - -# We define the following GitLab pipeline variables: -variables: -# On LLNL's machines, this pipeline creates only one allocation shared among jobs -# in order to save time and resources. This allocation has to be uniquely named -# so that we are sure to retrieve it and avoid collisions. - ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID} - -# Dane -# Arguments for top level allocation - DANE_SHARED_ALLOC: "--exclusive --reservation=ci --time=55 --nodes=1" -# Arguments for job level allocation - DANE_JOB_ALLOC: "--reservation=ci --nodes=1" -# Project specific variants for dane - PROJECT_DANE_VARIANTS: "~shared +openmp" -# Project specific deps for dane - PROJECT_DANE_DEPS: "" - -# Matrix -# Arguments for top level allocation - MATRIX_SHARED_ALLOC: "--exclusive --partition=pci --account=wbronze --time=45 --nodes=1" -# Arguments for job level allocation - MATRIX_JOB_ALLOC: "--partition=pci --account=wbronze --nodes=1" -# Project specific variants for matrix - PROJECT_MATRIX_VARIANTS: "~shared +openmp +cuda cuda_arch=90" -# Project specific deps for matrix - PROJECT_MATRIX_DEPS: "" - -# Corona -# Arguments for top level allocation - CORONA_SHARED_ALLOC: "--exclusive --time-limit=25m --nodes=1 -o per-resource.count=2" -# Arguments for job level allocation - CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" -# Project specific variants for corona - PROJECT_CORONA_VARIANTS: "~shared ~openmp" -# Project specific deps for corona - PROJECT_CORONA_DEPS: "" - -# Tioga -# Arguments for top level allocation - TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" -# Arguments for job level allocation - TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" -# Project specific variants for tioga - PROJECT_TIOGA_VARIANTS: "~shared +openmp" -# Project specific deps for tioga - PROJECT_TIOGA_DEPS: "" - -# Tuolumne -# Arguments for top level allocation - TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" -# Arguments for job level allocation - TUOLUMNE_JOB_ALLOC: "--nodes=1 --begin-time=+5s" -# Project specific variants for tuolumne - PROJECT_TUOLUMNE_VARIANTS: "~shared +openmp" -# Project specific deps for tuolumne - PROJECT_TUOLUMNE_DEPS: "" - -# 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. -# See Umpire for an example (export junit test reports). -.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 index 864e91179..d96a8b0ac 100644 --- a/.gitlab/custom-variables.yml +++ b/.gitlab/custom-variables.yml @@ -19,20 +19,22 @@ variables: ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID} # Dane (SLURM) allocation settings - DANE_SHARED_ALLOC: "--exclusive --reservation=ci --time=45 --nodes=1" + DANE_SHARED_ALLOC: "--exclusive --reservation=ci --time=55 --nodes=1" + # Note: we repeat the reservation, helpful when jobs are manually re-triggered. DANE_JOB_ALLOC: "--reservation=ci --nodes=1" # Project specific variants for dane PROJECT_DANE_VARIANTS: "~shared +openmp" # Project specific deps for dane - PROJECT_DANE_DEPS: "^blt@develop " + PROJECT_DANE_DEPS: "" # Matrix (SLURM) allocation settings - MATRIX_SHARED_ALLOC: "--exclusive --time=45 --nodes=1" - MATRIX_JOB_ALLOC: "--nodes=1" + MATRIX_SHARED_ALLOC: "--exclusive --partition=pci --account=wbronze --time=45 --nodes=1" + # Note: we repeat the reservation, helpful when jobs are manually re-triggered. + MATRIX_JOB_ALLOC: "--partition=pci --account=wbronze --nodes=1" # Project specific variants for matrix - PROJECT_MATRIX_VARIANTS: "~shared +openmp +cuda cuda_arch=75" + PROJECT_MATRIX_VARIANTS: "~shared +openmp +cuda cuda_arch=90" # Project specific deps for matrix - PROJECT_MATRIX_DEPS: "^blt@develop " + PROJECT_MATRIX_DEPS: "" # Corona (flux) allocation settings CORONA_SHARED_ALLOC: "--exclusive --time-limit=25m --nodes=1 -o per-resource.count=2" @@ -40,7 +42,7 @@ variables: # Project specific variants for corona PROJECT_CORONA_VARIANTS: "~shared ~openmp" # Project specific deps for corona - PROJECT_CORONA_DEPS: "^blt@develop " + PROJECT_CORONA_DEPS: "" # Tioga (flux) allocation settings TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" @@ -48,7 +50,7 @@ variables: # Project specific variants for tioga PROJECT_TIOGA_VARIANTS: "~shared +openmp" # Project specific deps for tioga - PROJECT_TIOGA_DEPS: "^blt@develop " + PROJECT_TIOGA_DEPS: "" # Tuolumne (flux) allocation settings TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2" @@ -56,4 +58,4 @@ variables: # Project specific variants for tuolumne PROJECT_TUOLUMNE_VARIANTS: "~shared +openmp" # Project specific deps for tuolumne - PROJECT_TUOLUMNE_DEPS: "^blt@develop " + PROJECT_TUOLUMNE_DEPS: "" From 6bbf276e6fbf915f6a8068b99efcaf83fdd47fe2 Mon Sep 17 00:00:00 2001 From: "Adrien M. BERNEDE" <51493078+adrienbernede@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:56:46 +0100 Subject: [PATCH 10/10] Update RAJA --- tpl/RAJA | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tpl/RAJA b/tpl/RAJA index a279fd24e..70b380922 160000 --- a/tpl/RAJA +++ b/tpl/RAJA @@ -1 +1 @@ -Subproject commit a279fd24e2f2e5bbd04075361dba88be0635856c +Subproject commit 70b3809220894b8254ccb725b40154673ca33796