Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4f257c7
Add GitLab CI Component catalog structure
adrienbernede Oct 27, 2025
150b67c
Add utility components for draft PR and branch filtering
adrienbernede Oct 27, 2025
0a53012
Add performance pipeline component
adrienbernede Oct 27, 2025
28ca8c8
Add individual machine pipeline components
adrienbernede Oct 27, 2025
ebdf964
Add base pipeline orchestration component
adrienbernede Oct 27, 2025
c23db60
Add example configurations for consuming projects
adrienbernede Oct 28, 2025
9da93ca
Update README with component usage instructions
adrienbernede Oct 28, 2025
cbb0ea5
Add comprehensive components migration guide
adrienbernede Oct 28, 2025
9e20168
Fix: Remove stage definitions to allow user customization
adrienbernede Oct 31, 2025
8917bd3
Refactor: Split custom-jobs-and-variables into separate files
adrienbernede Oct 31, 2025
6232c9a
Create templates for each machine to reduce duplication
adrienbernede Oct 31, 2025
a09ac4c
Test: expand input variable (two ways)
adrienbernede Oct 31, 2025
e5f76dd
Test several ways to handle CI components inputs in script
adrienbernede Oct 31, 2025
688ca9c
Try forcing variable expansion
adrienbernede Oct 31, 2025
1864f66
Fix component input interpolation in utility and base templates
adrienbernede Oct 31, 2025
5c83733
Remove BUILD_ROOT from component inputs and usage
adrienbernede Nov 3, 2025
8440a7c
Fix: expand job_cmd input and use intermediate variable.
adrienbernede Nov 3, 2025
ffc66c4
Remove unused component_version input from base-pipeline
adrienbernede Nov 3, 2025
4e540c5
Apply suggestion from @tdrwenski
adrienbernede Nov 4, 2025
d34e896
Apply suggestion from @Copilot
adrienbernede Nov 4, 2025
5abaac9
Remove component_version input
adrienbernede Nov 4, 2025
c164b09
Remove component_version input
adrienbernede Nov 4, 2025
8b19331
Remove component_version input
adrienbernede Nov 4, 2025
7de5efa
Remove component_version input
adrienbernede Nov 4, 2025
93b0e6c
Remove remains of useless BUILD_ROOT variable.
adrienbernede Nov 4, 2025
b1fe35b
List all components available in the catalog
adrienbernede Nov 4, 2025
4b933b9
Update release version to 2025.11.0
adrienbernede Nov 4, 2025
5f1d6f1
Sensible alloc values + no default alloc
adrienbernede Nov 4, 2025
0915d31
Add comments for custom variables (allocation settings)
adrienbernede Nov 4, 2025
007ae5a
Sensible defaults for machine components inputs.
adrienbernede Nov 6, 2025
de0860d
Make defining .custom_jobs and .custom_perf optional
adrienbernede Nov 6, 2025
1a1cb6b
Remove unused templates in base-pipeline template
adrienbernede Nov 6, 2025
0fcc425
Fix example gitlab-ci.yml
adrienbernede Nov 6, 2025
544eed5
Fix typo
adrienbernede Nov 7, 2025
13d137b
Run perf jobs if the perf allocation was given
adrienbernede Dec 1, 2025
6ef5353
Add comment in example
adrienbernede Dec 1, 2025
9721b3b
Apply suggestions from code review
adrienbernede Dec 10, 2025
d0e4199
Merge branch 'main' into woptim/migrate-to-components
adrienbernede Dec 15, 2025
b46e2a6
Update release version to 2025.12.0
adrienbernede Dec 15, 2025
19f9456
Apply suggestion from @tdrwenski
adrienbernede Dec 15, 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
60 changes: 57 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,68 @@ Radiuss Shared CI allows project to share CI configuration for GitLab.

## Getting Started

This project is meant to be hosted in a Gitlab instance so that other projects
can import files from it to complete their CI configuration.
This project is meant to be hosted in a GitLab instance so that other projects
can use it to configure their CI pipelines.

**As of v2025.12.0**, RADIUSS Shared CI is available as **GitLab CI Components** (requires GitLab 17.0+). This provides:

- **Better versioning** through the GitLab CI/CD Catalog
- **Type-safe inputs** with validated parameters
- **Cleaner syntax** using `component:` instead of `include: project:`
- **No more copy-pasting** - all templates are reusable components

User documentation is located here: [**RADIUSS Shared CI Docs**](https://radiuss-shared-ci.readthedocs.io/en/latest/).

### Quick Start with Components

Add components to your `.gitlab-ci.yml`:

```yaml
# You must define stages (components don't define them to allow customization)
stages:
- prerequisites
- build-and-test
- performance-measurements

include:
# Base pipeline orchestration
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
inputs:
github_project_name: "my-project"
github_project_org: "LLNL"
github_token: $GITHUB_TOKEN

# Machine-specific pipeline (choose the machines you need)
- component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/[email protected]
inputs:
job_cmd: "./scripts/build-and-test.sh"
job_alloc: "1 -W 30"
github_project_name: "my-project"
github_project_org: "LLNL"
```

See the [examples/](examples/) directory for complete configuration examples.

### Available Components

- **base-pipeline** - Orchestration templates and machine availability checks
- **lassen-pipeline** - Lassen supercomputer (LSF scheduler)
- **dane-pipeline** - Dane supercomputer (SLURM scheduler)
- **matrix-pipeline** - Matrix supercomputer (SLURM scheduler)
- **corona-pipeline** - Corona supercomputer (flux scheduler)
- **tioga-pipeline** - Tioga supercomputer (flux scheduler)
- **tuolumne-pipeline** - Tuolumne supercomputer (flux scheduler)
- **performance-pipeline** - Performance measurement and GitHub reporting
- **utility-draft-pr-filter** - Skip CI on draft pull requests
- **utility-branch-skip** - Skip CI on non-PR branches

### Legacy Include-Based Approach

The traditional include-based approach (using `pipelines/*.yml` and `utilities/*.yml`) is still available for GitLab versions < 17.0 or for projects that haven't yet migrated. See the documentation for migration guidance.

### Installing

This project requires no installation.
This project requires no installation. Components are consumed directly from the GitLab instance.

## Contributing

Expand Down
47 changes: 47 additions & 0 deletions catalog-info.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
# GitLab CI/CD Catalog metadata for RADIUSS Shared CI
spec:
inputs:
# This catalog provides reusable components for RADIUSS projects
# See README.md for usage examples
components:
utility-draft-pr-filter:
description: >
Filters draft pull requests to skip CI execution until PR is marked ready.
Requires GitHub integration with GITHUB_TOKEN.
utility-branch-skip:
description: >
Skips CI execution on branches that are not associated with pull requests.
Requires GitHub integration with GITHUB_TOKEN.
base-pipeline:
description: >
Main pipeline setup component that orchestrates machine-specific child pipelines,
handles GitHub status reporting, and manages multi-machine CI execution.
corona-pipeline:
description: >
Corona specific CI pipeline component that runs build and test jobs.
Uses flux scheduler with shared allocation optimization.
tioga-pipeline:
description: >
Tioga specific CI pipeline component that runs build and test jobs.
Uses flux scheduler with shared allocation optimization.
tuolumne-pipeline:
description: >
Tuolumne specific CI pipeline component that runs build and test jobs.
Uses flux scheduler with shared allocation optimization.
dane-pipeline:
description: >
Dane specific CI pipeline component that runs build and test jobs.
Uses SLURM scheduler with shared allocation optimization.
matrix-pipeline:
description: >
Matrix specific CI pipeline component that runs build and test jobs.
Uses SLURM scheduler with shared allocation optimization.
lassen-pipeline:
description: >
Lassen specific CI pipeline component that runs build and test jobs.
Uses LSF scheduler.
performance-pipeline:
description: >
Performance measurement pipeline for running and tracking performance tests
across LLNL supercomputers.
6 changes: 0 additions & 6 deletions customization/gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,6 @@ variables:
# Tells Gitlab to recursively update the submodules when cloning the project.
GIT_SUBMODULE_STRATEGY: recursive

##### 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
GITHUB_PROJECT_NAME: "..."
Expand Down
Loading