2017-02-14 00:23:03 +01:00
|
|
|
# Configuration for Gitlab-CI.
|
|
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
|
|
|
2020-08-15 09:47:00 +02:00
|
|
|
image: buildroot/base:20200814.2228
|
2017-02-14 00:23:03 +01:00
|
|
|
|
2019-04-08 05:22:54 +02:00
|
|
|
.check_base:
|
2020-07-18 17:47:13 +02:00
|
|
|
rules:
|
|
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/ || $CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
|
|
|
|
when: never
|
|
|
|
- when: always
|
2019-04-08 05:22:54 +02:00
|
|
|
|
2017-06-30 18:42:53 +02:00
|
|
|
check-DEVELOPERS:
|
2019-04-08 05:22:54 +02:00
|
|
|
extends: .check_base
|
2017-07-01 20:22:27 +02:00
|
|
|
# get-developers should print just "No action specified"; if it prints
|
|
|
|
# anything else, it's a parse error.
|
|
|
|
# The initial ! is removed by YAML so we need to quote it.
|
2017-06-30 18:42:53 +02:00
|
|
|
script:
|
2017-07-01 20:22:27 +02:00
|
|
|
- "! utils/get-developers | grep -v 'No action specified'"
|
2017-06-30 18:42:53 +02:00
|
|
|
|
2018-03-13 04:09:44 +01:00
|
|
|
check-flake8:
|
2019-04-08 05:22:54 +02:00
|
|
|
extends: .check_base
|
2018-03-13 04:09:44 +01:00
|
|
|
script:
|
core: make it possible to check flake8 like we check package
Move the code to run check-flake8 into the Makefile, like we have for
check-package, so that it is easy to run locally (and not wait for
someone to report a failure from their Gitlab pipelines).
Compared to the existing check from gitlab-ci.yml, the Makefile check
differs in this respect:
- don't explicitly find *.py files: they are supposed to also be found
as a result of running 'file' on them;
- use git ls-tree instead of find: this is supopsedly faster as it
uses the index rather than readdir();
- don't output the count of warnings or errors: the output is a single
integer, which is confusing when there are errors, and even more so
when there are no, when it is simply '0';
- don't sort: the output is already stable and independent from the
locale;
- don't report the number of processed files: this information is
rather useless, and getting a hold of it would be more challenging
in this new code.
Note: ideally, we would want to use --null, --zero, or similar options,
with utilities that generates or parses a files listing. While git
ls-tree and xargs do support it, it becomes a little bit tricky to use
the --print0 option of file, and then grep in that output (it is not
undoable, but would requires replacing grep+cut with some sed trickery).
Since we do not expect our scripts names to contain funky chars (like
\n or a colon), we just hand-wave away that issue (and the old code was
doing the same assumption too).
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2020-08-31 00:12:15 +02:00
|
|
|
- make check-flake8
|
2018-03-13 04:09:44 +01:00
|
|
|
|
2017-11-30 00:08:45 +01:00
|
|
|
check-package:
|
2019-04-08 05:22:54 +02:00
|
|
|
extends: .check_base
|
2017-11-30 00:08:45 +01:00
|
|
|
script:
|
2018-08-11 12:44:23 +02:00
|
|
|
- make check-package
|
2017-11-30 00:08:45 +01:00
|
|
|
|
2020-07-27 17:51:27 +02:00
|
|
|
.defconfig_check:
|
|
|
|
script:
|
|
|
|
- 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
|
|
|
|
before_script:
|
|
|
|
- DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g')
|
|
|
|
|
2019-04-08 05:22:54 +02:00
|
|
|
.defconfig_base:
|
2019-04-08 05:22:53 +02:00
|
|
|
script:
|
2019-04-08 05:22:54 +02:00
|
|
|
- echo "Configure Buildroot for ${DEFCONFIG_NAME}"
|
|
|
|
- make ${DEFCONFIG_NAME}
|
2020-07-27 17:51:26 +02:00
|
|
|
- ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME}
|
2019-04-08 05:22:53 +02:00
|
|
|
- echo 'Build buildroot'
|
|
|
|
- |
|
|
|
|
make > >(tee build.log |grep '>>>') 2>&1 || {
|
|
|
|
echo 'Failed build last output'
|
|
|
|
tail -200 build.log
|
|
|
|
exit 1
|
|
|
|
}
|
2020-02-17 21:50:30 +01:00
|
|
|
- |
|
|
|
|
./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
|
|
|
|
}
|
2017-02-14 00:23:03 +01:00
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
expire_in: 2 weeks
|
|
|
|
paths:
|
2018-12-08 18:13:42 +01:00
|
|
|
- .config
|
2017-02-14 00:23:03 +01:00
|
|
|
- build.log
|
|
|
|
- output/images/
|
|
|
|
- output/build/build-time.log
|
|
|
|
- output/build/packages-file-list.txt
|
2018-12-08 18:13:42 +01:00
|
|
|
- output/build/*/.config
|
2020-02-17 21:50:30 +01:00
|
|
|
- runtime-test.log
|
2017-02-14 00:23:03 +01:00
|
|
|
|
2019-04-08 05:22:54 +02:00
|
|
|
.defconfig:
|
|
|
|
extends: .defconfig_base
|
|
|
|
# Running the defconfigs for every push is too much, so limit to
|
2018-10-21 12:03:03 +02:00
|
|
|
# explicit triggers through the API.
|
2020-07-18 17:47:13 +02:00
|
|
|
rules:
|
|
|
|
# For tags, create a pipeline.
|
|
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
# For pipeline created by using a trigger token.
|
|
|
|
- if: '$CI_PIPELINE_TRIGGERED'
|
|
|
|
# For the branch or tag name named *-defconfigs, create a pipeline.
|
|
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-defconfigs$/'
|
2019-04-08 05:22:54 +02:00
|
|
|
before_script:
|
|
|
|
- DEFCONFIG_NAME=${CI_JOB_NAME}
|
|
|
|
|
|
|
|
one-defconfig:
|
|
|
|
extends: .defconfig_base
|
2020-07-18 17:47:13 +02:00
|
|
|
rules:
|
|
|
|
# For the branch or tag name named *-*_defconfigs, create a pipeline.
|
|
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/'
|
2019-04-08 05:22:54 +02:00
|
|
|
before_script:
|
|
|
|
- DEFCONFIG_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
|
|
|
|
|
|
|
|
.runtime_test_base:
|
2017-07-30 06:49:43 +02:00
|
|
|
# Keep build directories so the rootfs can be an artifact of the job. The
|
|
|
|
# runner will clean up those files for us.
|
2017-08-05 04:05:20 +02:00
|
|
|
# Multiply every emulator timeout by 10 to avoid sporadic failures in
|
|
|
|
# elastic runners.
|
2019-04-08 05:22:54 +02:00
|
|
|
script:
|
|
|
|
- echo "Starting runtime test ${TEST_CASE_NAME}"
|
|
|
|
- ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME}
|
2017-07-02 18:13:22 +02:00
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
expire_in: 2 weeks
|
|
|
|
paths:
|
|
|
|
- test-output/*.log
|
2017-12-20 15:19:33 +01:00
|
|
|
- test-output/*/.config
|
2017-07-30 06:49:43 +02:00
|
|
|
- test-output/*/images/*
|
2019-04-08 05:22:54 +02:00
|
|
|
|
|
|
|
.runtime_test:
|
|
|
|
extends: .runtime_test_base
|
|
|
|
# Running the runtime tests for every push is too much, so limit to
|
|
|
|
# explicit triggers through the API.
|
2020-07-18 17:47:13 +02:00
|
|
|
rules:
|
|
|
|
# For tags, create a pipeline.
|
|
|
|
- if: '$CI_COMMIT_TAG'
|
|
|
|
# For pipeline created by using a trigger token.
|
|
|
|
- if: '$CI_PIPELINE_TRIGGERED'
|
|
|
|
# For the branch or tag name named *-runtime-tests, create a pipeline.
|
|
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-runtime-tests$/'
|
2019-04-08 05:22:54 +02:00
|
|
|
before_script:
|
|
|
|
- TEST_CASE_NAME=${CI_JOB_NAME}
|
|
|
|
|
|
|
|
one-runtime_test:
|
|
|
|
extends: .runtime_test_base
|
2020-07-18 17:47:13 +02:00
|
|
|
rules:
|
|
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
|
2019-04-08 05:22:54 +02:00
|
|
|
before_script:
|
|
|
|
- TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
|