Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
463b783
Migrate CI to use GitLab Components from radiuss-shared-ci
adrienbernede Oct 31, 2025
55e2b43
Dumb commit to test draft mechanism unexpected error
adrienbernede Oct 31, 2025
0c2c4b1
Revert "Dumb commit to test draft mechanism unexpected error"
adrienbernede Oct 31, 2025
1394b78
Dumb commit to test draft mechanism unexpected error
adrienbernede Oct 31, 2025
0254f3c
Revert "Dumb commit to test draft mechanism unexpected error"
adrienbernede Oct 31, 2025
a762d1d
Dumb commit to test draft mechanism unexpected error
adrienbernede Oct 31, 2025
ad01286
Remove BUILD_ROOT variable definition
adrienbernede Nov 3, 2025
bd52c25
Remove unused variable and input
adrienbernede Nov 3, 2025
473c1cb
Cleanup CI config
adrienbernede Nov 3, 2025
dd376ca
Update CI workflow documentation for GitLab Components migration
adrienbernede Nov 4, 2025
0cabf60
Update CI maintenance tasks documentation for GitLab Components migra…
adrienbernede Nov 4, 2025
58632b0
Fix: Claude insisted too much on a technical aspect
adrienbernede Nov 4, 2025
1a6a21e
Adapt CI config to latest changes
adrienbernede Nov 7, 2025
d57b52b
Merge branch 'develop' into woptim/rsci-migrate-to-components
adrienbernede Dec 15, 2025
8a22809
Merge branch 'develop' into woptim/rsci-migrate-to-components
adrienbernede Dec 15, 2025
a279fd2
Point at radiuss-shared-ci latest release
adrienbernede Dec 16, 2025
756b123
Update documentation w.r.t. changes in CI
adrienbernede Dec 16, 2025
f9e22c6
Updated CI files figure and worked into text
rhornung67 Dec 16, 2025
70b3809
Remove custom-jobs-and-variables.yml after porting changes to custom-…
adrienbernede Dec 17, 2025
80f2ada
Fix typo in matrix CI jobs preventing override
adrienbernede Dec 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
235 changes: 181 additions & 54 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2016-24, Lawrence Livermore National Security, LLC
# Copyright (c) 2016-25, Lawrence Livermore National Security, LLC
# and RAJA project contributors. See the RAJA/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
Expand All @@ -11,43 +11,39 @@
# 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
# Use an LLNL service user to run CI. This prevents from running pipelines as an
# actual user.

# 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"
# 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 3
GIT_SUBMODULE_PATHS: tpl/desul scripts/radiuss-spack-configs scripts/uberenv

##### PROJECT VARIABLES
# PROJECT VARIABLES
MP_BRANCH: "develop"
# 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
# SHARED_CI CONFIGURATION
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "RAJA"
GITHUB_PROJECT_ORG: "LLNL"
Expand All @@ -57,34 +53,176 @@ 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: "^develop$|^main$|^v[0-9.]*-RC$"

# We organize the build-and-test stage with sub-pipelines. Each sub-pipeline
# corresponds to a test batch on a given machine.
###############################################################################
# MAIN PIPELINE STAGES
###############################################################################
# IMPORTANT: You must define stages yourself to allow customization.
# The following stages are REQUIRED by RADIUSS Shared CI components:

# High level stages
stages:
- prerequisites
- build-and-test
- prerequisites # Required: machine availability checks
- build-and-test # Required: build and test jobs
- multi-project

# Template for jobs triggering a build-and-test sub-pipeline:
.build-and-test:
stage: 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/[email protected]
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/[email protected]
inputs:
github_token: $GITHUB_TOKEN
github_project_name: $GITHUB_PROJECT_NAME
github_project_org: $GITHUB_PROJECT_ORG
always_run_pattern: "^develop$|^main$|^v[0-9.]*-RC$"

# 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.
# 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
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:
extends: [.dane, .build-and-test]
needs: [dane-up-check, generate-job-lists]
trigger:
include:
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
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
- local: '.gitlab/custom-jobs.yml'
- artifact: 'dane-jobs.yml'
job: 'generate-job-lists'

# MATRIX
matrix-up-check:
extends: [.matrix, .machine-check]

matrix-build-and-test:
extends: [.matrix, .build-and-test]
needs: [matrix-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'
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
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
- local: '.gitlab/custom-jobs.yml'
- artifact: 'matrix-jobs.yml'
job: 'generate-job-lists'

# CORONA
corona-up-check:
extends: [.corona, .machine-check]

corona-build-and-test:
extends: [.corona, .build-and-test]
needs: [corona-up-check, generate-job-lists]
trigger:
include:
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
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
- local: '.gitlab/custom-jobs.yml'
- artifact: 'corona-jobs.yml'
job: 'generate-job-lists'

# TIOGA
tioga-up-check:
extends: [.tioga, .machine-check]

tioga-build-and-test:
extends: [.tioga, .build-and-test]
needs: [tioga-up-check, generate-job-lists]
trigger:
include:
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
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
- local: '.gitlab/custom-jobs.yml'
- artifact: 'tioga-jobs.yml'
job: 'generate-job-lists'

# TUOLUMNE
tuolumne-up-check:
extends: [.tuolumne, .machine-check]

tuolumne-build-and-test:
extends: [.tuolumne, .build-and-test]
needs: [tuolumne-up-check, generate-job-lists]
trigger:
include:
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
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
- local: '.gitlab/custom-jobs.yml'
- artifact: 'tuolumne-jobs.yml'
job: 'generate-job-lists'
strategy: depend
forward:
pipeline_variables: true

# If testing develop branch, trigger RAJAPerf pipeline with this version of
# RAJA.
Expand All @@ -100,14 +238,3 @@ trigger-rajaperf:
trigger:
project: radiuss/rajaperf
branch: develop

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'
86 changes: 0 additions & 86 deletions .gitlab/custom-jobs-and-variables.yml

This file was deleted.

Loading