Newer
Older
# yaml-language-server: $schema=gitlab-ci
# yaml-language-server: $format.enable=false
stages:
- environment
- concretize
- install
- deploy
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
CI_DATA: "/work/scitas-ge/richart/ci"
# - environment: [jed]
# slurm_options: ["-c 72 -p jed -q jed"]
# stack: ["pinot-noir"]
# app_image: ["registry.c4science.ch/scitas-stack/rhel9-kuma"]
# - environment: [helvetios]
# slurm_options: ["-c 36"]
# stack: ["pinot-noir"]
# app_image: ["registry.c4science.ch/scitas-stack/rhel9-kuma"]
slurm_options: ["-c 64 --reservation scitas"]
app_image: ["registry.c4science.ch/scitas-stack/rhel9-kuma"]
- environment: [kuma_l40s]
slurm_options: ["-c 64 --reservation scitas"]
app_image: ["registry.c4science.ch/scitas-stack/rhel9-kuma"]
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
.squashfs_var:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
variables:
SQUASH_ID: ${CI_MERGE_REQUEST_IID}
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
SQUASH_ID: ${CI_DEFAULT_BRANCH}
MOUNT_POINT: $(jq -Mrc .stack.mount_point ${CI_PROJECT_DIR}/stacks/${stack}/config.json)
FAKEHOME: "/scratch/$(id -un)"
STACK_VERSION: $(jq -Mrc .stack.version ${CI_PROJECT_DIR}/stacks/${stack}/config.json)
APPTAINER_EXEC_OPTIONS: >-
${apptainer_options}
--cleanenv
-H $(mktemp -d -p ${FAKEHOME}/):/home/$(id -un)
--bind ${CI_DATA}/buildcache:${MOUNT_POINT}/buildcache
--bind ${CI_DATA}/spack-mirror:${MOUNT_POINT}/spack-mirror
--bind ${CI_DATA}/squashfs-cache/:/squashfs-cache \
--bind ${CI_DATA}/overlayfs:/overlayfs \
--fusemount "host:/usr/libexec/apptainer/bin/squashfuse_ll ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower"
--fusemount "container:fuse-overlayfs -o squash_to_uid=$(id -u) -o squash_to_gid=$(id -g) -o lowerdir=/overlayfs/lower -o upperdir=/overlayfs/upper -o workdir=/overlayfs/wd ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
.spack_cache:
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
spack:checkout:
variables:
APPTAINER_EXEC_OPTIONS: --cleanenv --bind ${CI_DATA}
before_script:
- git config --global --add --bool advice.detachedHead false
- mkdir -p ${CI_DATA}/overlayfs
- mkdir -p ${CI_DATA}/squashfs-cache
- mkdir -p ${CI_DATA}/buildcache
- mkdir -p ${CI_DATA}/spack-mirror
- ./ci/prepare_squashfs.sh
timeout: 1h
spack:setup:
stage: environment
extends:
- .parallel_job
- ${STACK_LOCATION}/spack/bin/spack -e ${environment} config blame compilers
- ${STACK_LOCATION}/spack/bin/spack -e ${environment}
config blame | tee config-${environment}-${stack}.log
- ${STACK_LOCATION}/spack/bin/spack -e ${environment}
concretize | tee concretize-${environment}-${stack}.log
- cp ${SPACK_SYSTEM_CONFIG_PATH}/spack.lock spack-${environment}-${stack}.lock
- config-*.log
- concretize-*.log
- spack-*.lock
- ${STACK_LOCATION}/spack/bin/spack -e ${environment} install
--log-file spack-install-${environment}.xml
--log-format junit
--only-concrete
--fail-fast
--show-log-on-error
- ${STACK_LOCATION}/spack/bin/spack -e ${environment} find -vl | tee spack-find-${environment}-${stack}.log
- ${STACK_LOCATION}/spack/bin/spack -e ${environment}
buildcache create
--update-index
--key EDC904DCE3D2E84E
${MOUNT_POINT}/buildcache
paths:
- spack-find-*.log
spack:mksquashfs:
stage: deploy
extends:
- .parallel_job
- ${STACK_LOCATION}/spack/bin/spack
-e ${environment} module
lmod refresh --yes | tee spack-modules-${environment}-${stack}.log
- echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/stack/${stack}/stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs"
- "mksquashfs ${STACK_LOCATION} stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs"
- 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/stack/${stack}/stack-${stack}-${environment}-${CI_COMMIT_REF_SLUG}.sqfs"'
- job: spack:install
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH