3503d48897
When an error occurs, the gitlab-ci job log doesn't contain any useful information than the name of the failing test: FAIL: test_run (tests.package.test_python_paho_mqtt.TestPythonPahoMQTT) In order to encourage contributors to investigate issues reported by gitlab-ci, we want to print the last lines of the log file (build or runtime). Unfortunately, gitlab-ci job log completely strips lines ending with CRCRLF [1][2]. We have to take a look at the gitlab-ci raw log to see the complete log [3]. To workaround this issue, remove crlf from qemu serial stdio log while printing in the gitlab-ci job log (we don't want to change the log file generated by support/testing/run-tests and saved as artefacts). [1] https://gitlab.com/gitlab-org/gitlab/-/issues/218771 [2] https://gitlab.com/kubu93/buildroot/-/jobs/5492937691 [3] https://gitlab.com/kubu93/buildroot/-/jobs/5492937691/raw Cc: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Romain Naour <romain.naour@smile.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
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} > >(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
|