The script "utils/test-pkg" is systematically checking legal-info.
See [1]. This is useful to check all license hashes are up to date.
The Buildroot Gitlab CI integration has an identical testing
capability. It is faster because it can run all supported toolchain
test builds in parallel. See [2].
It was observed in [3] that the Gitlab CI test-pkg variant does not
check legal-info.
This commit align the Gitlab CI test-pkg behavior to the
"utils/test-pkg" script by adding legal-info in the run_make command
targets. Doing so checks legal-info in test-pkg cases, but also in
defconfigs (this was suggested by Arnout in [4]).
[1] https://gitlab.com/buildroot.org/buildroot/-/blob/2025.05/utils/test-pkg#L195
[2] https://gitlab.com/buildroot.org/buildroot/-/blob/2025.05/support/misc/gitlab-ci.yml.in#L129
[3] https://lore.kernel.org/buildroot/75e688887d95948c57a11416de3047b5@free.fr/
[4] https://lore.kernel.org/buildroot/614bec7e-0723-4bbd-8c3a-c801e91c29c3@rnout.be/T/#mcc803eeb38d09c1cc02b1333720845c54af86534
Cc: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
(cherry picked from commit c84762675c)
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
155 lines
4.3 KiB
YAML
155 lines
4.3 KiB
YAML
stages:
|
|
- download
|
|
- test
|
|
|
|
before_script:
|
|
- git config --global --add safe.directory ${CI_PROJECT_DIR}
|
|
|
|
.check-check-package_base:
|
|
stage: test
|
|
script:
|
|
- python3 -m pytest -v utils/checkpackagelib/
|
|
|
|
.check-check-symbol_base:
|
|
stage: test
|
|
script:
|
|
- python3 -m pytest -v utils/checksymbolslib/
|
|
|
|
.check-DEVELOPERS_base:
|
|
stage: test
|
|
script:
|
|
- utils/get-developers -v
|
|
|
|
.check-package_base:
|
|
stage: test
|
|
script:
|
|
- make check-package
|
|
|
|
.check-symbol_base:
|
|
stage: test
|
|
script:
|
|
- utils/check-symbols
|
|
|
|
.defconfig_check:
|
|
stage: test
|
|
script:
|
|
- DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g')
|
|
- echo "Configure Buildroot for ${DEFCONFIG_NAME}"
|
|
- make ${DEFCONFIG_NAME}
|
|
- support/scripts/check-dotconfig.py .config configs/${DEFCONFIG_NAME}
|
|
artifacts:
|
|
when: on_failure
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- .config
|
|
|
|
.run_make: &run_make
|
|
|
|
|
make O=${OUTPUT_DIR} world legal-info > >(tee build.log |grep '>>>') 2>&1 || {
|
|
echo 'Failed build last output'
|
|
tail -200 build.log
|
|
exit 1
|
|
}
|
|
|
|
.defconfig_base:
|
|
stage: test
|
|
script:
|
|
- DEFCONFIG_NAME=${CI_JOB_NAME}
|
|
- OUTPUT_DIR=output
|
|
- echo "Configure Buildroot for ${DEFCONFIG_NAME}"
|
|
- make ${DEFCONFIG_NAME}
|
|
- ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME}
|
|
- echo 'Build buildroot'
|
|
- *run_make
|
|
- |
|
|
./support/scripts/boot-qemu-image.py "${DEFCONFIG_NAME}" > >(tee runtime-test.log) 2>&1 || {
|
|
echo 'Failed runtime test last output'
|
|
tail -200 runtime-test.log
|
|
exit 1
|
|
}
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
- stuck_or_timeout_failure
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- .config
|
|
- build.log
|
|
- output/images/
|
|
- output/build/build-time.log
|
|
- output/build/packages-file-list.txt
|
|
- output/build/*/.config
|
|
- runtime-test.log
|
|
|
|
.runtime_test_download:
|
|
stage: download
|
|
# Keep test-dl directory so the downloaded files can be an artifact of
|
|
# the job passed to all jobs of next stages.
|
|
script: ./support/testing/run-tests -d test-dl/ --prepare-only
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- test-dl/
|
|
|
|
.runtime_test_base:
|
|
stage: test
|
|
# Keep build directories so the rootfs can be an artifact of the job. The
|
|
# runner will clean up those files for us.
|
|
# Multiply every emulator timeout by 10 to avoid sporadic failures in
|
|
# elastic runners.
|
|
script:
|
|
- TEST_CASE_NAME=${CI_JOB_NAME}
|
|
- echo "Starting runtime test ${TEST_CASE_NAME}"
|
|
- |
|
|
./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME} || {
|
|
echo 'Failed runtime test last output'
|
|
if [ -f test-output/*-run.log ]; then
|
|
tail -200 test-output/*-run.log | sed 's/\r\r$//'
|
|
else
|
|
tail -200 test-output/*-build.log
|
|
fi
|
|
exit 1
|
|
}
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
- stuck_or_timeout_failure
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- test-output/*.log
|
|
- test-output/*/.config
|
|
- test-output/*/images/*
|
|
|
|
.test_pkg:
|
|
stage: test
|
|
script:
|
|
- OUTPUT_DIR=${CI_JOB_NAME}
|
|
- echo "Configure Buildroot for ${OUTPUT_DIR}"
|
|
- make O=${OUTPUT_DIR} syncconfig
|
|
- make O=${OUTPUT_DIR} savedefconfig
|
|
- echo 'Build buildroot'
|
|
- *run_make
|
|
needs:
|
|
- pipeline: $PARENT_PIPELINE_ID
|
|
job: generate-gitlab-ci-yml
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
- stuck_or_timeout_failure
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- build.log
|
|
- br-test-pkg/*/.config
|
|
- br-test-pkg/*/defconfig
|
|
- br-test-pkg/*/build/build-time.log
|
|
- br-test-pkg/*/build/packages-file-list*.txt
|