1. Only download cached files that are not present in the current cache 2. Try pulling directly from the cache, not only with the target information
97 lines
2.1 KiB
YAML
97 lines
2.1 KiB
YAML
stages:
|
|
- generate
|
|
- lint
|
|
- cache
|
|
- trigger
|
|
|
|
variables:
|
|
PACKER_CONFIG_DIR: ./packer_config/
|
|
PACKER_CACHE_DIR: ./cache/
|
|
|
|
generate:
|
|
stage: generate
|
|
artifacts:
|
|
paths:
|
|
- distros/**/*.pkrvars.hcl
|
|
script: |-
|
|
for vars in $(find distros/ -name '*.pkrvars.hcl.sh'); do
|
|
"./${vars}"
|
|
done
|
|
|
|
distros:
|
|
stage: generate
|
|
image: $CI_REGISTRY_DIRECT/greg/ci-images/fedora:latest
|
|
artifacts:
|
|
reports:
|
|
dotenv: build.env
|
|
paths:
|
|
- .gitlab-ci-build.yml
|
|
script: |-
|
|
xonsh ./build.xsh -a --list
|
|
echo "BUILD=$(date +'%Y.%m.%d.%H')" >> build.env
|
|
|
|
validate:
|
|
stage: lint
|
|
needs:
|
|
- generate
|
|
cache:
|
|
- key:
|
|
files:
|
|
- sources/build.pkr.hcl
|
|
paths:
|
|
- ./packer_config/
|
|
script: |-
|
|
set -exo pipefail
|
|
packer init sources
|
|
for vars in $(find distros/ -name '*.pkrvars.hcl'); do
|
|
packer validate -except=upload -var-file=${vars} sources/
|
|
done
|
|
|
|
shellcheck:
|
|
stage: lint
|
|
script: |-
|
|
shellcheck --version
|
|
shellcheck $(find . -name '*.sh')
|
|
|
|
# Downloads all the ISO files so that we have a single cache with all
|
|
# of them present. This prevents a race condition where some of the
|
|
# files were being downloaded multiple times due to parallel jobs, and
|
|
# others were disappearing (e.g. daily builds for Rawhide) before we
|
|
# could get to them
|
|
downloads:
|
|
stage: cache
|
|
image: $CI_REGISTRY_DIRECT/greg/ci-images/fedora:latest
|
|
cache:
|
|
- key: isofiles
|
|
paths:
|
|
- cache/*.iso
|
|
- key:
|
|
files:
|
|
- sources/build.pkr.hcl
|
|
paths:
|
|
- ./packer_config/
|
|
script:
|
|
- set -exo pipefail
|
|
- packer init sources
|
|
- files=()
|
|
- |-
|
|
for vars in $(find distros/ -name '*.pkrvars.hcl'); do
|
|
file=$(echo var.iso.url | packer console -var-file=${vars} -config-type=hcl2 sources/)
|
|
if [ ! -e "cache/${file}" ]; then
|
|
files+=("-O" "${file}")
|
|
fi
|
|
done
|
|
- mkdir -p cache
|
|
- pushd cache
|
|
- curl --parallel -L "${files[@]}"
|
|
- popd
|
|
|
|
trigger:
|
|
stage: trigger
|
|
trigger:
|
|
include:
|
|
- artifact: .gitlab-ci-build.yml
|
|
job: distros
|
|
variables:
|
|
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
|