Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.97 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:
# ------------------------------------------------------------------------------
.parallel_job:
  image: registry.c4science.ch/scitas-stack/rhel:9.3
  parallel:
    matrix:
#      - environment: [helvetios]
#        slurm_options: ["-c 36"]
      - environment: [jed]
        slurm_options: ["-c 72 -p jed -q jed"]
      # - environment: [izar]
      #   slurm_options: ['-c 40 --gres gpu:2']
      #   apptainer_options: ['-nv']
  tags:
    - ${environment}
    - stack
  variables:
    COMMAND_OPTIONS_SBATCH: ${slurm_options}
    APPTAINER_EXEC_OPTIONS: ${apptainer_options} --bind ${BUILDCACHE}:/buildcache:rw --bind ${SPACK_PATH}:/spack:rw --bind ${STACK_PATH}:/stack:rw --writable-tmpfs
    SPACK_DISABLE_LOCAL_CONFIG: "true"
    SPACK_USER_CACHE_PATH: "/tmp/spack_cache_${CI_JOB_ID}"
    SPACK_SITE_CONFIG_PATH: "/stack/spack/etc"
    BUILDCACHE: "/work/scitas-ge/richart/ci/buildcache"
    SPACK_PATH: "/work/scitas-ge/richart/ci/${environment}/spack"
    STACK_PATH: "/work/scitas-ge/richart/ci/${environment}/stack"

# ------------------------------------------------------------------------------
spack:setup:
  stage: environment
  extends:
    - .parallel_job
  script:
    - SPACK_VERSION=$(jq -r .spack.version config.json)

    - |
      if [ ! -d /spack/spack ]; then
        git clone https://github.com/spack/spack.git -b $SPACK_VERSION /spack/spack
      else
        cd /spack/spack
        git fetch
        git checkout $SPACK_VERSION
        cd -
      fi

    - /spack/spack/bin/spack gpg trust $GPG_PRIVATE_KEY

    - |
      mkdir -p /stack/extra_repos/

      EXTERNAL_REPOS=$(jq -r '.spack.repos | keys[]' config.json)

      echo "Repos: ${EXTERNAL_REPOS}"