35de2fdcf7
only/except keywords will be deprecated by upcoming gitlab release,
upstream recommend to use rules keyword instead [1][2][3][4][5].
This patch convert .gitlab-ci.yml to use rules, no functional
changes intended.
After this patch, we should still have the following behaviour
while pushing commit, tag, branches:
- to trigger only the check-* jobs:
$ git push gitlab HEAD:<name>
- to trigger all defconfigs and all check-* jobs:
$ git push gitlab HEAD:<name>-defconfigs
- to trigger all runtime tests and all check-* jobs:
$ git push gitlab HEAD:<name>-runtime-tests
- to trigger one defconfig job:
$ git push gitlab HEAD:<name>-<defconfig name>
- to trigger one runtime job:
$ git push gitlab HEAD:<name>-<test case name>
[1] 7eaaa597e2
[2] https://about.gitlab.com/releases/2020/06/22/gitlab-13-1-released/#templates-to-simplify-initial-rules-keyword-configuration
[3] https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#auto-devops-and-secure-configuration-templates-are-changing-to-%60rules%60-instead-of-%60only/except%60
[4] https://gitlab.com/gitlab-org/gitlab/issues/27449
[5] https://gitlab.com/groups/gitlab-org/-/epics/2783
[6] https://buildroot.org/downloads/manual/manual.html#_using_the_run_tests_framework
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
134 lines
4.5 KiB
YAML
134 lines
4.5 KiB
YAML
# Configuration for Gitlab-CI.
|
|
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
|
|
# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in.
|
|
# It needs to be regenerated every time a defconfig is added, using
|
|
# "make .gitlab-ci.yml".
|
|
|
|
image: buildroot/base:20191027.2027
|
|
|
|
.check_base:
|
|
rules:
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/ || $CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
|
|
when: never
|
|
- when: always
|
|
|
|
check-DEVELOPERS:
|
|
extends: .check_base
|
|
# 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.
|
|
script:
|
|
- "! utils/get-developers | grep -v 'No action specified'"
|
|
|
|
check-flake8:
|
|
extends: .check_base
|
|
before_script:
|
|
# Help flake8 to find the Python files without .py extension.
|
|
- find * -type f -name '*.py' > files.txt
|
|
- find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt
|
|
- sort -u files.txt | tee files.processed
|
|
script:
|
|
- python -m flake8 --statistics --count --max-line-length=132 $(cat files.processed)
|
|
after_script:
|
|
- wc -l files.processed
|
|
|
|
check-gitlab-ci.yml:
|
|
extends: .check_base
|
|
script:
|
|
- mv .gitlab-ci.yml .gitlab-ci.yml.orig
|
|
- make .gitlab-ci.yml
|
|
- diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
|
|
|
|
check-package:
|
|
extends: .check_base
|
|
script:
|
|
- make check-package
|
|
|
|
.defconfig_base:
|
|
script:
|
|
- echo "Configure Buildroot for ${DEFCONFIG_NAME}"
|
|
- make ${DEFCONFIG_NAME}
|
|
- echo 'Build buildroot'
|
|
- |
|
|
make > >(tee build.log |grep '>>>') 2>&1 || {
|
|
echo 'Failed build last output'
|
|
tail -200 build.log
|
|
exit 1
|
|
}
|
|
- |
|
|
./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
|
|
}
|
|
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
|
|
|
|
.defconfig:
|
|
extends: .defconfig_base
|
|
# Running the defconfigs for every push is too much, so limit to
|
|
# explicit triggers through the API.
|
|
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$/'
|
|
before_script:
|
|
- DEFCONFIG_NAME=${CI_JOB_NAME}
|
|
|
|
one-defconfig:
|
|
extends: .defconfig_base
|
|
rules:
|
|
# For the branch or tag name named *-*_defconfigs, create a pipeline.
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/'
|
|
before_script:
|
|
- DEFCONFIG_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
|
|
|
|
.runtime_test_base:
|
|
# 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:
|
|
- echo "Starting runtime test ${TEST_CASE_NAME}"
|
|
- ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME}
|
|
artifacts:
|
|
when: always
|
|
expire_in: 2 weeks
|
|
paths:
|
|
- test-output/*.log
|
|
- test-output/*/.config
|
|
- test-output/*/images/*
|
|
|
|
.runtime_test:
|
|
extends: .runtime_test_base
|
|
# Running the runtime tests for every push is too much, so limit to
|
|
# explicit triggers through the API.
|
|
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$/'
|
|
before_script:
|
|
- TEST_CASE_NAME=${CI_JOB_NAME}
|
|
|
|
one-runtime_test:
|
|
extends: .runtime_test_base
|
|
rules:
|
|
- if: '$CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
|
|
before_script:
|
|
- TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
|