kumquat-buildroot/support/misc/gitlab-ci.yml.in

131 lines
4.2 KiB
YAML
Raw Normal View History

# Configuration for Gitlab-CI.
# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
image: buildroot/base:20200814.2228
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
.check_base:
gitlab-ci: convert only/except to rules 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] https://gitlab.com/gitlab-org/gitlab/-/commit/7eaaa597e24bf24743bdd8f8d1d51ade83b3f6de [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>
2020-07-18 17:47:13 +02:00
rules:
- if: '$CI_COMMIT_REF_NAME =~ /^.*-.*_defconfig$/ || $CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
when: never
- when: always
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
check-DEVELOPERS:
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
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:
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
extends: .check_base
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
check-package:
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
extends: .check_base
script:
- make check-package
.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')
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
.defconfig_base:
script:
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
- echo "Configure Buildroot for ${DEFCONFIG_NAME}"
- make ${DEFCONFIG_NAME}
- ./support/scripts/check-dotconfig.py .config ./configs/${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
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
.defconfig:
extends: .defconfig_base
# Running the defconfigs for every push is too much, so limit to
# explicit triggers through the API.
gitlab-ci: convert only/except to rules 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] https://gitlab.com/gitlab-org/gitlab/-/commit/7eaaa597e24bf24743bdd8f8d1d51ade83b3f6de [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>
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$/'
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
before_script:
- DEFCONFIG_NAME=${CI_JOB_NAME}
one-defconfig:
extends: .defconfig_base
gitlab-ci: convert only/except to rules 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] https://gitlab.com/gitlab-org/gitlab/-/commit/7eaaa597e24bf24743bdd8f8d1d51ade83b3f6de [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>
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$/'
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
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.
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
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}
artifacts:
when: always
expire_in: 2 weeks
paths:
- test-output/*.log
- test-output/*/.config
- test-output/*/images/*
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
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.
gitlab-ci: convert only/except to rules 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] https://gitlab.com/gitlab-org/gitlab/-/commit/7eaaa597e24bf24743bdd8f8d1d51ade83b3f6de [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>
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$/'
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
before_script:
- TEST_CASE_NAME=${CI_JOB_NAME}
one-runtime_test:
extends: .runtime_test_base
gitlab-ci: convert only/except to rules 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] https://gitlab.com/gitlab-org/gitlab/-/commit/7eaaa597e24bf24743bdd8f8d1d51ade83b3f6de [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>
2020-07-18 17:47:13 +02:00
rules:
- if: '$CI_COMMIT_REF_NAME =~ /^.*-tests\..*$/'
.gitlab-ci.yml: add trigger per job Triggering a single defconfig or runtime test job can be handy: - when adding or changing a defconfig; - when adding or changing a runtime test case; - when fixing some bug on a use case tested by a runtime test case. Currently there are 3 subsets of jobs that can easily be triggered by pushing a temporary branch with specific suffix: - to trigger only the check-* jobs: $ git push gitlab HEAD:<name> # currently 4 jobs - to trigger all defconfigs and all check-* jobs: $ git push gitlab HEAD:<name>-defconfigs # currently 197 jobs - to trigger all runtime tests and all check-* jobs: $ git push gitlab HEAD:<name>-runtime-tests # currently 118 jobs When the user wants to trigger a single defconfig or runtime test job, hand-editing the .gitlab-ci.yml and creating a temporary commit are currently needed. Add 2 more subsets that can be triggered based on the name of the branch pushed. - to trigger one defconfig job: $ git push gitlab HEAD:<name>-<defconfig name> # currently 1 jobs - to trigger one runtime job: $ git push gitlab HEAD:<name>-<test case name> # currently 1 jobs The check-* jobs are fast, so there is no need to add a per job trigger for them. Also, they are anyway triggered with every push already. While adding those new triggers, use the full name of the job as suffix. This leads to large branch names: $ git push gitlab HEAD:test1-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc $ git push gitlab HEAD:test2-olimex_a20_olinuxino_lime_legacy_defconfig But those branches are temporary, and this way the user doesn't need to think much, just copy and paste the job name as suffix. The hidden keys that now hold the commonalities between jobs does not hold only a script anymore, so rename then from *_script to *_base. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Matt Weber <matthew.weber@rockwellcollins.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [Arnout: squash two patches] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2019-04-08 05:22:54 +02:00
before_script:
- TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')