8fb49636d6
Currently, the check of defconfigs is run for all branches, even those that are pushed only to run runtime tests. This is very inconvenient. In fact, we only want to check the defconfigs on standard branches, that is master, next, and the maintenance branches. This will also decrease drastically the number gitlab-ci minutes used when one pushes their repo to gitlab.com, where the number of CI minutes are now going to be pretty severely restricted. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Romain Naour <romain.naour@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
116 lines
2.7 KiB
Bash
Executable File
116 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
set -o pipefail
|
|
|
|
main() {
|
|
local template="${1}"
|
|
|
|
preamble "${template}"
|
|
|
|
gen_basics
|
|
gen_defconfigs
|
|
gen_tests
|
|
}
|
|
|
|
preamble() {
|
|
local template="${1}"
|
|
|
|
cat - "${template}" <<-_EOF_
|
|
# This file is generated; do not edit!
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
|
|
image: ${CI_JOB_IMAGE}
|
|
|
|
_EOF_
|
|
}
|
|
|
|
gen_basics() {
|
|
local tst
|
|
|
|
# Skip basic tests when explicitly building defconfigs or runtime tests
|
|
case "${CI_COMMIT_REF_NAME}" in
|
|
(*-defconfigs) return;;
|
|
(*-*_defconfig) return;;
|
|
(*-runtime-tests) return;;
|
|
(*-tests.*) return;;
|
|
esac
|
|
|
|
for tst in DEVELOPERS flake8 package; do
|
|
printf 'check-%s: { extends: .check-%s_base }\n' "${tst}" "${tst}"
|
|
done
|
|
}
|
|
|
|
gen_defconfigs() {
|
|
local -a defconfigs
|
|
local template cfg ext
|
|
|
|
defconfigs=( $(cd configs; LC_ALL=C ls -1 *_defconfig) )
|
|
|
|
if [ -n "${CI_COMMIT_TAG}" ]; then
|
|
# For tags, create a pipeline.
|
|
template=base
|
|
fi
|
|
if [ -n "${CI_PIPELINE_TRIGGERED}" ]; then
|
|
# For pipeline created by using a trigger token.
|
|
template=base
|
|
fi
|
|
case "${CI_COMMIT_REF_NAME}" in
|
|
# For master, next, and maintenance branches, only check the defconfigs
|
|
(master|next|????.??.x)
|
|
template=check
|
|
ext=_check
|
|
;;
|
|
# For the branch or tag name named *-defconfigs, create a pipeline.
|
|
(*-defconfigs)
|
|
template=base
|
|
;;
|
|
(*-*_defconfig)
|
|
defconfigs=( "${CI_COMMIT_REF_NAME##*-}" )
|
|
template=base
|
|
;;
|
|
esac
|
|
|
|
if [ -n "${template}" ]; then
|
|
for cfg in "${defconfigs[@]}"; do
|
|
printf '%s%s: { extends: .defconfig_%s }\n' \
|
|
"${cfg}" "${ext}" "${template}"
|
|
done
|
|
fi
|
|
}
|
|
|
|
gen_tests() {
|
|
local -a tests
|
|
local run_tests tst
|
|
|
|
tests=( $(./support/testing/run-tests -l 2>&1 \
|
|
| sed -r -e '/^test_run \((.*)\).*/!d; s//\1/'\
|
|
| LC_ALL=C sort)
|
|
)
|
|
|
|
run_tests=false
|
|
if [ -n "${CI_COMMIT_TAG}" ]; then
|
|
# For tags, create a pipeline.
|
|
run_tests=true
|
|
fi
|
|
if [ -n "${CI_PIPELINE_TRIGGERED}" ]; then
|
|
# For pipeline created by using a trigger token.
|
|
run_tests=true
|
|
fi
|
|
case "${CI_COMMIT_REF_NAME}" in
|
|
# For the branch or tag name named *-runtime-tests, create a pipeline.
|
|
(*-runtime-tests)
|
|
run_tests=true
|
|
;;
|
|
(*-tests.*)
|
|
tests=( "${CI_COMMIT_REF_NAME##*-}" )
|
|
run_tests=true
|
|
;;
|
|
esac
|
|
|
|
if ${run_tests}; then
|
|
printf '%s: { extends: .runtime_test_base }\n' "${tests[@]}"
|
|
fi
|
|
}
|
|
|
|
main "${@}"
|