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

Watchers

Forks

Packages

 
 
 

Contributors