-
Notifications
You must be signed in to change notification settings - Fork 130
/
.gitlab-ci.yml
136 lines (126 loc) · 4.47 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# ---------------------------------------------------------------
# SUNDIALS Copyright Start
# Copyright (c) 2002-2021, Lawrence Livermore National Security
# and Southern Methodist University.
# All rights reserved.
#
# See the top-level LICENSE and NOTICE files for details.
#
# SPDX-License-Identifier: BSD-3-Clause
# SUNDIALS Copyright End
# ---------------------------------------------------------------
###############################################################################
# General GitLab pipelines configurations for supercomputers and Linux clusters
# at Lawrence Livermore National Laboratory (LLNL).
###############################################################################
# We define the following GitLab pipeline variables (all of which can be
# set from the GitLab CI "run pipeline" UI):
#
# GIT_SUBMODULE_STRATEGY:
# Tells Gitlab to recursively update the submodules when cloning.
#
# ALLOC_NAME:
# Allocation unique name.
#
# BUILD_ROOT:
# The path to the shared resources between all jobs. The BUILD_ROOT is unique to
# the pipeline, preventing any form of concurrency with other pipelines. This
# also means that the BUILD_ROOT directory will never be cleaned.
#
# DEFAULT_TIME:
# Default time to let the jobs run will be 30 minutes.
#
# BUILD_JOBS:
# Number of threads to use for builds.
#
# NCPU:
# Number of CPUs to alloc.
#
# VERBOSE_BUILD:
# Sets CMAKE_VERBOSE_MAKEFILE to TRUE when "ON".
#
# VERBOSE_TEST:
# Passes --verbose to CTest when "ON".
#
# ON_LASSEN:
# Should the Lassen pipeline run? Set to "ON" or "OFF" to enable/disable.
#
# ON_QUARTZ:
# Should the Quartz pipeline run? Set to "ON" or "OFF" to enable/disable.
#
# SPACK_PREFIX: prefix used for shared spack installation.
# Usually this a spack version number that matches the version set in the uberenv_config.json file.
# Spack installs go in /usr/workspace/sundials/spack_installs/${SPACK_PREFIX}/$(hostname).
#
# SHARED_SPACK:
# If "ON", then a shared spack install that has been pre-configured is utilized.
# If "OFF", then a new spack instance is created for every build (meaning all TPLs have to be installed).
# If "UPSTREAM" (the default), then the shared spack is used as an upstream for a build specific spack.
#
# BENCHMARK:
# If "ON", then the SUNDIALS benchmark problems are run and generate profiles.
#
# BENCHMARK_NNODES:
# Number of nodes to use for benchmarks. Default is 4.
#
# BENCHMARK_QUEUE:
# What queue to submit the benchmarks too. Default is pbatch (for Livermore).
variables:
GIT_SUBMODULE_STRATEGY: recursive
ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID}
BUILD_ROOT: ${CI_PROJECT_DIR}
DEFAULT_TIME: 30
BUILD_JOBS: 32
NCPUS: 12
VERBOSE_BUILD: "OFF"
VERBOSE_TEST: "OFF"
ON_LASSEN: "ON"
ON_QUARTZ: "ON"
ON_CORONA: "ON"
SPACK_PREFIX: "v0.19.1"
SHARED_SPACK: "UPSTREAM"
BENCHMARK: "OFF"
BENCHMARK_NNODES: 4
BENCHMARK_QUEUE: "pbatch"
# Normally, stages are blocking in Gitlab. However, using the keyword "needs" we
# can express dependencies between job that break the ordering of stages, in
# favor of a DAG.
# In practice q_*, l_* and c_* stages are independently run and start immediately.
stages:
- q_build_and_test
- l_build_and_test
- l_build_and_bench
- c_build_and_test
# These are also templates (.name) that define project specific build commands.
# If an allocation exist with the name defined in this pipeline, the job will
# use it (slurm specific).
.build_toss_3_x86_64_ib_script:
script:
- echo ${ALLOC_NAME}
- srun -p pdebug -N 1 -n ${NCPUS} --interactive -t ${DEFAULT_TIME}
--job-name=${ALLOC_NAME} .gitlab/build_and_test.sh
# Corona
.build_toss_4_x86_64_ib_corona_script:
script:
- echo ${ALLOC_NAME}
- flux alloc -N 1 -t ${DEFAULT_TIME} .gitlab/build_and_test.sh
# CORAL systems use spectrum LSF instead of SLURM
.build_blueos_3_ppc64le_ib_script:
script:
- echo ${ALLOC_NAME}
- bsub -q pdebug -J ${ALLOC_NAME} -nnodes 1 -W ${DEFAULT_TIME} -Is .gitlab/build_and_test.sh
# Benchmark job for CORAL systems
.build_blueos_3_ppc64le_ib_bench:
script:
- echo ${ALLOC_NAME}
- bsub -q ${BENCHMARK_QUEUE} -J ${ALLOC_NAME} -nnodes ${BENCHMARK_NNODES} -W ${DEFAULT_TIME} -Is .gitlab/build_and_bench.sh
# This is where jobs are included.
include:
- project: 'lc-templates/id_tokens'
file: 'id_tokens.yml'
- local: .gitlab/quartz-templates.yml
- local: .gitlab/quartz-jobs.yml
- local: .gitlab/lassen-templates.yml
- local: .gitlab/lassen-jobs.yml
- local: .gitlab/corona-templates.yml
- local: .gitlab/corona-jobs.yml