summaryrefslogtreecommitdiff
path: root/share/spack/gitlab/cloud_pipelines/configs/ci.yaml
blob: f65760c92350639d8d86b5796732c123407331b3 (plain) (blame)
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
ci:
  target: gitlab

  broken-tests-packages:
    - gptune

  broken-specs-url: "https://dummy.io" # s3://spack-binaries/broken-specs"

  pipeline-gen:
  - build-job:
      script::
      - - spack compiler find
        - cd ${SPACK_CONCRETE_ENV_DIR}
        - spack env activate --without-view .
        - if [ -n "$SPACK_BUILD_JOBS" ]; then spack config add "config:build_jobs:$SPACK_BUILD_JOBS"; fi
        - spack config add "config:install_tree:projections:${SPACK_JOB_SPEC_PKG_NAME}:'morepadding/{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'"
        - mkdir -p ${SPACK_ARTIFACTS_ROOT}/user_data
        # AWS runners mount E4S public key (verification), UO runners mount public/private (signing/verification)
        - if [[ -r /mnt/key/e4s.gpg ]]; then spack gpg trust /mnt/key/e4s.gpg; fi
        # UO runners mount intermediate ci public key (verification), AWS runners mount public/private (signing/verification)
        - if [[ -r /mnt/key/intermediate_ci_signing_key.gpg ]]; then spack gpg trust /mnt/key/intermediate_ci_signing_key.gpg; fi
        - if [[ -r /mnt/key/spack_public_key.gpg ]]; then spack gpg trust /mnt/key/spack_public_key.gpg; fi
        - spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2)
      after_script:
      - - cat /proc/loadavg || true
      variables:
        CI_JOB_SIZE: "default"
        # SPACK_VERBOSE_SCRIPT: "1"

  - signing-job:
      image: { "name": "ghcr.io/spack/notary:latest", "entrypoint": [""] }
      tags: ["aws"]
      script:
      - - aws s3 sync --exclude "*" --include "*spec.json*" ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache /tmp
        - /sign.sh
        - aws s3 sync --exclude "*" --include "*spec.json.sig*" /tmp ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache
        - aws s3 cp /tmp/public_keys ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache/_pgp --recursive --exclude "*" --include "*.pub"

  - copy-job:
      tags: ["service", "x86_64"]
      image: "ghcr.io/spack/python-aws-bash:0.0.1"
      before_script:
      - - if [[ $CI_COMMIT_TAG == "v"* ]]; then export SPACK_REPLACE_VERSION=$(echo "$CI_COMMIT_TAG" | sed 's/\(v[[:digit:]]\+\.[[:digit:]]\+\).*/releases\/\1/'); fi
        - if [[ $CI_COMMIT_TAG == "develop-"* ]]; then export SPACK_REPLACE_VERSION=develop; fi
        - export SPACK_BUILDCACHE_SOURCE=${SPACK_SOURCE_MIRROR//SPACK_REPLACE_VERSION/${SPACK_REPLACE_VERSION}}
      script:
      - - cd ${SPACK_CONCRETE_ENV_DIR}
        - spack env activate --without-view .
        - echo Copying environment specs from ${SRC_MIRROR} to ${SPACK_BUILDCACHE_DESTINATION}
        - spack buildcache sync "${SPACK_BUILDCACHE_SOURCE}" "${SPACK_BUILDCACHE_DESTINATION}"
        - curl -fLsS https://spack.github.io/keys/spack-public-binary-key.pub -o /tmp/spack-public-binary-key.pub
        - aws s3 cp /tmp/spack-public-binary-key.pub "${SPACK_BUILDCACHE_DESTINATION}/build_cache/_pgp/spack-public-binary-key.pub"
        - spack buildcache update-index --keys "${SPACK_BUILDCACHE_DESTINATION}"
      when: "always"
      retry:
        max: 2
        when:
        - "runner_system_failure"
        - "stuck_or_timeout_failure"
        - "script_failure"
      interruptible: true
      variables:
        CI_JOB_SIZE: "medium"
        KUBERNETES_CPU_REQUEST: "4000m"
        KUBERNETES_MEMORY_REQUEST: "16G"

  - reindex-job:
      tags: ["service"]
      variables:
        CI_JOB_SIZE: "medium"
        KUBERNETES_CPU_REQUEST: "4000m"
        KUBERNETES_MEMORY_REQUEST: "16G"

  - cleanup-job:
      tags: ["service"]
      variables:
        CI_JOB_SIZE: "small"
        KUBERNETES_CPU_REQUEST: "500m"
        KUBERNETES_MEMORY_REQUEST: "500M"

  - noop-job:
      tags: ["service"]
      variables:
        CI_JOB_SIZE: "small"
        KUBERNETES_CPU_REQUEST: "500m"
        KUBERNETES_MEMORY_REQUEST: "500M"

  - any-job:
      image: "ghcr.io/spack/e4s-ubuntu-18.04:v2021-10-18"
      tags: ["spack"]
      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
      - - . "./share/spack/setup-env.sh"
        - spack --version
        - spack arch