
Currently "spack ci generate" chooses the first matching entry in gitlab-ci:mappings to fill attributes for a generated build-job, requiring that the entire configuration matrix is listed out explicitly. This unfortunately causes significant problems in environments with large configuration spaces, for example the environment in #31598 (spack.yaml) supports 5 operating systems, 3 architectures and 130 packages with explicit size requirements, resulting in 1300 lines of configuration YAML. This patch adds a configuraiton option to the gitlab-ci schema called "match_behavior"; when it is set to "merge", all matching entries are applied in order to the final build-job, allowing a few entries to cover an entire matrix of configurations. The default for "match_behavior" is "first", which behaves as before this commit (only the runner attributes of the first match are used). In addition, match entries may now include a "remove-attributes" configuration, which allows matches to remove tags that have been aggregated by prior matches. This only makes sense to use with "match_behavior:merge". You can combine "runner-attributes" with "remove-attributes" to effectively override prior tags.
125 lines
3.5 KiB
YAML
125 lines
3.5 KiB
YAML
spack:
|
|
view: false
|
|
|
|
concretizer:
|
|
reuse: false
|
|
unify: when_possible
|
|
|
|
config:
|
|
install_tree:
|
|
root: /home/software/spack
|
|
padded_length: 512
|
|
projections:
|
|
all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'
|
|
|
|
definitions:
|
|
- default_specs:
|
|
- lz4 # MakefilePackage
|
|
- mpich~fortran # AutotoolsPackage
|
|
- py-setuptools # PythonPackage
|
|
- openjpeg # CMakePackage
|
|
- r-rcpp # RPackage
|
|
- ruby-rake # RubyPackage
|
|
- arch:
|
|
- '%gcc target=x86_64'
|
|
|
|
specs:
|
|
- matrix:
|
|
- - $default_specs
|
|
- - $arch
|
|
|
|
mirrors: { "mirror": "s3://spack-binaries/develop/build_systems" }
|
|
|
|
gitlab-ci:
|
|
script:
|
|
- . "./share/spack/setup-env.sh"
|
|
- spack --version
|
|
- cd ${SPACK_CONCRETE_ENV_DIR}
|
|
- spack env activate --without-view .
|
|
- spack config add "config:install_tree:projections:${SPACK_JOB_SPEC_PKG_NAME}:'morepadding/{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'"
|
|
- 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 -d ci rebuild
|
|
|
|
image:
|
|
name: "ghcr.io/spack/e4s-ubuntu-18.04:v2021-10-18"
|
|
entrypoint: [ "" ]
|
|
|
|
match_behavior: first
|
|
mappings:
|
|
- match:
|
|
- cmake
|
|
runner-attributes:
|
|
tags: [ "spack", "large", "x86_64"]
|
|
variables:
|
|
CI_JOB_SIZE: large
|
|
KUBERNETES_CPU_REQUEST: 8000m
|
|
KUBERNETES_MEMORY_REQUEST: 12G
|
|
|
|
- match:
|
|
- curl
|
|
- gettext
|
|
- mpich
|
|
- openjpeg
|
|
- sqlite
|
|
runner-attributes:
|
|
tags: [ "spack", "medium", "x86_64" ]
|
|
variables:
|
|
CI_JOB_SIZE: "medium"
|
|
KUBERNETES_CPU_REQUEST: "2000m"
|
|
KUBERNETES_MEMORY_REQUEST: "4G"
|
|
|
|
- match:
|
|
- bzip2
|
|
- diffutils
|
|
- findutils
|
|
- libffi
|
|
- libidn2
|
|
- libmd
|
|
- libsigsegv
|
|
- libxml2
|
|
- lz4
|
|
- openssl
|
|
- pkgconf
|
|
- tut
|
|
- util-linux-uuid
|
|
- util-macros
|
|
- xz
|
|
- zlib
|
|
runner-attributes:
|
|
tags: [ "spack", "medium", "x86_64" ]
|
|
variables:
|
|
CI_JOB_SIZE: "small"
|
|
KUBERNETES_CPU_REQUEST: "500m"
|
|
KUBERNETES_MEMORY_REQUEST: "500M"
|
|
|
|
- match:
|
|
- 'os=ubuntu18.04'
|
|
runner-attributes:
|
|
tags: ["spack", "x86_64"]
|
|
variables:
|
|
CI_JOB_SIZE: "default"
|
|
|
|
broken-specs-url: "s3://spack-binaries/broken-specs"
|
|
|
|
service-job-attributes:
|
|
before_script:
|
|
- . "./share/spack/setup-env.sh"
|
|
- spack --version
|
|
image: { "name": "ghcr.io/spack/e4s-ubuntu-18.04:v2021-10-18", "entrypoint": [""] }
|
|
tags: ["spack", "public", "x86_64"]
|
|
|
|
signing-job-attributes:
|
|
image: { "name": "ghcr.io/spack/notary:latest", "entrypoint": [""] }
|
|
tags: ["spack", "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
|
|
|
|
cdash:
|
|
build-group: Build tests for different build systems
|
|
url: https://cdash.spack.io
|
|
project: Spack Testing
|
|
site: Cloud Gitlab Infrastructure
|