Skip to content

llnl/radiuss-shared-ci

Repository files navigation

RADIUSS Shared CI

Shared GitLab CI/CD framework for LLNL open-source projects to run tests on LC machines.

RADIUSS Shared CI provides reusable GitLab CI Components for testing HPC software across multiple LC supercomputers. Projects define their build/test command once and run it across multiple machines with different compilers, architectures, and configurations.

Current Version: v2026.02.2 | Requires: GitLab 17.0+

📚 Full Documentation | 🚀 5-Minute Setup | 📖 Migration Guide

Table of Contents

Quick Start

Define stages and include components in your .gitlab-ci.yml:

# Define required stages (components don't define them)
stages:
  - prerequisites
  - build-and-test

# Include base pipeline
include:
  - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@v2026.02.2
    inputs:
      github_project_name: "my-project"
      github_project_org: "LLNL"
      github_token: $GITHUB_STATUS_TOKEN

# Machine availability check
dane-up-check:
  extends: [.dane, .machine-check]
  variables:
    ASSOCIATED_CHILD_PIPELINE: "dane-build-and-test"

# Machine pipeline trigger
dane-build-and-test:
  needs: [dane-up-check]
  extends: [.dane, .build-and-test]
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@v2026.02.2
        inputs:
          job_cmd: "./scripts/build-and-test.sh"
          shared_alloc: "--nodes=1 --time=30"
          job_alloc: "--nodes=1"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/dane.yml'

Create .gitlab/jobs/dane.yml with your jobs:

gcc-build:
  extends: .job_on_dane
  variables:
    COMPILER: "gcc"

See 5-Minute Setup Guide for complete walkthrough.

Components

Base Pipeline

Provides orchestration templates for multi-machine pipelines and machine availability checks.

Usage:

include:
  - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@v2026.02.2
    inputs:
      github_project_name: "my-project"
      github_project_org: "LLNL"
      github_token: $GITHUB_STATUS_TOKEN

Exports: .machine-check, .build-and-test, .custom_job, .custom_perf, machine rule templates

View component →

Machine Pipelines

Dane Pipeline

CI templates for Dane (SLURM scheduler, Intel Xeon CPUs).

Usage:

dane-build-and-test:
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@v2026.02.2
        inputs:
          job_cmd: "./build-and-test.sh"
          shared_alloc: "--nodes=1 --time=30"
          job_alloc: "--nodes=1"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/dane.yml'

Exports: .job_on_dane, reproducer templates

View component →

Matrix Pipeline

CI templates for Matrix (SLURM scheduler, Intel Xeon CPUs, NVIDIA H100 GPUs).

Usage:

matrix-build-and-test:
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@v2026.02.2
        inputs:
          job_cmd: "./build-and-test.sh"
          shared_alloc: "--partition=pci --nodes=1 --time=30"
          job_alloc: "--partition=pci --nodes=1"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/matrix.yml'

Exports: .job_on_matrix, reproducer templates

View component →

Tioga Pipeline

CI templates for Tioga (Flux scheduler, AMD EPYC CPUs, AMD MI250X GPUs).

Usage:

tioga-build-and-test:
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@v2026.02.2
        inputs:
          job_cmd: "./build-and-test.sh"
          shared_alloc: "--queue=pci --nodes=1 --time-limit=30m"
          job_alloc: "--nodes=1 --begin-time=+5s"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/tioga.yml'

Exports: .job_on_tioga, reproducer templates

View component →

Tuolumne Pipeline

CI templates for Tuolumne (Flux scheduler, AMD EPYC CPUs, AMD MI300A GPUs, production-like environment).

Usage:

tuolumne-build-and-test:
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@v2026.02.2
        inputs:
          job_cmd: "./build-and-test.sh"
          shared_alloc: "--queue=pci --nodes=1 --time-limit=30m"
          job_alloc: "--nodes=1 --begin-time=+5s"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/tuolumne.yml'

Exports: .job_on_tuolumne, reproducer templates

View component →

Corona Pipeline

CI templates for Corona (Flux scheduler, AMD EPYC CPUs, AMD MI50 GPUs).

Usage:

corona-build-and-test:
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@v2026.02.2
        inputs:
          job_cmd: "./build-and-test.sh"
          shared_alloc: "--nodes=1 --time-limit=30m"
          job_alloc: "--nodes=1 --begin-time=+5s"
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/corona.yml'

Exports: .job_on_corona, reproducer templates

View component →

Performance Pipeline

Templates for performance measurements across machines with GitHub benchmark reporting.

Usage:

stages:
  - prerequisites
  - build-and-test
  - performance-measurements

performance-measurements:
  extends: [.performance-measurements]
  trigger:
    include:
      - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/performance-pipeline@v2026.02.2
        inputs:
          job_cmd: "./scripts/run-benchmarks.sh"
          tioga_perf_alloc: "--queue=pci --nodes=1 --time-limit=15m"
          perf_processing_cmd: "./scripts/process-results.py"
          github_token: $GITHUB_STATUS_TOKEN
          github_project_name: "my-project"
          github_project_org: "LLNL"
      - local: '.gitlab/jobs/performances.yml'

Exports: .perf_on_<machine>, .results_processing, .results_reporting, GitHub benchmark templates

View component →

Utilities

Draft PR Filter

Skips CI pipelines on draft pull requests.

Usage:

include:
  - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/utility-draft-pr-filter@v2026.02.2
    inputs:
      github_token: $GITHUB_STATUS_TOKEN
      github_project_name: "my-project"
      github_project_org: "LLNL"

View component →

Branch Skip

Skips CI on branches not associated with a pull request.

Usage:

include:
  - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/utility-branch-skip@v2026.02.2
    inputs:
      github_token: $GITHUB_STATUS_TOKEN
      github_project_name: "my-project"
      github_project_org: "LLNL"

View component →

Job Override Check

Warns when shared CI jobs updated via the radiuss-spack-configs submodule may conflict with a project's local job overrides. Advisory only (does not fail the pipeline). Runs when a branch bumps the submodule pointer.

Usage:

include:
  - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/utility-job-override-check@2026.6.0

All inputs (submodule_path, shared_jobs_path, local_jobs_path, machine_files, ref_branch) are optional and default to the conventional RADIUSS project layout.

View component →

Examples

Complete configuration examples in examples/:

Legacy Approach

The include-based approach (using pipelines/*.yml and utilities/*.yml) remains available for GitLab < 17.0 or projects not yet migrated.

See Migration Guide for migration instructions.

Contribute

Contributions are welcome! See Contributing Guide for:

  • Development workflow
  • Testing guidelines
  • Code style
  • Pull request process

Please read our Code of Conduct.

Versioning

Current Version: v2026.02.2

Version format: vYYYY.MM.PATCH

  • YYYY.MM - Release year and month
  • PATCH - Hotfix index

See CHANGELOG.md for release history.

Users

Projects using RADIUSS Shared CI:

Authors

Adrien M. Bernede

See contributors for all participants.

License

MIT License - All new contributions must be made under the MIT License.

See LICENSE, COPYRIGHT, and NOTICE for details.

SPDX-License-Identifier: (MIT)

LLNL-CODE-793462


About RADIUSS: The RADIUSS project promotes and supports key HPC open-source software developed at LLNL. These tools and libraries cover a wide range of features teams would need to develop modern simulation codes targeting HPC platforms.

About

Shared Gitlab CI configuration for RADIUSS projects

Topics

Resources

License

Stars

7 stars

Watchers

7 watching

Forks

Packages

 
 
 

Contributors