964 lines
30 KiB
YAML
964 lines
30 KiB
YAML
stages: [ "generate", "build" ]
|
|
|
|
variables:
|
|
SPACK_DISABLE_LOCAL_CONFIG: "1"
|
|
SPACK_USER_CACHE_PATH: "${CI_PROJECT_DIR}/tmp/_user_cache/"
|
|
# PR_MIRROR_FETCH_DOMAIN: "https://binaries-prs.spack.io"
|
|
PR_MIRROR_FETCH_DOMAIN: "s3://spack-binaries-prs"
|
|
PR_MIRROR_PUSH_DOMAIN: "s3://spack-binaries-prs"
|
|
# PROTECTED_MIRROR_FETCH_DOMAIN: "https://binaries.spack.io"
|
|
PROTECTED_MIRROR_FETCH_DOMAIN: "s3://spack-binaries"
|
|
PROTECTED_MIRROR_PUSH_DOMAIN: "s3://spack-binaries"
|
|
|
|
default:
|
|
image: { "name": "ghcr.io/spack/e4s-ubuntu-18.04:v2021-10-18", "entrypoint": [""] }
|
|
|
|
# CI Platform-Arch
|
|
.cray_rhel_zen4:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "cray-rhel"
|
|
SPACK_TARGET_ARCH: "zen4"
|
|
|
|
.cray_sles_zen4:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "cray-sles"
|
|
SPACK_TARGET_ARCH: "zen4"
|
|
|
|
.darwin_x86_64:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "darwin"
|
|
SPACK_TARGET_ARCH: "x86_64"
|
|
|
|
.darwin_aarch64:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "darwin"
|
|
SPACK_TARGET_ARCH: "aarch64"
|
|
|
|
.linux_x86_64_v3:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "x86_64_v3"
|
|
|
|
.linux_x86_64_v4:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "x86_64_v4"
|
|
|
|
.linux_neoverse_v1:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "neoverse_v1"
|
|
|
|
.linux_neoverse_v2:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "neoverse_v2"
|
|
|
|
.linux_aarch64:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "aarch64"
|
|
|
|
.linux_power:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "linux"
|
|
SPACK_TARGET_ARCH: "ppc64le"
|
|
|
|
.win64-msvc2019:
|
|
variables:
|
|
SPACK_TARGET_PLATFORM: "win64"
|
|
SPACK_TARGET_ARCH: "x86_64"
|
|
|
|
########################################
|
|
# Job templates
|
|
########################################
|
|
.base-job:
|
|
variables:
|
|
PIPELINE_MIRROR_TEMPLATE: "single-src-protected-mirrors.yaml.in"
|
|
SPACK_CI_CONFIG_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/configs"
|
|
SPACK_CI_SCRIPTS_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/scripts"
|
|
|
|
rules:
|
|
- if: $SPACK_CI_DISABLE_STACKS =~ /.+/ && $SPACK_CI_STACK_NAME =~ $SPACK_CI_DISABLE_STACKS
|
|
when: never
|
|
- if: $SPACK_CI_ENABLE_STACKS =~ /.+/ && $SPACK_CI_STACK_NAME !~ $SPACK_CI_ENABLE_STACKS
|
|
when: never
|
|
- if: $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_NAME =~ /^releases\/v.*/
|
|
# Pipelines on develop/release branches only rebuild what is missing from the mirror
|
|
when: always
|
|
variables:
|
|
SPACK_PIPELINE_TYPE: "spack_protected_branch"
|
|
SPACK_COPY_BUILDCACHE: "${PROTECTED_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}"
|
|
SPACK_REQUIRE_SIGNING: "True"
|
|
OIDC_TOKEN_AUDIENCE: "protected_binary_mirror"
|
|
- if: $CI_COMMIT_TAG =~ /^develop-[\d]{4}-[\d]{2}-[\d]{2}$/ || $CI_COMMIT_TAG =~ /^v.*/
|
|
# Pipelines on tags (release or dev snapshots) only copy binaries from one mirror to another
|
|
when: always
|
|
variables:
|
|
SPACK_PIPELINE_TYPE: "spack_copy_only"
|
|
SPACK_COPY_BUILDCACHE: "${PROTECTED_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}"
|
|
PIPELINE_MIRROR_TEMPLATE: "copy-only-protected-mirrors.yaml.in"
|
|
OIDC_TOKEN_AUDIENCE: "protected_binary_mirror"
|
|
- if: $CI_COMMIT_REF_NAME =~ /^pr[\d]+_.*$/
|
|
# Pipelines on PR branches rebuild only what's missing, and do extra pruning
|
|
when: always
|
|
variables:
|
|
SPACK_PIPELINE_TYPE: "spack_pull_request"
|
|
SPACK_PRUNE_UNTOUCHED: "True"
|
|
SPACK_PRUNE_UNTOUCHED_DEPENDENT_DEPTH: "1"
|
|
# TODO: Change sync script to include target in branch name. Then we could
|
|
# TODO: have multiple types of "PR" pipeline here. It would be better if we could
|
|
# TODO: keep just this one and use a regex to capture the target branch, but so
|
|
# TODO: far gitlab doesn't support that.
|
|
PR_TARGET_REF_NAME: "develop"
|
|
PIPELINE_MIRROR_TEMPLATE: "multi-src-mirrors.yaml.in"
|
|
OIDC_TOKEN_AUDIENCE: "pr_binary_mirror"
|
|
|
|
.generate-common:
|
|
stage: generate
|
|
script:
|
|
- spack --version
|
|
- spack env activate --without-view share/spack/gitlab/cloud_pipelines/stacks/${SPACK_CI_STACK_NAME}
|
|
- spack
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}/${SPACK_TARGET_ARCH}"
|
|
${CI_STACK_CONFIG_SCOPES}
|
|
compiler find
|
|
- spack
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}/${SPACK_TARGET_ARCH}"
|
|
audit configs
|
|
# Command below needs to be `spack python` due to naming differences accross platforms
|
|
- spack python ${SPACK_CI_SCRIPTS_ROOT}/common/expand_vars.py
|
|
"${SPACK_CI_CONFIG_ROOT}/${PIPELINE_MIRROR_TEMPLATE}"
|
|
"${SPACK_CI_CONFIG_ROOT}/mirrors.yaml"
|
|
- spack config add -f "${SPACK_CI_CONFIG_ROOT}/mirrors.yaml"
|
|
- mkdir "${CI_PROJECT_DIR}/jobs_scratch_dir"
|
|
- spack
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}/${SPACK_TARGET_ARCH}"
|
|
config blame > "${CI_PROJECT_DIR}/jobs_scratch_dir/spack.yaml.blame"
|
|
- spack -v --color=always
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}"
|
|
--config-scope "${SPACK_CI_CONFIG_ROOT}/${SPACK_TARGET_PLATFORM}/${SPACK_TARGET_ARCH}"
|
|
ci generate --check-index-only -j ${SPACK_CONCRETIZE_JOBS}
|
|
--artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir"
|
|
--output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml"
|
|
artifacts:
|
|
paths:
|
|
- "${CI_PROJECT_DIR}/jobs_scratch_dir"
|
|
- "${CI_PROJECT_DIR}/tmp/_user_cache/cache/patches"
|
|
- "${CI_PROJECT_DIR}/tmp/_user_cache/cache/providers"
|
|
- "${CI_PROJECT_DIR}/tmp/_user_cache/cache/tags"
|
|
variables:
|
|
SPACK_CONCRETIZE_JOBS: 8
|
|
KUBERNETES_CPU_REQUEST: 8000m
|
|
KUBERNETES_MEMORY_REQUEST: 16G
|
|
# avoid moving targets like branches and tags
|
|
SPACK_CONCRETIZER_REQUIRE_CHECKSUM: 1
|
|
SPACK_BACKTRACE: 1
|
|
interruptible: true
|
|
timeout: 60 minutes
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- always
|
|
|
|
# Generate without tags for cases using external runners
|
|
.generate-base:
|
|
extends: [ ".base-job", ".generate-common" ]
|
|
before_script:
|
|
- uname -a || true
|
|
- grep -E 'vendor|model name' /proc/cpuinfo 2>/dev/null | sort -u || head -n10 /proc/cpuinfo 2>/dev/null || true
|
|
- nproc || true
|
|
- cat /proc/loadavg || true
|
|
- cat /proc/meminfo | grep 'MemTotal\|MemFree' || true
|
|
- . "./share/spack/setup-env.sh"
|
|
- spack arch
|
|
after_script:
|
|
- cat /proc/loadavg || true
|
|
- cat /proc/meminfo | grep 'MemTotal\|MemFree' || true
|
|
|
|
.generate-x86_64:
|
|
extends: [ ".generate-base" ]
|
|
tags: ["spack", "public", "medium", "x86_64_v3"]
|
|
|
|
.generate-aarch64:
|
|
extends: [ ".generate-base" ]
|
|
tags: ["spack", "public", "medium", "aarch64"]
|
|
|
|
.generate-neoverse_v1:
|
|
extends: [ ".generate-base" ]
|
|
tags: ["spack", "public", "medium", "aarch64", "graviton3"]
|
|
|
|
.generate-neoverse-v2:
|
|
extends: [ ".generate-base" ]
|
|
tags: ["spack", "public", "medium", "neoverse_v2"]
|
|
|
|
.generate-win64:
|
|
extends: [ ".base-job", ".generate-common" ]
|
|
before_script:
|
|
- $ErrorActionOld=$ErrorActionPreference
|
|
- $ErrorActionPreference="SilentlyContinue"
|
|
- python -c"import psutil;print(psutil.getloadavg())"
|
|
- (Get-WmiObject Win32_PhysicalMemory | measure-object Capacity -sum).sum/1kb
|
|
- $ErrorActionPreference=$ErrorActionOld
|
|
- . .\share\spack\setup-env.ps1
|
|
after_script:
|
|
- $ErrorActionOld=$ErrorActionPreference
|
|
- $ErrorActionPreference="SilentlyContinue"
|
|
- python -c"import psutil;print(psutil.getloadavg())"
|
|
- (Get-WmiObject Win32_PhysicalMemory | measure-object Capacity -sum).sum/1kb
|
|
- $ErrorActionPreference=$ErrorActionOld
|
|
|
|
tags: ["spack", "public", "medium", "x86_64-win"]
|
|
image: "ghcr.io/johnwparent/windows-server21h2:sha-1c12b61"
|
|
|
|
.build:
|
|
extends: [ ".base-job" ]
|
|
stage: build
|
|
|
|
########################################
|
|
# TEMPLATE FOR ADDING ANOTHER PIPELINE
|
|
########################################
|
|
#
|
|
# First add a new spack.yml defining the pipeline to run in
|
|
# share/spack/gitlab/cloud_pipelines/stacks/my-super-cool-stack/spack.yaml
|
|
#
|
|
# Then add the following entries at the bottom of this file.
|
|
#
|
|
# Note that when extending other jobs, gitlab does not merge lists (nor
|
|
# does it merge dictionary values in the case of key conflicts). So lists
|
|
# and duplicated dictionary keys are simply overridden. For this reason,
|
|
# you should inlclude your custom definitions at the end of the of the
|
|
# extends list.
|
|
#
|
|
########################################
|
|
# My Super Cool Pipeline
|
|
########################################
|
|
# .my-super-cool-stack:
|
|
# extends: [ ".linux_x86_64_v3" ]
|
|
# variables:
|
|
# SPACK_CI_STACK_NAME: my-super-cool-stack
|
|
# tags: [ "all", "tags", "your", "job", "needs"]
|
|
#
|
|
# my-super-cool-stack-generate:
|
|
# extends: [ ".generate", ".my-super-cool-stack" ]
|
|
#
|
|
# my-super-cool-stack-build:
|
|
# extends: [ ".build", ".my-super-cool-stack" ]
|
|
# trigger:
|
|
# include:
|
|
# - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
# job: my-super-cool-stack-generate
|
|
# strategy: depend
|
|
# needs:
|
|
# - artifacts: True
|
|
# job: my-super-cool-stack-generate
|
|
|
|
########################################
|
|
# E4S pipeline
|
|
########################################
|
|
.e4s:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s
|
|
|
|
e4s-generate:
|
|
extends: [ ".e4s", ".generate-x86_64"]
|
|
image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4:2024.03.01
|
|
|
|
e4s-build:
|
|
extends: [ ".e4s", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-generate
|
|
|
|
########################################
|
|
# E4S Neoverse V2
|
|
########################################
|
|
.e4s-neoverse-v2:
|
|
extends: [ ".linux_neoverse_v2" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-neoverse-v2
|
|
|
|
e4s-neoverse-v2-generate:
|
|
extends: [ ".e4s-neoverse-v2", ".generate-neoverse-v2" ]
|
|
image: ghcr.io/spack/spack/ubuntu22.04-runner-arm64-gcc-11.4:2024.03.01
|
|
|
|
e4s-neoverse-v2-build:
|
|
extends: [ ".e4s-neoverse-v2", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-neoverse-v2-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-neoverse-v2-generate
|
|
|
|
########################################
|
|
# E4S ROCm External pipeline
|
|
########################################
|
|
.e4s-rocm-external:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-rocm-external
|
|
|
|
e4s-rocm-external-generate:
|
|
extends: [ ".e4s-rocm-external", ".generate-x86_64"]
|
|
image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08
|
|
|
|
e4s-rocm-external-build:
|
|
extends: [ ".e4s-rocm-external", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-rocm-external-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-rocm-external-generate
|
|
|
|
########################################
|
|
# E4S OneAPI Pipeline
|
|
########################################
|
|
.e4s-oneapi:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-oneapi
|
|
|
|
e4s-oneapi-generate:
|
|
extends: [ ".e4s-oneapi", ".generate-x86_64"]
|
|
image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-oneapi-2024.2:2024.09.06
|
|
|
|
e4s-oneapi-build:
|
|
extends: [ ".e4s-oneapi", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-oneapi-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-oneapi-generate
|
|
|
|
########################################
|
|
# E4S on Power
|
|
########################################
|
|
.e4s-power-generate-tags-and-image:
|
|
image: { "name": "ghcr.io/spack/ubuntu20.04-runner-ppc64-gcc-11.4:2023.08.01", "entrypoint": [""] }
|
|
tags: ["spack", "public", "large", "ppc64le"]
|
|
|
|
.e4s-power:
|
|
extends: [".linux_power"]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-power
|
|
# Override concretization pool for metal runners
|
|
SPACK_CONCRETIZE_JOBS: 16
|
|
|
|
e4s-power-generate:
|
|
extends: [ ".e4s-power", ".generate-x86_64", ".e4s-power-generate-tags-and-image"]
|
|
|
|
e4s-power-build:
|
|
extends: [ ".e4s-power", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-power-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-power-generate
|
|
|
|
#########################################
|
|
# Build tests for different build-systems
|
|
#########################################
|
|
.build_systems:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: build_systems
|
|
|
|
build_systems-generate:
|
|
extends: [ ".build_systems", ".generate-x86_64"]
|
|
|
|
build_systems-build:
|
|
extends: [ ".build_systems", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: build_systems-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: build_systems-generate
|
|
|
|
###########################################
|
|
# Build tests for different developer tools
|
|
###########################################
|
|
.developer-tools-x86_64_v3-linux-gnu:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: developer-tools-x86_64_v3-linux-gnu
|
|
|
|
developer-tools-x86_64_v3-linux-gnu-generate:
|
|
extends: [ ".developer-tools-x86_64_v3-linux-gnu", ".generate-x86_64"]
|
|
image: ghcr.io/spack/x86_64_v3-linux-gnu:2024-12-12
|
|
|
|
developer-tools-x86_64_v3-linux-gnu-build:
|
|
extends: [ ".developer-tools-x86_64_v3-linux-gnu", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: developer-tools-x86_64_v3-linux-gnu-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: developer-tools-x86_64_v3-linux-gnu-generate
|
|
|
|
###########################################
|
|
# Build tests for different developer tools
|
|
# darwin
|
|
###########################################
|
|
.developer-tools-darwin:
|
|
extends: [ ".darwin_aarch64" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: developer-tools-darwin
|
|
|
|
developer-tools-darwin-generate:
|
|
tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ]
|
|
extends: [ ".developer-tools-darwin", ".generate-base"]
|
|
|
|
developer-tools-darwin-build:
|
|
extends: [ ".developer-tools-darwin", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: developer-tools-darwin-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: developer-tools-darwin-generate
|
|
|
|
#########################################
|
|
# RADIUSS
|
|
#########################################
|
|
.radiuss:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: radiuss
|
|
|
|
radiuss-generate:
|
|
extends: [ ".radiuss", ".generate-x86_64" ]
|
|
|
|
radiuss-build:
|
|
extends: [ ".radiuss", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: radiuss-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: radiuss-generate
|
|
|
|
########################################
|
|
# RADIUSS for AWS
|
|
########################################
|
|
|
|
.tags-x86_64_v4:
|
|
tags: ["spack", "public", "aws", "medium", "x86_64_v4"]
|
|
|
|
# Include this AFTER .*-generate in "extends" list
|
|
.radiuss-aws-overrides:
|
|
# This controls image for generate step; build step is controlled by spack.yaml
|
|
# Note that generator emits OS info for build so these should be the same.
|
|
image: { "name": "ghcr.io/spack/e4s-amazonlinux-2:v2023-03-09", "entrypoint": [""] }
|
|
|
|
.radiuss-aws:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: radiuss-aws
|
|
|
|
radiuss-aws-generate:
|
|
extends: [ ".radiuss-aws", ".generate-x86_64", ".radiuss-aws-overrides", ".tags-x86_64_v4" ]
|
|
|
|
radiuss-aws-build:
|
|
extends: [ ".radiuss-aws", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: radiuss-aws-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: radiuss-aws-generate
|
|
|
|
|
|
# Parallel Pipeline for aarch64 (reuses override image, but generates and builds on aarch64)
|
|
|
|
.radiuss-aws-aarch64:
|
|
extends: [ ".linux_aarch64" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: radiuss-aws-aarch64
|
|
|
|
radiuss-aws-aarch64-generate:
|
|
extends: [ ".radiuss-aws-aarch64", ".generate-aarch64", ".radiuss-aws-overrides" ]
|
|
|
|
radiuss-aws-aarch64-build:
|
|
extends: [ ".radiuss-aws-aarch64", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: radiuss-aws-aarch64-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: radiuss-aws-aarch64-generate
|
|
|
|
########################################
|
|
# ECP Data & Vis SDK
|
|
########################################
|
|
.data-vis-sdk:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: data-vis-sdk
|
|
|
|
data-vis-sdk-generate:
|
|
extends: [ ".data-vis-sdk", ".generate-x86_64"]
|
|
image: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01
|
|
|
|
data-vis-sdk-build:
|
|
extends: [ ".data-vis-sdk", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: data-vis-sdk-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: data-vis-sdk-generate
|
|
|
|
########################################
|
|
# AWS ISC Applications (x86_64)
|
|
########################################
|
|
|
|
# Call this AFTER .*-generate
|
|
.aws-isc-overrides:
|
|
# This controls image for generate step; build step is controlled by spack.yaml
|
|
# Note that generator emits OS info for build so these should be the same.
|
|
image: { "name": "ghcr.io/spack/e4s-amazonlinux-2:v2023-03-09", "entrypoint": [""] }
|
|
|
|
.aws-isc:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: aws-isc
|
|
|
|
aws-isc-generate:
|
|
extends: [ ".aws-isc", ".generate-x86_64", ".aws-isc-overrides", ".tags-x86_64_v4" ]
|
|
|
|
aws-isc-build:
|
|
extends: [ ".aws-isc", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: aws-isc-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: aws-isc-generate
|
|
|
|
# Parallel Pipeline for aarch64 (reuses override image, but generates and builds on aarch64)
|
|
|
|
.aws-isc-aarch64:
|
|
extends: [ ".linux_aarch64" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: aws-isc-aarch64
|
|
|
|
aws-isc-aarch64-generate:
|
|
extends: [ ".aws-isc-aarch64", ".generate-aarch64", ".aws-isc-overrides" ]
|
|
|
|
aws-isc-aarch64-build:
|
|
extends: [ ".aws-isc-aarch64", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: aws-isc-aarch64-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: aws-isc-aarch64-generate
|
|
|
|
|
|
########################################
|
|
# Spack Tutorial
|
|
########################################
|
|
.tutorial:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: tutorial
|
|
|
|
tutorial-generate:
|
|
extends: [ ".tutorial", ".generate-x86_64"]
|
|
image: ghcr.io/spack/tutorial-ubuntu-22.04:v2023-10-30
|
|
|
|
tutorial-build:
|
|
extends: [ ".tutorial", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: tutorial-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: tutorial-generate
|
|
|
|
#######################################
|
|
# Machine Learning - Linux x86_64 (CPU)
|
|
#######################################
|
|
.ml-linux-x86_64-cpu:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-linux-x86_64-cpu
|
|
|
|
ml-linux-x86_64-cpu-generate:
|
|
extends: [ ".generate-x86_64", .ml-linux-x86_64-cpu, ".tags-x86_64_v4" ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
ml-linux-x86_64-cpu-build:
|
|
extends: [ ".build", ".ml-linux-x86_64-cpu" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-linux-x86_64-cpu-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-linux-x86_64-cpu-generate
|
|
|
|
########################################
|
|
# Machine Learning - Linux x86_64 (CUDA)
|
|
########################################
|
|
.ml-linux-x86_64-cuda:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-linux-x86_64-cuda
|
|
|
|
ml-linux-x86_64-cuda-generate:
|
|
extends: [ ".generate-x86_64", .ml-linux-x86_64-cuda, ".tags-x86_64_v4" ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
ml-linux-x86_64-cuda-build:
|
|
extends: [ ".build", ".ml-linux-x86_64-cuda" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-linux-x86_64-cuda-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-linux-x86_64-cuda-generate
|
|
|
|
########################################
|
|
# Machine Learning - Linux x86_64 (ROCm)
|
|
########################################
|
|
.ml-linux-x86_64-rocm:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-linux-x86_64-rocm
|
|
|
|
ml-linux-x86_64-rocm-generate:
|
|
extends: [ ".generate-x86_64", .ml-linux-x86_64-rocm, ".tags-x86_64_v4" ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
ml-linux-x86_64-rocm-build:
|
|
extends: [ ".build", ".ml-linux-x86_64-rocm" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-linux-x86_64-rocm-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-linux-x86_64-rocm-generate
|
|
|
|
########################################
|
|
# Machine Learning - Linux aarch64 (CPU)
|
|
########################################
|
|
.ml-linux-aarch64-cpu:
|
|
extends: [ ".linux_aarch64" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-linux-aarch64-cpu
|
|
|
|
ml-linux-aarch64-cpu-generate:
|
|
extends: [ ".generate-aarch64", .ml-linux-aarch64-cpu ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
ml-linux-aarch64-cpu-build:
|
|
extends: [ ".build", ".ml-linux-aarch64-cpu" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-linux-aarch64-cpu-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-linux-aarch64-cpu-generate
|
|
|
|
#########################################
|
|
# Machine Learning - Linux aarch64 (CUDA)
|
|
#########################################
|
|
.ml-linux-aarch64-cuda:
|
|
extends: [ ".linux_aarch64" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-linux-aarch64-cuda
|
|
|
|
ml-linux-aarch64-cuda-generate:
|
|
extends: [ ".generate-aarch64", .ml-linux-aarch64-cuda ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
ml-linux-aarch64-cuda-build:
|
|
extends: [ ".build", ".ml-linux-aarch64-cuda" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-linux-aarch64-cuda-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-linux-aarch64-cuda-generate
|
|
|
|
#########################################
|
|
# Machine Learning - Darwin aarch64 (MPS)
|
|
#########################################
|
|
.ml-darwin-aarch64-mps:
|
|
extends: [".darwin_aarch64"]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: ml-darwin-aarch64-mps
|
|
|
|
ml-darwin-aarch64-mps-generate:
|
|
tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ]
|
|
extends: [ ".ml-darwin-aarch64-mps", ".generate-base"]
|
|
|
|
ml-darwin-aarch64-mps-build:
|
|
extends: [ ".ml-darwin-aarch64-mps", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: ml-darwin-aarch64-mps-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: ml-darwin-aarch64-mps-generate
|
|
|
|
########################################
|
|
# AWS ParallelCluster
|
|
########################################
|
|
|
|
.aws-pcluster-generate:
|
|
image: { "name": "ghcr.io/spack/pcluster-amazonlinux-2:v2024-10-07", "entrypoint": [""] }
|
|
|
|
# X86_64_V4 (one pipeline per target)
|
|
.aws-pcluster-x86_64_v4:
|
|
variables:
|
|
SPACK_CI_STACK_NAME: aws-pcluster-x86_64_v4
|
|
|
|
aws-pcluster-generate-x86_64_v4:
|
|
extends: [ ".linux_x86_64_v4", ".aws-pcluster-x86_64_v4", ".generate-base", ".tags-x86_64_v4", ".aws-pcluster-generate"]
|
|
before_script:
|
|
- - . "./share/spack/setup-env.sh"
|
|
# TODO: Move this to the container next time it is rebuilt
|
|
- export PATH=/home/software/spack/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeh/linux-amzn2-x86_64_v3/gcc-7.3.1/binutils-2.37-qvccg7zpskturysmr4bzbsfrx34kvazo/bin:$PATH
|
|
|
|
aws-pcluster-build-x86_64_v4:
|
|
extends: [ ".linux_x86_64_v4", ".aws-pcluster-x86_64_v4", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: aws-pcluster-generate-x86_64_v4
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: aws-pcluster-generate-x86_64_v4
|
|
|
|
# Neoverse_v1 (one pipeline per target)
|
|
.aws-pcluster-neoverse_v1:
|
|
variables:
|
|
SPACK_CI_STACK_NAME: aws-pcluster-neoverse_v1
|
|
|
|
aws-pcluster-generate-neoverse_v1:
|
|
# TODO: Use updated runner tags: https://github.com/spack/spack-infrastructure/pull/694/files
|
|
extends: [ ".linux_neoverse_v1", ".aws-pcluster-neoverse_v1", ".generate-neoverse_v1", ".aws-pcluster-generate"]
|
|
before_script:
|
|
- - . "./share/spack/setup-env.sh"
|
|
# TODO: Move this to the container next time it is rebuilt
|
|
- export PATH=/home/software/spack/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeholder__/__spack_path_placeh/linux-amzn2-aarch64/gcc-7.3.1/binutils-2.37-2yxz3xsjfmesxujxtlrgcctxlyilynmp/bin:$PATH
|
|
|
|
aws-pcluster-build-neoverse_v1:
|
|
extends: [ ".linux_neoverse_v1", ".aws-pcluster-neoverse_v1", ".build" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: aws-pcluster-generate-neoverse_v1
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: aws-pcluster-generate-neoverse_v1
|
|
|
|
# Cray definitions
|
|
.generate-cray:
|
|
extends: [ ".generate-common", ".base-job" ]
|
|
variables:
|
|
# Override concretization pool for metal runners
|
|
SPACK_CONCRETIZE_JOBS: 16
|
|
|
|
before_script:
|
|
- echo $PATH
|
|
- module avail
|
|
- module list
|
|
- uname -a || true
|
|
- grep -E 'vendor|model name' /proc/cpuinfo 2>/dev/null | sort -u || head -n10 /proc/cpuinfo 2>/dev/null || true
|
|
- nproc || true
|
|
- cat /proc/loadavg || true
|
|
- cat /proc/meminfo | grep 'MemTotal\|MemFree' || true
|
|
- . "./share/spack/setup-env.sh"
|
|
after_script:
|
|
- cat /proc/loadavg || true
|
|
- cat /proc/meminfo | grep 'MemTotal\|MemFree' || true
|
|
|
|
.generate-cray-rhel:
|
|
tags: [ "cray-rhel-zen4", "public" ]
|
|
extends: [ ".generate-cray" ]
|
|
|
|
.generate-cray-sles:
|
|
tags: [ "cray-sles-zen4", "public" ]
|
|
extends: [ ".generate-cray" ]
|
|
|
|
|
|
#######################################
|
|
# E4S - Cray RHEL
|
|
#######################################
|
|
.e4s-cray-rhel:
|
|
extends: [ ".cray_rhel_zen4" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-cray-rhel
|
|
|
|
e4s-cray-rhel-generate:
|
|
extends: [ ".generate-cray-rhel", ".e4s-cray-rhel" ]
|
|
|
|
e4s-cray-rhel-build:
|
|
allow_failure: true # libsci_cray.so broken, misses DT_NEEDED for libdl.so
|
|
extends: [ ".build", ".e4s-cray-rhel" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-cray-rhel-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-cray-rhel-generate
|
|
|
|
#######################################
|
|
# E4S - Cray SLES
|
|
#######################################
|
|
.e4s-cray-sles:
|
|
extends: [ ".cray_sles_zen4" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: e4s-cray-sles
|
|
|
|
e4s-cray-sles-generate:
|
|
extends: [ ".generate-cray-sles", ".e4s-cray-sles" ]
|
|
|
|
e4s-cray-sles-build:
|
|
allow_failure: true # libsci_cray.so broken, misses DT_NEEDED for libdl.so
|
|
extends: [ ".build", ".e4s-cray-sles" ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: e4s-cray-sles-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: e4s-cray-sles-generate
|
|
|
|
#######################################
|
|
# Windows Visualization Tools
|
|
#######################################
|
|
.windows-vis:
|
|
extends: [".win64-msvc2019"]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: windows-vis
|
|
# TODO: windows runners are currently m5.2xlarge with a max 8 vCPU and 32GiB MEM
|
|
# setting request to half of the available allocation to allow room for overhead.
|
|
KUBERNETES_CPU_REQUEST: 4000m
|
|
KUBERNETES_MEMORY_REQUEST: 16G
|
|
|
|
windows-vis-generate:
|
|
extends: [ ".generate-win64", ".windows-vis" ]
|
|
|
|
windows-vis-build:
|
|
extends: [ ".build", ".windows-vis"]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: windows-vis-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: windows-vis-generate
|
|
|
|
#######################################
|
|
# Bootstrap x86_64-linux-gnu
|
|
#######################################
|
|
.bootstrap-x86_64-linux-gnu:
|
|
extends: [ ".linux_x86_64_v3" ]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: bootstrap-x86_64-linux-gnu
|
|
|
|
bootstrap-x86_64-linux-gnu-generate:
|
|
extends: [ .generate-x86_64, .bootstrap-x86_64-linux-gnu ]
|
|
image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2
|
|
|
|
bootstrap-x86_64-linux-gnu-build:
|
|
extends: [ .build, .bootstrap-x86_64-linux-gnu ]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: bootstrap-x86_64-linux-gnu-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: True
|
|
job: bootstrap-x86_64-linux-gnu-generate
|
|
|
|
#######################################
|
|
# Bootstrap aarch64-darwin
|
|
#######################################
|
|
.bootstrap-aarch64-darwin:
|
|
extends: [.darwin_aarch64]
|
|
variables:
|
|
SPACK_CI_STACK_NAME: bootstrap-aarch64-darwin
|
|
|
|
bootstrap-aarch64-darwin-generate:
|
|
tags: [macos-ventura, apple-clang-15, aarch64-macos]
|
|
extends: [.bootstrap-aarch64-darwin, .generate-base]
|
|
|
|
bootstrap-aarch64-darwin-build:
|
|
extends: [.bootstrap-aarch64-darwin, .build]
|
|
trigger:
|
|
include:
|
|
- artifact: jobs_scratch_dir/cloud-ci-pipeline.yml
|
|
job: bootstrap-aarch64-darwin-generate
|
|
strategy: depend
|
|
needs:
|
|
- artifacts: true
|
|
job: bootstrap-aarch64-darwin-generate
|