-
Nicolas Richart authoredNicolas Richart authored
.gitlab-ci.yml 4.68 KiB
# yaml-language-server: $schema=gitlab-ci
# yaml-language-server: $format.enable=false
stages:
- environment
- compilers
- concretize
- install
- deploy
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
TERM: ansi
.parallel_definition:
image: registry.c4science.ch/scitas-stack/rhel:9.3
parallel:
matrix:
- environmennnt: [jed]
slurm_options: ["-c 72 -p jed -q jed"]
stack: ["pinot-noir"]
# - environment: [izar]
# slurm_options: ['-c 40 --gres gpu:2']
# apptainer_options: ['-nv']
- environment: [helvetios]
slurm_options: ["-c 36"]
stack: ["pinot-noir"]
tags:
- ${environment}
- stack
variables:
environment: ${environment}
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
.parallel_job:
extends:
- .parallel_definition
variables:
MOUNT_POINT: /stack
BUILDCACHE: "/work/scitas-ge/richart/ci/buildcache"
COMMAND_OPTIONS_SBATCH: ${slurm_options}
APPTAINER_EXEC_OPTIONS: ${apptainer_options} --cleanenv --no-home --bind ${BUILDCACHE}:/buildcache:rw --bind ${CI_PROJECT_DIR}:${MOUNT_POINT}
.spack_cache:
cache:
key: ${stack}-${environment}-spack-cache
policy: pull-push
paths:
- ${stack}
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
spack:checkout:
stage: .pre
extends:
- .parallel_definition
before_script:
- git config --global --add --bool advice.detachedHead false
script:
- ls
timeout: 1h
spack:setup:
stage: environment
extends:
- .parallel_job
- .spack_cache
script:
- ci/setup_spack.sh
needs:
- job: spack:checkout
artifacts:
paths:
- ${stack}/environment
spack:install_compilers:
stage: compilers
extends:
- .parallel_job
- .spack_cache
script:
- ci/install_compilers.sh
- source ci/stack_env.sh
- ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} config blame compilers
after_script:
- if [ ! -e spack-install-compilers.xml ]; then
echo "{}" > ${MOUNT_POINT}/spack-install-compilers.xml
fi
artifacts:
paths:
- ${stack}/environment
reports:
junit: spack-install-*.xml
needs:
- job: spack:setup
parallel:
matrix:
- environment: $environment
- slurm_options: $slurm_options
- stack: $stack
timeout: 5h
spack:concretize:
stage: concretize
extends:
- .parallel_job
- .spack_cache
script:
- source ci/stack_env.sh
- ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} config blame
- ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} concretize
needs:
- job: spack:install_compilers
parallel:
matrix:
- environment: $environment
- slurm_options: $slurm_options
- stack: $stack
artifacts:
paths:
- ${stack}/environment
timeout: 2h
spack:install:
stage: install
extends:
- .parallel_job
- .spack_cache
script:
- source ci/stack_env.sh
- ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} install
--log-file spack-install.xml
--log-format junit
--only-concrete
--fail-fast
--show-log-on-error
- ${STACK_LOCATION}/spack/bin/spack -e ${SPACK_SYSTEM_CONFIG_PATH} buildcache create
--update-index
--key EDC904DCE3D2E84E
/buildcache
after_script:
- if [ ! -e spack-install.xml ]; then
echo "{}" > spack-install.xml
fi
needs:
- job: spack:concretize
parallel:
matrix:
- environment: $environment
- slurm_options: $slurm_options
- stack: $stack
artifacts:
paths:
- ${stack}/environment
reports:
junit: spack-install.xml
timeout: 10h
spack:mksquashfs:
stage: deploy
extends:
- .parallel_job
- .spack_cache
script:
- "mksquashfs ${CI_PROJECT_DIR} 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"'
needs:
- job: spack:install
parallel:
matrix:
- environment: $environment
- slurm_options: $slurm_options
- stack: $stack
timeout: 10h