Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update radiuss-shared-ci to new release (with radiuss-spack-configs) #238

Merged
merged 1 commit into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
55 changes: 33 additions & 22 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
###############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
###############################################################################

# DESCRIPTION:
###############################################################################
# General GitLab pipelines configurations for supercomputers and Linux clusters
# at Lawrence Livermore National Laboratory (LLNL).
#
# This entire pipeline is LLNL-specific
#
# Important note: This file is a copy of the template provided by
# llnl/radiuss-shared-ci. It should not require any change from the project to
# get started but could feature project-specific stages.
# 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.
#
# However, each project should provide:
# In addition, each project should copy over and complete:
# - .gitlab/custom-jobs-and-variables.yml
# - .gitlab/subscribed-pipelines.yml
# - .gitlab/${MACHINE}-build-and-test-extra.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).
###############################################################################

# We define the following GitLab pipeline variables:
variables:
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "CHAI"
GITHUB_PROJECT_ORG: "LLNL"
##### LC GITLAB CONFIGURATION
# Use the umdev LLNL service user to run CI. This prevents from running
# pipelines as an actual user.
LLNL_SERVICE_USER: umdev
Expand All @@ -34,42 +36,51 @@ variables:
CUSTOM_CI_BUILDS_DIR: /usr/workspace/umdev/gitlab-runner
# 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.
# TODO: add a clean-up mechanism
# 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: "CHAI"
GITHUB_PROJECT_ORG: "LLNL"
# Set the build-and-test command.
BUILD_AND_TEST_CMD: "./scripts/gitlab/build_and_test.sh"
# Override the pattern describing branches that will skip the "draft PR test".
# Add protected branches here. See default value in
JOB_CMD: "./scripts/gitlab/build_and_test.sh"
# 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 in sub-pipelines. Each sub-pipeline
# 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
stages:
- machine-checks
- prerequisites
- build-and-test

# Template for jobs triggering a build-and-test sub-pipelines:
# Template for jobs triggering a build-and-test sub-pipeline:
.build-and-test:
stage: build-and-test
trigger:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: v2023.08.0
file: '${CI_MACHINE}-build-and-test.yml'
- local: '.gitlab/${CI_MACHINE}-build-and-test-extra.yml'
ref: 'v2023.09.0'
file: 'pipelines/${CI_MACHINE}.yml'
- artifact: '${CI_MACHINE}-jobs.yml'
job: 'generate-job-lists'
strategy: depend
forward:
pipeline_variables: true

include:
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: v2023.08.0
# ref: 'v2023.09.0'
# file: 'preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: .gitlab/subscribed-pipelines.yml
- local: '.gitlab/subscribed-pipelines.yml'
25 changes: 12 additions & 13 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,42 @@
###############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
###############################################################################

# We define the following GitLab pipeline variables:
variables:

# On LLNL's ruby, 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}

# Ruby
# Arguments for top level allocation
RUBY_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --reservation=ci --qos=ci_ruby --time=20 --nodes=1"
RUBY_SHARED_ALLOC: "--exclusive --reservation=ci --qos=ci_ruby --time=20 --nodes=1"
# Arguments for job level allocation
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--overlap --reservation=ci --time=20 --nodes=1"
RUBY_JOB_ALLOC: "--overlap --reservation=ci --time=20 --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for ruby
PROJECT_RUBY_DEPS: ""

# Corona
# Arguments for top level allocation
CORONA_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --time-limit=45m --nodes=1"
CORONA_SHARED_ALLOC: "--exclusive --time-limit=45m --nodes=1"
# Arguments for job level allocation
CORONA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=30m --nodes=1 --begin-time=+5s"
CORONA_JOB_ALLOC: "--time-limit=30m --nodes=1 --begin-time=+5s"
# Project specific variants for corona
PROJECT_CORONA_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for corona
PROJECT_CORONA_DEPS: ""

# Tioga
# Arguments for top level allocation
TIOGA_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --time-limit=45m --nodes=1"
TIOGA_SHARED_ALLOC: "--exclusive --time-limit=45m --nodes=1"
# Arguments for job level allocation
TIOGA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=30m --nodes=1 --begin-time=+5s"
TIOGA_JOB_ALLOC: "--time-limit=30m --nodes=1 --begin-time=+5s"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for tioga
Expand All @@ -46,16 +45,16 @@ variables:
# Lassen and Butte use a different job scheduler (spectrum lsf) that does not
# allow pre-allocation the same way slurm does.
# Arguments for job level allocation
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 120"
LASSEN_JOB_ALLOC: "1 -W 120"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: "~shared +raja cuda_arch=70 tests=basic"
# Project specific deps for lassen
PROJECT_LASSEN_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.
.custom_build_and_test:
# 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:
variables:
JOB_TEMPLATE_CANNOT_BE_EMPTY: "True"
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
Expand All @@ -16,7 +16,7 @@
clang_12_0_1_ibm_gcc_8_3_1_cuda_10_1_243:
variables:
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda %[email protected] ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
extends: .build_and_test_on_lassen
extends: .job_on_lassen
allow_failure: true


Expand All @@ -28,18 +28,18 @@ clang_12_0_1_ibm_gcc_8_3_1_cuda_10_1_243:
# describe the spec here.

clang_12_0_1_libcpp:
extends: .build_and_test_on_lassen
extends: .job_on_lassen
variables:
SPEC: "~shared +raja tests=basic %[email protected] cflags==\"-DGTEST_HAS_CXXABI_H_=0\" cxxflags==\"-stdlib=libc++ -DGTEST_HAS_CXXABI_H_=0\""

clang_12_0_1_gcc_8_3_1_memleak:
extends: .build_and_test_on_lassen
extends: .job_on_lassen
variables:
SPEC: "~shared +raja tests=basic %[email protected] cxxflags==\"-fsanitize=address\""
ASAN_OPTIONS: "detect_leaks=1"

clang_12_0_1_datarace:
extends: .build_and_test_on_lassen
extends: .job_on_lassen
variables:
SPEC: "~shared +raja tests=basic %[email protected] cxxflags==\"-fsanitize=thread\""
allow_failure: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@
clang_14_0_6_develop_tpls:
variables:
SPEC: " %[email protected] ^umpire@develop ^raja@develop ^camp@main"
extends: .build_and_test_on_ruby
extends: .job_on_ruby

File renamed without changes.
31 changes: 25 additions & 6 deletions .gitlab/subscribed-pipelines.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
Expand All @@ -8,7 +8,7 @@
# The template job to test whether a machine is up.
# Expects CI_MACHINE defined to machine name.
.machine-check:
stage: machine-checks
stage: prerequisites
tags: [shell, oslic]
variables:
GIT_STRATEGY: none
Expand All @@ -29,6 +29,25 @@
# Comment the jobs for machines 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}/ruby.yml ${LOCAL_JOBS_PATH}/ruby.yml > ruby-jobs.yml
- cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-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
artifacts:
paths:
- ruby-jobs.yml
- lassen-jobs.yml
- corona-jobs.yml
- tioga-jobs.yml

# RUBY
ruby-up-check:
variables:
Expand All @@ -38,7 +57,7 @@ ruby-up-check:
ruby-build-and-test:
variables:
CI_MACHINE: "ruby"
needs: [ruby-up-check]
needs: [ruby-up-check, generate-job-lists]
extends: [.build-and-test]

# CORONA
Expand All @@ -50,7 +69,7 @@ corona-up-check:
corona-build-and-test:
variables:
CI_MACHINE: "corona"
needs: [corona-up-check]
needs: [corona-up-check, generate-job-lists]
extends: [.build-and-test]

# TIOGA
Expand All @@ -62,7 +81,7 @@ tioga-up-check:
tioga-build-and-test:
variables:
CI_MACHINE: "tioga"
needs: [tioga-up-check]
needs: [tioga-up-check, generate-job-lists]
extends: [.build-and-test]

# LASSEN
Expand All @@ -74,5 +93,5 @@ lassen-up-check:
lassen-build-and-test:
variables:
CI_MACHINE: "lassen"
needs: [lassen-up-check]
needs: [lassen-up-check, generate-job-lists]
extends: [.build-and-test]
Loading