2020-09-06 22:12:27 +02:00
|
|
|
.check-DEVELOPERS_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
|
|
|
|
2020-09-06 22:12:27 +02:00
|
|
|
.check-flake8_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
|
|
|
|
2020-09-06 22:12:27 +02:00
|
|
|
.check-package_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:
|
2020-09-06 22:12:28 +02:00
|
|
|
before_script:
|
|
|
|
- DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g')
|
2020-07-27 17:51:27 +02:00
|
|
|
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
|
|
|
|
|
2021-06-28 22:15:12 +02:00
|
|
|
.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
|
|
|
|
}
|
|
|
|
|
2019-04-08 05:22:54 +02:00
|
|
|
.defconfig_base:
|
2020-09-06 22:12:28 +02:00
|
|
|
before_script:
|
|
|
|
- DEFCONFIG_NAME=${CI_JOB_NAME}
|
2021-06-28 22:15:12 +02:00
|
|
|
- OUTPUT_DIR=output
|
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'
|
2021-06-28 22:15:12 +02:00
|
|
|
- *run_make
|
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
|
2019-04-08 05:22:54 +02:00
|
|
|
|
|
|
|
.runtime_test_base:
|
2020-09-06 22:12:28 +02:00
|
|
|
before_script:
|
|
|
|
- TEST_CASE_NAME=${CI_JOB_NAME}
|
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
|
|
|
|
utils/test-pkg: add gitlab-ci support
The gitlab-ci support in test-pkg allows to parallelize the test-pkg
work into several gitlab jobs. It's much faster than local serialized
testing.
To trigger this, a developer will have to add, in the latest commit of
their branch, a token on its own line, followed by a configuration
fragment, e.g.:
test-pkg config:
SOME_OPTION=y
# OTHER_OPTION is not set
SOME_VARIABLE="some value"
This configuration fragment is used as input to test-pkg.
To be able to generate one job per test to run, we need the list of
tests in the parent pipeline, and the individual .config files (one per
test) in the child pipeline. We use the newly-introduced --prepare-only
mode to test-pkg, and collect all the generated .config files as
artefacts; those are inherited in the child pipeline via the
"needs::pipeline" and "needs::job" directives. This is a bit tricky,
and is best described by the Gitlab-CI documentation [0].
We also list those .config files to generate the actual list of jobs to
run in the child pipeline.
Notes:
- if the user provides an empty fragment, this is considered an error:
indeed, without a fragment (and the package name), there is no way
to know what to test;
- if that fragment yields an empty list of tests, then there is
nothing to test either, so that is also considered an error.
[0] https://docs.gitlab.com/ee/ci/yaml/README.html#artifact-downloads-to-child-pipelines
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[yann.morin.1998@free.fr:
- split the change to test-pkg to its own patch
- generate the actual yml snippet in support/scripts/generate-gitlab-ci-yml,
listing the .config files created by test-pkg
- some code-style-candies...
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2021-08-21 15:46:46 +02:00
|
|
|
.test_pkg:
|
|
|
|
stage: build
|
|
|
|
before_script:
|
|
|
|
- OUTPUT_DIR=${CI_JOB_NAME}
|
|
|
|
script:
|
|
|
|
- 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
|
|
|
|
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
|