Skip to contentSkip to conversation

.gitlab-ci.yml: add trigger per job and per type of job

PATCH New Ricardo Martincoski 4 participants 35 messages Oct 28, 2018 – May 1, 2019 Kbuild

lore
Share & tools
lore
#0 lore raw

cover .gitlab-ci.yml: add trigger per job and per type of job

Hello,

This series allows the user of GitLab pipeline to trigger some interesting subsets of jobs by pushing temporary branches with names that match regexps:
- all defconfigs: /.*-defconfigs$/
- all runtime tests: /.*-runtime-tests$/
- one defconfig: /.*-defconfig_name$/
- one test case: /.*-test_case_name$/
The check-* jobs keep being triggered for all pushes: branches that match one of the regexps above, branches that don't match them, and tags. Pushing a tag still triggers all jobs.

The first patch adds the first two regexps.
The second patch prepares to add the per job trigger but don't change any functionality.
The last patch actually adds the per defconfig and per runtime test triggers.

With only patch 1 applied, using a local branch named test1:

$ git tag tag1
$ git push gitlab tag1
results in 260 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34613530
$ git push gitlab test1
results in 4 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34613494
$ git push gitlab HEAD:test1-defconfigs
results in 192 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34613558
$ git push gitlab HEAD:test1-runtime-tests
results in 72 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34613616

With all patches applied, using a local branch named test3:

$ git tag tag3
$ git push gitlab tag3
results in 260 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614775
$ git push gitlab test3
results in 4 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614682
$ git push gitlab HEAD:test3-defconfigs
results in 192 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614821
$ git push gitlab HEAD:test3-runtime-tests
results in 72 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614415
$ git push gitlab HEAD:test3-tests.core.test_file_capabilities.TestFileCapabilities
results in 5 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614380
$ git push gitlab HEAD:test3-qemu_arm_versatile_defconfig
results in 5 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614400

Regards,
Ricardo

Ricardo Martincoski (3):
.gitlab-ci.yml: add trigger per type of job
Makefile: offload .gitlab-ci.yml generation
.gitlab-ci.yml: add trigger per job

 .gitlab-ci.yml                         | 2050 +++++++++++++++++++++---
 .gitlab-ci.yml.in                      |    2 +
 Makefile                               |    4 +-
 support/scripts/generate-gitlab-ci-yml |   37 +
 4 files changed, 1834 insertions(+), 259 deletions(-)
 create mode 100755 support/scripts/generate-gitlab-ci-yml
Signature · 1 line
2.17.1
#1 lore raw

PATCH 1/3 .gitlab-ci.yml: add trigger per type of job

Currently the user has 2 sets of jobs that can be triggered on a GitLab pipeline.
- to trigger all defconfigs, all runtime tests and all check-* jobs:

   $ git tag <name>
   $ git push gitlab <name>                     # currently 260 jobs
 - to trigger only the check-* jobs:
   $ git push gitlab HEAD:<name>                # currently   4 jobs

This is not much versatile, so the user ends up hand-editing the .gitlab-ci.yml in order to trigger some subsets, even the common ones, for instance all runtime tests.

Add 2 more subsets that can be triggered based on the name of the branch pushed.
- to trigger all defconfigs and all check-* jobs:

   $ git push gitlab HEAD:<name>-defconfigs     # currently 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests  # currently  72 jobs
Cc Arnout Vandecappelle <[email protected]>
---
 .gitlab-ci.yml    | 2 ++
 .gitlab-ci.yml.in | 2 ++
 2 files changed, 4 insertions(+)
.gitlab-ci.yml +2 -0
index 8b9a1f175c..d84c283dbc 100644
@@ -51,6 +51,7 @@ check-package:
     only:
         - triggers
         - tags
+        - /-defconfigs$/
     script: *defconfig_script
     artifacts:
         when: always
@@ -67,6 +68,7 @@ check-package:
     only:
         - triggers
         - tags
+        - /-runtime-tests$/
     # 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
.gitlab-ci.yml.in +2 -0
index db526c4b5a..ebca29ca1f 100644
@@ -51,6 +51,7 @@ check-package:
     only:
         - triggers
         - tags
+        - /-defconfigs$/
     script: *defconfig_script
     artifacts:
         when: always
@@ -67,6 +68,7 @@ check-package:
     only:
         - triggers
         - tags
+        - /-runtime-tests$/
     # 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
Signature · 1 line
2.17.1
#2 lore raw

PATCH 1/3 .gitlab-ci.yml: add trigger per type of job

Hello,

Quoted 15 lines · Ricardo Martincoski

Currently the user has 2 sets of jobs that can be triggered on a GitLab pipeline.
- to trigger all defconfigs, all runtime tests and all check-* jobs:

   $ git tag <name>
   $ git push gitlab <name>                     # currently 260 jobs
 - to trigger only the check-* jobs:
   $ git push gitlab HEAD:<name>                # currently   4 jobs

This is not much versatile, so the user ends up hand-editing the .gitlab-ci.yml in order to trigger some subsets, even the common ones, for instance all runtime tests.

Add 2 more subsets that can be triggered based on the name of the branch pushed.
- to trigger all defconfigs and all check-* jobs:

Quoted 6 lines
   $ git push gitlab HEAD:<name>-defconfigs     # currently 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests  # currently  72 jobs
Cc Arnout Vandecappelle <[email protected]>

This commit was applied by Arnout a while ago:
https://git.buildroot.org/buildroot/commit/?id=f177fd66e47879a72bb678a2de7ce658410cc4b9.
But apparently, the notification was not sent to the mailing list, and the patchwork state was not updated. This mail does the former, and I'm going to the latter :-)

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#3 lore raw

PATCH 2/3 Makefile: offload .gitlab-ci.yml generation

In reply to Ricardo Martincoski

GitLab has severe limitations imposed to triggers. Using a variable in a regexp is not allowed:

|    only:
|        - /-$CI_JOB_NAME$/
|        - /-\$CI_JOB_NAME$/
|        - /-%CI_JOB_NAME%$/
Using the key 'variables' always lead to an AND with 'refs', so:
|    only:
|        refs:
|            - branches
|            - tags
|        variables:
|            - $CI_JOB_NAME == $CI_COMMIT_REF_NAME
would make the push of a tag not to trigger all jobs anymore.
Inheritance is used only for the second level of keys, so:
|.runtime_test: &runtime_test
|    only:
|        - tags
|tests.package.test_python_txaio.TestPythonPy2Txaio:
|    <<: *runtime_test
|    only:
|        - /-TestPythonPy2Txaio$/

would override the entire key 'only', making the push of a tag not to trigger all jobs anymore.

So, in order to have a trigger per job and still allow the push of a tag to trigger all jobs (all this in a follow up patch), the regexp for each job must be hardcoded in the .gitlab-ci.yml and also the inherited values for key 'only' must be repeated for every job.
This is not a big issue, .gitlab-ci.yml is already automatically generated from a template and there will be no need to hand-editing it when jobs are added or removed.

Since the logic to generate the yaml file from the template will become more complex, move the commands from the main Makefile to a script.

Using Python or other advanced scripting language for that script would be the most versatile solution, but that would bring another dependency on the host machine, pyyaml if Python is used. So every developer that needs to run 'make .gitlab-ci.yml' and also the docker image used in the GitLab pipelines would need to have pyyaml pre-installed. Instead of adding the mentioned dependency, keep using a bash script.

While moving the commands to the script:
- mimic the behavior of the previous make target and fail on any command that fails, by using 'set -e';
- break the original lines in one command per line, making the diff for any patch to be applied to this file to look nicer;
- keep the script as simple as possible, without functions, just a script that executes from the top to bottom;
- do not perform validations on the input parameters, any command that fails already makes the script to fail;
- do not add an usage message, the script is not intended to be called directly.

This patch does not change functionality.

Cc Arnout Vandecappelle <[email protected]>

---
NOTE:
Example of alternative script in Python:
https://gitlab.com/RicardoMartincoski/buildroot/commit/a39b7da5e8b6585eb86ce1102dd5a020c9fdec42
The downside is that it would add a dependency, so when someone runs 'make .gitlab-ci.yml' it would fail like this if pyyaml is not installed in the host machine:
https://gitlab.com/RicardoMartincoski/buildroot/-/jobs/112928495

---
 Makefile                               |  4 +---
 support/scripts/generate-gitlab-ci-yml | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 3 deletions(-)
 create mode 100755 support/scripts/generate-gitlab-ci-yml
Makefile +1 -3
index a69af3b645..6a80809ad2 100644
@@ -1155,9 +1155,7 @@ check-package:
 
 .PHONY: .gitlab-ci.yml
 .gitlab-ci.yml: .gitlab-ci.yml.in
-	cp $< $@
-	(cd configs; LC_ALL=C ls -1 *_defconfig) | sed 's/$$/: *defconfig/' >> $@
-	set -o pipefail; ./support/testing/run-tests -l 2>&1 | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' | LC_ALL=C sort >> $@
+	./support/scripts/generate-gitlab-ci-yml $< $@
 
 include docs/manual/manual.mk
 -include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk)))
support/scripts/generate-gitlab-ci-yml new file +20 -0
new file mode 100755
index 0000000000..d824f669b5
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+set -o pipefail
+
+input="${1}"
+output="${2}"
+
+cp "${input}" "${output}"
+
+(
+    cd configs
+    LC_ALL=C ls -1 *_defconfig
+) \
+    | sed 's/$/: *defconfig/' \
+    >> "${output}"
+
+./support/testing/run-tests -l 2>&1 \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | LC_ALL=C sort \
+    >> "${output}"
Signature · 1 line
2.17.1
#4 lore raw

PATCH 2/3 Makefile: offload .gitlab-ci.yml generation

Hello,

Quoted 55 lines · Ricardo Martincoski

GitLab has severe limitations imposed to triggers. Using a variable in a regexp is not allowed:

|    only:
|        - /-$CI_JOB_NAME$/
|        - /-\$CI_JOB_NAME$/
|        - /-%CI_JOB_NAME%$/
Using the key 'variables' always lead to an AND with 'refs', so:
|    only:
|        refs:
|            - branches
|            - tags
|        variables:
|            - $CI_JOB_NAME == $CI_COMMIT_REF_NAME
would make the push of a tag not to trigger all jobs anymore.
Inheritance is used only for the second level of keys, so:
|.runtime_test: &runtime_test
|    only:
|        - tags
|tests.package.test_python_txaio.TestPythonPy2Txaio:
|    <<: *runtime_test
|    only:
|        - /-TestPythonPy2Txaio$/

would override the entire key 'only', making the push of a tag not to trigger all jobs anymore.

So, in order to have a trigger per job and still allow the push of a tag to trigger all jobs (all this in a follow up patch), the regexp for each job must be hardcoded in the .gitlab-ci.yml and also the inherited values for key 'only' must be repeated for every job.
This is not a big issue, .gitlab-ci.yml is already automatically generated from a template and there will be no need to hand-editing it when jobs are added or removed.

Since the logic to generate the yaml file from the template will become more complex, move the commands from the main Makefile to a script.

Using Python or other advanced scripting language for that script would be the most versatile solution, but that would bring another dependency on the host machine, pyyaml if Python is used. So every developer that needs to run 'make .gitlab-ci.yml' and also the docker image used in the GitLab pipelines would need to have pyyaml pre-installed. Instead of adding the mentioned dependency, keep using a bash script.

While moving the commands to the script:
- mimic the behavior of the previous make target and fail on any command that fails, by using 'set -e';
- break the original lines in one command per line, making the diff for any patch to be applied to this file to look nicer;
- keep the script as simple as possible, without functions, just a script that executes from the top to bottom;
- do not perform validations on the input parameters, any command that fails already makes the script to fail;
- do not add an usage message, the script is not intended to be called directly.

Quoted 4 lines

This patch does not change functionality.

Cc Arnout Vandecappelle <[email protected]>

I've applied after changing one thing, see below.

Quoted 16 lines
support/scripts/generate-gitlab-ci-yml new file +10 -0
new file mode 100755
index 0000000000..d824f669b5
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+set -o pipefail
+
+input="${1}"
+output="${2}"
+
+cp "${input}" "${output}"
+
+(

support/scripts/generate-gitlab-ci-yml line 20

Quoted 10 lines
support/scripts/generate-gitlab-ci-yml new file +10 -0
+    cd configs
+    LC_ALL=C ls -1 *_defconfig
+) \
+    | sed 's/$/: *defconfig/' \
+    >> "${output}"
+
+./support/testing/run-tests -l 2>&1 \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | LC_ALL=C sort \
+    >> "${output}"

I think it is more common for this kind of script to output on stdout, and have the caller redirect to a file. It makes the script slightly simpler, since you don't have to redirect to ${output}. So I've changed to use this solution before applying.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#5 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

In reply to Ricardo Martincoski

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 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests     # currently  72 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 and all check-* jobs:

   $ git push gitlab HEAD:<name>-<defconfig name>  # currently   5 jobs
 - to trigger one runtime test and all check-* jobs:
   $ git push gitlab HEAD:<name>-<test case name>  # currently   5 jobs

The check-* jobs are fast, so there is no need to either add a per job trigger for them or remove them from the trigger for a specific defconfig or runtime test case.

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 don't need to
think much, just copy and paste the job name as suffix.
Cc Arnout Vandecappelle <[email protected]>

---
NOTE: I am almost sure that those 2 awk to extract the 'only' key could be merged, but my experience in awk is limited.

---
 .gitlab-ci.yml                         | 2048 +++++++++++++++++++++---
 support/scripts/generate-gitlab-ci-yml |   21 +-
 2 files changed, 1811 insertions(+), 258 deletions(-)
.gitlab-ci.yml +1792 -256
index d84c283dbc..c6fc755c9b 100644
@@ -81,259 +81,1795 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+acmesystems_aria_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_128mb_defconfig$/
+acmesystems_aria_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_256mb_defconfig$/
+acmesystems_arietta_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_128mb_defconfig$/
+acmesystems_arietta_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_256mb_defconfig$/
+amarula_vyasa_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_vyasa_rk3288_defconfig$/
+arcturus_ucls1012a_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucls1012a_defconfig$/
+arcturus_ucp1020_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucp1020_defconfig$/
+arm_foundationv8_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_foundationv8_defconfig$/
+arm_juno_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_juno_defconfig$/
+armadeus_apf27_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf27_defconfig$/
+armadeus_apf28_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf28_defconfig$/
+armadeus_apf51_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf51_defconfig$/
+asus_tinker_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-asus_tinker_rk3288_defconfig$/
+at91sam9260eknf_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9260eknf_defconfig$/
+at91sam9g20dfc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g20dfc_defconfig$/
+at91sam9g45m10ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g45m10ek_defconfig$/
+at91sam9rlek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9rlek_defconfig$/
+at91sam9x5ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_defconfig$/
+at91sam9x5ek_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_dev_defconfig$/
+at91sam9x5ek_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_defconfig$/
+at91sam9x5ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_dev_defconfig$/
+atmel_sama5d27_som1_ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d27_som1_ek_mmc_dev_defconfig$/
+atmel_sama5d2_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_defconfig$/
+atmel_sama5d2_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_dev_defconfig$/
+atmel_sama5d3_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_defconfig$/
+atmel_sama5d3_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_dev_defconfig$/
+atmel_sama5d3_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_defconfig$/
+atmel_sama5d3_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_dev_defconfig$/
+atmel_sama5d3xek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3xek_defconfig$/
+atmel_sama5d4_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_defconfig$/
+atmel_sama5d4_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_dev_defconfig$/
+atmel_sama5d4_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_defconfig$/
+atmel_sama5d4_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_dev_defconfig$/
+bananapi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m1_defconfig$/
+bananapi_m2_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_plus_defconfig$/
+bananapi_m2_ultra_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_ultra_defconfig$/
+bananapi_m64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m64_defconfig$/
+bananapro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapro_defconfig$/
+beagleboardx15_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beagleboardx15_defconfig$/
+beaglebone_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_defconfig$/
+beaglebone_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_qt5_defconfig$/
+chromebook_snow_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-chromebook_snow_defconfig$/
+ci20_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ci20_defconfig$/
+csky_gx6605s_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-csky_gx6605s_defconfig$/
+cubieboard2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-cubieboard2_defconfig$/
+engicam_imx6qdl_icore_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_defconfig$/
+engicam_imx6qdl_icore_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_qt5_defconfig$/
+engicam_imx6qdl_icore_rqs_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_rqs_defconfig$/
+engicam_imx6ul_geam_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_geam_defconfig$/
+engicam_imx6ul_isiot_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_isiot_defconfig$/
+freescale_imx28evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx28evk_defconfig$/
+freescale_imx6dlsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabreauto_defconfig$/
+freescale_imx6dlsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabresd_defconfig$/
+freescale_imx6qsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabreauto_defconfig$/
+freescale_imx6qsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabresd_defconfig$/
+freescale_imx6sxsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6sxsabresd_defconfig$/
+freescale_imx7dsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx7dsabresd_defconfig$/
+freescale_imx8mqevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx8mqevk_defconfig$/
+freescale_p1025twr_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_p1025twr_defconfig$/
+freescale_t1040d4rdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_t1040d4rdb_defconfig$/
+friendlyarm_nanopi_a64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_a64_defconfig$/
+friendlyarm_nanopi_neo2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_neo2_defconfig$/
+galileo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-galileo_defconfig$/
+grinn_chiliboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_chiliboard_defconfig$/
+grinn_liteboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_liteboard_defconfig$/
+imx23evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx23evk_defconfig$/
+imx6-sabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabreauto_defconfig$/
+imx6-sabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_defconfig$/
+imx6-sabresd_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_qt5_defconfig$/
+imx6slevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6slevk_defconfig$/
+imx6sx-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6sx-sdb_defconfig$/
+imx6ulevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulevk_defconfig$/
+imx6ulpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulpico_defconfig$/
+imx7d-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7d-sdb_defconfig$/
+imx7dpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7dpico_defconfig$/
+lego_ev3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-lego_ev3_defconfig$/
+linksprite_pcduino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-linksprite_pcduino_defconfig$/
+minnowboard_max-graphical_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max-graphical_defconfig$/
+minnowboard_max_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max_defconfig$/
+mx25pdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx25pdk_defconfig$/
+mx51evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx51evk_defconfig$/
+mx53loco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx53loco_defconfig$/
+mx6cubox_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6cubox_defconfig$/
+mx6sx_udoo_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6sx_udoo_neo_defconfig$/
+mx6udoo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6udoo_defconfig$/
+nanopi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_defconfig$/
+nanopi_m1_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_plus_defconfig$/
+nanopi_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_neo_defconfig$/
+nexbox_a95x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nexbox_a95x_defconfig$/
+nitrogen6sx_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6sx_defconfig$/
+nitrogen6x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6x_defconfig$/
+nitrogen7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen7_defconfig$/
+nitrogen8m_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen8m_defconfig$/
+odroidc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidc2_defconfig$/
+odroidxu4_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidxu4_defconfig$/
+olimex_a10_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a10_olinuxino_lime_defconfig$/
+olimex_a13_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a13_olinuxino_defconfig$/
+olimex_a20_olinuxino_lime2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime2_defconfig$/
+olimex_a20_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_defconfig$/
+olimex_a20_olinuxino_lime_legacy_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_legacy_defconfig$/
+olimex_a20_olinuxino_micro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_micro_defconfig$/
+olimex_a64_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a64_olinuxino_defconfig$/
+olimex_imx233_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_imx233_olinuxino_defconfig$/
+openblocks_a6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-openblocks_a6_defconfig$/
+orangepi_lite_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite_defconfig$/
+orangepi_one_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_defconfig$/
+orangepi_pc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc2_defconfig$/
+orangepi_pc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_defconfig$/
+orangepi_pc_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_plus_defconfig$/
+orangepi_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_plus_defconfig$/
+orangepi_prime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_prime_defconfig$/
+orangepi_win_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_win_defconfig$/
+orangepi_zero_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_defconfig$/
+orangepi_zero_plus2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_plus2_defconfig$/
+pandaboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pandaboard_defconfig$/
+pc_x86_64_bios_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_bios_defconfig$/
+pc_x86_64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_efi_defconfig$/
+pine64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_defconfig$/
+pine64_sopine_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_sopine_defconfig$/
+qemu_aarch64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_aarch64_virt_defconfig$/
+qemu_arm_versatile_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_defconfig$/
+qemu_arm_versatile_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_nommu_defconfig$/
+qemu_arm_vexpress_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_vexpress_defconfig$/
+qemu_m68k_mcf5208_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_mcf5208_defconfig$/
+qemu_m68k_q800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_q800_defconfig$/
+qemu_microblazebe_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazebe_mmu_defconfig$/
+qemu_microblazeel_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazeel_mmu_defconfig$/
+qemu_mips32r2_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2_malta_defconfig$/
+qemu_mips32r2el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2el_malta_defconfig$/
+qemu_mips32r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6_malta_defconfig$/
+qemu_mips32r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6el_malta_defconfig$/
+qemu_mips64_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64_malta_defconfig$/
+qemu_mips64el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64el_malta_defconfig$/
+qemu_mips64r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6_malta_defconfig$/
+qemu_mips64r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6el_malta_defconfig$/
+qemu_nios2_10m50_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_nios2_10m50_defconfig$/
+qemu_or1k_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_or1k_defconfig$/
+qemu_ppc64_e5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_e5500_defconfig$/
+qemu_ppc64_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_pseries_defconfig$/
+qemu_ppc64le_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64le_pseries_defconfig$/
+qemu_ppc_g3beige_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_g3beige_defconfig$/
+qemu_ppc_mpc8544ds_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_mpc8544ds_defconfig$/
+qemu_ppc_virtex_ml507_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_virtex_ml507_defconfig$/
+qemu_riscv64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv64_virt_defconfig$/
+qemu_sh4_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4_r2d_defconfig$/
+qemu_sh4eb_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4eb_r2d_defconfig$/
+qemu_sparc64_sun4u_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc64_sun4u_defconfig$/
+qemu_sparc_ss10_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc_ss10_defconfig$/
+qemu_x86_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_64_defconfig$/
+qemu_x86_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_defconfig$/
+qemu_xtensa_lx60_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_defconfig$/
+qemu_xtensa_lx60_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_nommu_defconfig$/
+raspberrypi0_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0_defconfig$/
+raspberrypi0w_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0w_defconfig$/
+raspberrypi2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi2_defconfig$/
+raspberrypi3_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_64_defconfig$/
+raspberrypi3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_defconfig$/
+raspberrypi3_qt5we_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_qt5we_defconfig$/
+raspberrypi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi_defconfig$/
+riotboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-riotboard_defconfig$/
+roseapplepi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-roseapplepi_defconfig$/
+s6lx9_microboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-s6lx9_microboard_defconfig$/
+sheevaplug_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-sheevaplug_defconfig$/
+snps_aarch64_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_aarch64_vdk_defconfig$/
+snps_arc700_axs101_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_arc700_axs101_defconfig$/
+snps_archs38_axs103_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_axs103_defconfig$/
+snps_archs38_haps_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_haps_defconfig$/
+snps_archs38_hsdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_hsdk_defconfig$/
+snps_archs38_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_vdk_defconfig$/
+socrates_cyclone5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-socrates_cyclone5_defconfig$/
+solidrun_clearfog_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_clearfog_defconfig$/
+solidrun_macchiatobin_mainline_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_mainline_defconfig$/
+solidrun_macchiatobin_marvell_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_marvell_defconfig$/
+stm32f429_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f429_disco_defconfig$/
+stm32f469_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f469_disco_defconfig$/
+toradex_apalis_imx6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-toradex_apalis_imx6_defconfig$/
+ts4800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4800_defconfig$/
+ts4900_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4900_defconfig$/
+ts5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts5500_defconfig$/
+ts7680_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts7680_defconfig$/
+wandboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-wandboard_defconfig$/
+warp7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warp7_defconfig$/
+warpboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warpboard_defconfig$/
+zynq_microzed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_microzed_defconfig$/
+zynq_zc706_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zc706_defconfig$/
+zynq_zed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zed_defconfig$/
+zynq_zybo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zybo_defconfig$/
+zynqmp_zcu106_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynqmp_zcu106_defconfig$/
+tests.boot.test_atf.TestATFAllwinner:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFAllwinner$/
+tests.boot.test_atf.TestATFMarvell:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFMarvell$/
+tests.boot.test_atf.TestATFVexpress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFVexpress$/
+tests.core.test_file_capabilities.TestFileCapabilities:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_file_capabilities\.TestFileCapabilities$/
+tests.core.test_hardening.TestFortifyConserv:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyConserv$/
+tests.core.test_hardening.TestFortifyNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyNone$/
+tests.core.test_hardening.TestRelro:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelro$/
+tests.core.test_hardening.TestRelroPartial:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelroPartial$/
+tests.core.test_hardening.TestSspNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspNone$/
+tests.core.test_hardening.TestSspStrong:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspStrong$/
+tests.core.test_post_scripts.TestPostScripts:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_post_scripts\.TestPostScripts$/
+tests.core.test_rootfs_overlay.TestRootfsOverlay:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_rootfs_overlay\.TestRootfsOverlay$/
+tests.core.test_timezone.TestGlibcAllTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcAllTimezone$/
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcNonDefaultLimitedTimezone$/
+tests.core.test_timezone.TestNoTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestNoTimezone$/
+tests.fs.test_ext.TestExt2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2$/
+tests.fs.test_ext.TestExt2r1:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2r1$/
+tests.fs.test_ext.TestExt3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt3$/
+tests.fs.test_ext.TestExt4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt4$/
+tests.fs.test_iso9660.TestIso9660Grub2External:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2External$/
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2ExternalCompress$/
+tests.fs.test_iso9660.TestIso9660Grub2Internal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2Internal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternalCompress$/
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxInternal$/
+tests.fs.test_jffs2.TestJffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_jffs2\.TestJffs2$/
+tests.fs.test_squashfs.TestSquashfs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_squashfs\.TestSquashfs$/
+tests.fs.test_ubi.TestUbi:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ubi\.TestUbi$/
+tests.fs.test_yaffs2.TestYaffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_yaffs2\.TestYaffs2$/
+tests.init.test_busybox.TestInitSystemBusyboxRo:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRo$/
+tests.init.test_busybox.TestInitSystemBusyboxRoNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRoNet$/
+tests.init.test_busybox.TestInitSystemBusyboxRw:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRw$/
+tests.init.test_busybox.TestInitSystemBusyboxRwNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRwNet$/
+tests.init.test_none.TestInitSystemNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_none\.TestInitSystemNone$/
+tests.init.test_systemd.TestInitSystemSystemdRoFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoFull$/
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoNetworkd$/
+tests.init.test_systemd.TestInitSystemSystemdRwFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwFull$/
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwNetworkd$/
+tests.package.test_dropbear.TestDropbear:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_dropbear\.TestDropbear$/
+tests.package.test_ipython.TestIPythonPy2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy2$/
+tests.package.test_ipython.TestIPythonPy3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy3$/
+tests.package.test_python.TestPython2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython2$/
+tests.package.test_python.TestPython3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython3$/
+tests.package.test_python_autobahn.TestPythonPy2Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy2Autobahn$/
+tests.package.test_python_autobahn.TestPythonPy3Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy3Autobahn$/
+tests.package.test_python_cryptography.TestPythonPy2Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy2Cryptography$/
+tests.package.test_python_cryptography.TestPythonPy3Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy3Cryptography$/
+tests.package.test_python_incremental.TestPythonPy2Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy2Incremental$/
+tests.package.test_python_incremental.TestPythonPy3Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy3Incremental$/
+tests.package.test_python_twisted.TestPythonPy2Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy2Twisted$/
+tests.package.test_python_twisted.TestPythonPy3Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy3Twisted$/
+tests.package.test_python_txaio.TestPythonPy2Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy2Txaio$/
+tests.package.test_python_txaio.TestPythonPy3Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy3Txaio$/
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy2Txtorcon$/
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy3Txtorcon$/
+tests.package.test_rust.TestRust:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRust$/
+tests.package.test_rust.TestRustBin:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRustBin$/
+tests.package.test_syslog_ng.TestSyslogNg:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_syslog_ng\.TestSyslogNg$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootMusl$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootuClibc$/
+tests.toolchain.test_external.TestExternalToolchainCCache:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCCache$/
+tests.toolchain.test_external.TestExternalToolchainCtngMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCtngMusl$/
+tests.toolchain.test_external.TestExternalToolchainLinaroArm:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainLinaroArm$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv4$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv5$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv7$/
support/scripts/generate-gitlab-ci-yml +19 -2
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
Signature · 1 line
2.17.1
#6 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

Hello,

Quoted 28 lines · Ricardo Martincoski
support/scripts/generate-gitlab-ci-yml +13 -1
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"  
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)

support/scripts/generate-gitlab-ci-yml output="${2}" · line 37

Quoted 10 lines
support/scripts/generate-gitlab-ci-yml +6 -1
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"  

I'm very confused by all this awk sorcery, and looking at the output, I wonder if something simpler like this wouldn't be better:

support/scripts/generate-gitlab-ci-yml +24 -3
index 431911d370..110de0b207 100755
@@ -10,8 +10,29 @@ cat "${input}"
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/'
+    | while read defconfig; do
+       cat <<EOF
+${defconfig}:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs\$/
+        - /-${defconfig}\$/
+EOF
+       done
 
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
-    | LC_ALL=C sort
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
+    | LC_ALL=C sort \
+    | while read runtest; do
+       cat <<EOF
+${runtest}:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests\$/
+        - /-${runtest//./\\.}\$/
+EOF
+done

This produces an output that is exactly identical to the one done by your awk magic, and I personally find this shell based implementation a lot simpler and easier to read. What do you think ?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#7 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

Hello,

Quoted 82 lines · Thomas Petazzoni
Quoted 28 lines · Ricardo Martincoski
support/scripts/generate-gitlab-ci-yml +13 -1
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"  
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)

support/scripts/generate-gitlab-ci-yml output="${2}" · line 37

Quoted 10 lines
support/scripts/generate-gitlab-ci-yml +6 -1
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"  

I'm very confused by all this awk sorcery, and looking at the output, I wonder if something simpler like this wouldn't be better:

support/scripts/generate-gitlab-ci-yml +24 -3
index 431911d370..110de0b207 100755
@@ -10,8 +10,29 @@ cat "${input}"
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/'
+    | while read defconfig; do
+       cat <<EOF
+${defconfig}:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs\$/
+        - /-${defconfig}\$/
+EOF
+       done
 
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
-    | LC_ALL=C sort
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
+    | LC_ALL=C sort \
+    | while read runtest; do
+       cat <<EOF
+${runtest}:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests\$/
+        - /-${runtest//./\\.}\$/
+EOF
+done
Quoted 3 lines

This produces an output that is exactly identical to the one done by your awk magic, and I personally find this shell based implementation a lot simpler and easier to read. What do you think ?

Sure. Easier to read.

The only thing we lose this way is that v1 gets the template from .gitlab-ci.yml.in and adds new values; v2 has the values hardcoded in the script.
But probably we will never change those values anyway. And any change can be done on both. I added a comment on .gitlab-ci.yml.in about this and sent a v2. I guess we could even remove completely the 'only' key from the .gitlab-ci.yml.in as it is now hardcoded in the script. But I didn't tested it.

Regards,
Ricardo

#8 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

In reply to Ricardo Martincoski

Ricardo,

Quoted 5 lines · Ricardo Martincoski

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.

Thank you for adding this! I have been thinking about how to better monitor my defconfigs I'm maintaining. Now I'll setup some jobs against my fork.

Quoted 2,143 lines

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 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests     # currently  72 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 and all check-* jobs:

   $ git push gitlab HEAD:<name>-<defconfig name>  # currently   5 jobs
 - to trigger one runtime test and all check-* jobs:
   $ git push gitlab HEAD:<name>-<test case name>  # currently   5 jobs

The check-* jobs are fast, so there is no need to either add a per job trigger for them or remove them from the trigger for a specific defconfig or runtime test case.

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 don't need to
think much, just copy and paste the job name as suffix.
Cc Arnout Vandecappelle <[email protected]>

---
NOTE: I am almost sure that those 2 awk to extract the 'only' key could be merged, but my experience in awk is limited.

---
 .gitlab-ci.yml                         | 2048 +++++++++++++++++++++---
 support/scripts/generate-gitlab-ci-yml |   21 +-
 2 files changed, 1811 insertions(+), 258 deletions(-)
.gitlab-ci.yml +1792 -256
index d84c283dbc..c6fc755c9b 100644
@@ -81,259 +81,1795 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+acmesystems_aria_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_128mb_defconfig$/
+acmesystems_aria_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_256mb_defconfig$/
+acmesystems_arietta_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_128mb_defconfig$/
+acmesystems_arietta_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_256mb_defconfig$/
+amarula_vyasa_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_vyasa_rk3288_defconfig$/
+arcturus_ucls1012a_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucls1012a_defconfig$/
+arcturus_ucp1020_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucp1020_defconfig$/
+arm_foundationv8_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_foundationv8_defconfig$/
+arm_juno_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_juno_defconfig$/
+armadeus_apf27_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf27_defconfig$/
+armadeus_apf28_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf28_defconfig$/
+armadeus_apf51_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf51_defconfig$/
+asus_tinker_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-asus_tinker_rk3288_defconfig$/
+at91sam9260eknf_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9260eknf_defconfig$/
+at91sam9g20dfc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g20dfc_defconfig$/
+at91sam9g45m10ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g45m10ek_defconfig$/
+at91sam9rlek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9rlek_defconfig$/
+at91sam9x5ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_defconfig$/
+at91sam9x5ek_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_dev_defconfig$/
+at91sam9x5ek_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_defconfig$/
+at91sam9x5ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_dev_defconfig$/
+atmel_sama5d27_som1_ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d27_som1_ek_mmc_dev_defconfig$/
+atmel_sama5d2_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_defconfig$/
+atmel_sama5d2_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_dev_defconfig$/
+atmel_sama5d3_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_defconfig$/
+atmel_sama5d3_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_dev_defconfig$/
+atmel_sama5d3_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_defconfig$/
+atmel_sama5d3_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_dev_defconfig$/
+atmel_sama5d3xek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3xek_defconfig$/
+atmel_sama5d4_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_defconfig$/
+atmel_sama5d4_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_dev_defconfig$/
+atmel_sama5d4_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_defconfig$/
+atmel_sama5d4_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_dev_defconfig$/
+bananapi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m1_defconfig$/
+bananapi_m2_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_plus_defconfig$/
+bananapi_m2_ultra_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_ultra_defconfig$/
+bananapi_m64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m64_defconfig$/
+bananapro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapro_defconfig$/
+beagleboardx15_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beagleboardx15_defconfig$/
+beaglebone_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_defconfig$/
+beaglebone_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_qt5_defconfig$/
+chromebook_snow_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-chromebook_snow_defconfig$/
+ci20_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ci20_defconfig$/
+csky_gx6605s_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-csky_gx6605s_defconfig$/
+cubieboard2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-cubieboard2_defconfig$/
+engicam_imx6qdl_icore_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_defconfig$/
+engicam_imx6qdl_icore_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_qt5_defconfig$/
+engicam_imx6qdl_icore_rqs_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_rqs_defconfig$/
+engicam_imx6ul_geam_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_geam_defconfig$/
+engicam_imx6ul_isiot_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_isiot_defconfig$/
+freescale_imx28evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx28evk_defconfig$/
+freescale_imx6dlsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabreauto_defconfig$/
+freescale_imx6dlsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabresd_defconfig$/
+freescale_imx6qsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabreauto_defconfig$/
+freescale_imx6qsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabresd_defconfig$/
+freescale_imx6sxsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6sxsabresd_defconfig$/
+freescale_imx7dsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx7dsabresd_defconfig$/
+freescale_imx8mqevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx8mqevk_defconfig$/
+freescale_p1025twr_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_p1025twr_defconfig$/
+freescale_t1040d4rdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_t1040d4rdb_defconfig$/
+friendlyarm_nanopi_a64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_a64_defconfig$/
+friendlyarm_nanopi_neo2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_neo2_defconfig$/
+galileo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-galileo_defconfig$/
+grinn_chiliboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_chiliboard_defconfig$/
+grinn_liteboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_liteboard_defconfig$/
+imx23evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx23evk_defconfig$/
+imx6-sabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabreauto_defconfig$/
+imx6-sabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_defconfig$/
+imx6-sabresd_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_qt5_defconfig$/
+imx6slevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6slevk_defconfig$/
+imx6sx-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6sx-sdb_defconfig$/
+imx6ulevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulevk_defconfig$/
+imx6ulpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulpico_defconfig$/
+imx7d-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7d-sdb_defconfig$/
+imx7dpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7dpico_defconfig$/
+lego_ev3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-lego_ev3_defconfig$/
+linksprite_pcduino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-linksprite_pcduino_defconfig$/
+minnowboard_max-graphical_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max-graphical_defconfig$/
+minnowboard_max_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max_defconfig$/
+mx25pdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx25pdk_defconfig$/
+mx51evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx51evk_defconfig$/
+mx53loco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx53loco_defconfig$/
+mx6cubox_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6cubox_defconfig$/
+mx6sx_udoo_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6sx_udoo_neo_defconfig$/
+mx6udoo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6udoo_defconfig$/
+nanopi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_defconfig$/
+nanopi_m1_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_plus_defconfig$/
+nanopi_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_neo_defconfig$/
+nexbox_a95x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nexbox_a95x_defconfig$/
+nitrogen6sx_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6sx_defconfig$/
+nitrogen6x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6x_defconfig$/
+nitrogen7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen7_defconfig$/
+nitrogen8m_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen8m_defconfig$/
+odroidc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidc2_defconfig$/
+odroidxu4_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidxu4_defconfig$/
+olimex_a10_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a10_olinuxino_lime_defconfig$/
+olimex_a13_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a13_olinuxino_defconfig$/
+olimex_a20_olinuxino_lime2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime2_defconfig$/
+olimex_a20_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_defconfig$/
+olimex_a20_olinuxino_lime_legacy_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_legacy_defconfig$/
+olimex_a20_olinuxino_micro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_micro_defconfig$/
+olimex_a64_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a64_olinuxino_defconfig$/
+olimex_imx233_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_imx233_olinuxino_defconfig$/
+openblocks_a6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-openblocks_a6_defconfig$/
+orangepi_lite_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite_defconfig$/
+orangepi_one_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_defconfig$/
+orangepi_pc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc2_defconfig$/
+orangepi_pc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_defconfig$/
+orangepi_pc_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_plus_defconfig$/
+orangepi_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_plus_defconfig$/
+orangepi_prime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_prime_defconfig$/
+orangepi_win_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_win_defconfig$/
+orangepi_zero_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_defconfig$/
+orangepi_zero_plus2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_plus2_defconfig$/
+pandaboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pandaboard_defconfig$/
+pc_x86_64_bios_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_bios_defconfig$/
+pc_x86_64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_efi_defconfig$/
+pine64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_defconfig$/
+pine64_sopine_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_sopine_defconfig$/
+qemu_aarch64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_aarch64_virt_defconfig$/
+qemu_arm_versatile_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_defconfig$/
+qemu_arm_versatile_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_nommu_defconfig$/
+qemu_arm_vexpress_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_vexpress_defconfig$/
+qemu_m68k_mcf5208_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_mcf5208_defconfig$/
+qemu_m68k_q800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_q800_defconfig$/
+qemu_microblazebe_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazebe_mmu_defconfig$/
+qemu_microblazeel_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazeel_mmu_defconfig$/
+qemu_mips32r2_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2_malta_defconfig$/
+qemu_mips32r2el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2el_malta_defconfig$/
+qemu_mips32r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6_malta_defconfig$/
+qemu_mips32r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6el_malta_defconfig$/
+qemu_mips64_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64_malta_defconfig$/
+qemu_mips64el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64el_malta_defconfig$/
+qemu_mips64r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6_malta_defconfig$/
+qemu_mips64r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6el_malta_defconfig$/
+qemu_nios2_10m50_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_nios2_10m50_defconfig$/
+qemu_or1k_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_or1k_defconfig$/
+qemu_ppc64_e5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_e5500_defconfig$/
+qemu_ppc64_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_pseries_defconfig$/
+qemu_ppc64le_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64le_pseries_defconfig$/
+qemu_ppc_g3beige_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_g3beige_defconfig$/
+qemu_ppc_mpc8544ds_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_mpc8544ds_defconfig$/
+qemu_ppc_virtex_ml507_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_virtex_ml507_defconfig$/
+qemu_riscv64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv64_virt_defconfig$/
+qemu_sh4_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4_r2d_defconfig$/
+qemu_sh4eb_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4eb_r2d_defconfig$/
+qemu_sparc64_sun4u_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc64_sun4u_defconfig$/
+qemu_sparc_ss10_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc_ss10_defconfig$/
+qemu_x86_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_64_defconfig$/
+qemu_x86_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_defconfig$/
+qemu_xtensa_lx60_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_defconfig$/
+qemu_xtensa_lx60_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_nommu_defconfig$/
+raspberrypi0_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0_defconfig$/
+raspberrypi0w_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0w_defconfig$/
+raspberrypi2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi2_defconfig$/
+raspberrypi3_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_64_defconfig$/
+raspberrypi3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_defconfig$/
+raspberrypi3_qt5we_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_qt5we_defconfig$/
+raspberrypi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi_defconfig$/
+riotboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-riotboard_defconfig$/
+roseapplepi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-roseapplepi_defconfig$/
+s6lx9_microboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-s6lx9_microboard_defconfig$/
+sheevaplug_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-sheevaplug_defconfig$/
+snps_aarch64_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_aarch64_vdk_defconfig$/
+snps_arc700_axs101_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_arc700_axs101_defconfig$/
+snps_archs38_axs103_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_axs103_defconfig$/
+snps_archs38_haps_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_haps_defconfig$/
+snps_archs38_hsdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_hsdk_defconfig$/
+snps_archs38_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_vdk_defconfig$/
+socrates_cyclone5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-socrates_cyclone5_defconfig$/
+solidrun_clearfog_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_clearfog_defconfig$/
+solidrun_macchiatobin_mainline_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_mainline_defconfig$/
+solidrun_macchiatobin_marvell_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_marvell_defconfig$/
+stm32f429_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f429_disco_defconfig$/
+stm32f469_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f469_disco_defconfig$/
+toradex_apalis_imx6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-toradex_apalis_imx6_defconfig$/
+ts4800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4800_defconfig$/
+ts4900_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4900_defconfig$/
+ts5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts5500_defconfig$/
+ts7680_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts7680_defconfig$/
+wandboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-wandboard_defconfig$/
+warp7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warp7_defconfig$/
+warpboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warpboard_defconfig$/
+zynq_microzed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_microzed_defconfig$/
+zynq_zc706_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zc706_defconfig$/
+zynq_zed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zed_defconfig$/
+zynq_zybo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zybo_defconfig$/
+zynqmp_zcu106_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynqmp_zcu106_defconfig$/
+tests.boot.test_atf.TestATFAllwinner:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFAllwinner$/
+tests.boot.test_atf.TestATFMarvell:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFMarvell$/
+tests.boot.test_atf.TestATFVexpress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFVexpress$/
+tests.core.test_file_capabilities.TestFileCapabilities:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_file_capabilities\.TestFileCapabilities$/
+tests.core.test_hardening.TestFortifyConserv:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyConserv$/
+tests.core.test_hardening.TestFortifyNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyNone$/
+tests.core.test_hardening.TestRelro:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelro$/
+tests.core.test_hardening.TestRelroPartial:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelroPartial$/
+tests.core.test_hardening.TestSspNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspNone$/
+tests.core.test_hardening.TestSspStrong:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspStrong$/
+tests.core.test_post_scripts.TestPostScripts:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_post_scripts\.TestPostScripts$/
+tests.core.test_rootfs_overlay.TestRootfsOverlay:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_rootfs_overlay\.TestRootfsOverlay$/
+tests.core.test_timezone.TestGlibcAllTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcAllTimezone$/
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcNonDefaultLimitedTimezone$/
+tests.core.test_timezone.TestNoTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestNoTimezone$/
+tests.fs.test_ext.TestExt2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2$/
+tests.fs.test_ext.TestExt2r1:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2r1$/
+tests.fs.test_ext.TestExt3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt3$/
+tests.fs.test_ext.TestExt4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt4$/
+tests.fs.test_iso9660.TestIso9660Grub2External:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2External$/
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2ExternalCompress$/
+tests.fs.test_iso9660.TestIso9660Grub2Internal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2Internal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternalCompress$/
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxInternal$/
+tests.fs.test_jffs2.TestJffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_jffs2\.TestJffs2$/
+tests.fs.test_squashfs.TestSquashfs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_squashfs\.TestSquashfs$/
+tests.fs.test_ubi.TestUbi:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ubi\.TestUbi$/
+tests.fs.test_yaffs2.TestYaffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_yaffs2\.TestYaffs2$/
+tests.init.test_busybox.TestInitSystemBusyboxRo:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRo$/
+tests.init.test_busybox.TestInitSystemBusyboxRoNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRoNet$/
+tests.init.test_busybox.TestInitSystemBusyboxRw:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRw$/
+tests.init.test_busybox.TestInitSystemBusyboxRwNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRwNet$/
+tests.init.test_none.TestInitSystemNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_none\.TestInitSystemNone$/
+tests.init.test_systemd.TestInitSystemSystemdRoFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoFull$/
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoNetworkd$/
+tests.init.test_systemd.TestInitSystemSystemdRwFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwFull$/
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwNetworkd$/
+tests.package.test_dropbear.TestDropbear:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_dropbear\.TestDropbear$/
+tests.package.test_ipython.TestIPythonPy2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy2$/
+tests.package.test_ipython.TestIPythonPy3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy3$/
+tests.package.test_python.TestPython2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython2$/
+tests.package.test_python.TestPython3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython3$/
+tests.package.test_python_autobahn.TestPythonPy2Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy2Autobahn$/
+tests.package.test_python_autobahn.TestPythonPy3Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy3Autobahn$/
+tests.package.test_python_cryptography.TestPythonPy2Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy2Cryptography$/
+tests.package.test_python_cryptography.TestPythonPy3Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy3Cryptography$/
+tests.package.test_python_incremental.TestPythonPy2Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy2Incremental$/
+tests.package.test_python_incremental.TestPythonPy3Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy3Incremental$/
+tests.package.test_python_twisted.TestPythonPy2Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy2Twisted$/
+tests.package.test_python_twisted.TestPythonPy3Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy3Twisted$/
+tests.package.test_python_txaio.TestPythonPy2Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy2Txaio$/
+tests.package.test_python_txaio.TestPythonPy3Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy3Txaio$/
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy2Txtorcon$/
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy3Txtorcon$/
+tests.package.test_rust.TestRust:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRust$/
+tests.package.test_rust.TestRustBin:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRustBin$/
+tests.package.test_syslog_ng.TestSyslogNg:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_syslog_ng\.TestSyslogNg$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootMusl$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootuClibc$/
+tests.toolchain.test_external.TestExternalToolchainCCache:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCCache$/
+tests.toolchain.test_external.TestExternalToolchainCtngMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCtngMusl$/
+tests.toolchain.test_external.TestExternalToolchainLinaroArm:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainLinaroArm$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv4$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv5$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv7$/
support/scripts/generate-gitlab-ci-yml +19 -3
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
--

2.17.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 19 lines
Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com



CONFIDENTIALITY WARNING: This message may contain proprietary and/or
privileged information of Collins Aerospace and its affiliated
companies. If you are not the intended recipient, please 1) Do not
disclose, copy, distribute or use this message or its contents. 2)
Advise the sender by return email. 3) Delete all copies (including all
attachments) from your computer. Your cooperation is greatly
appreciated.
#9 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

Ricardo / Thomas / Yann,

Quoted 6 lines · Matthew Weber

Ricardo,

Quoted 1 line · Ricardo Martincoski
Quoted 19 lines
Quoted 4 lines

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.

Thank you for adding this! I have been thinking about how to better monitor my defconfigs I'm maintaining. Now I'll setup some jobs against my fork.

Quoted 10 lines

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 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests     # currently  72 jobs

I was thinking about adding a section in the manual describing how to setup a gitlab fork and the cronjobs to trigger runtime and defconfig cases. Then a person submitting new defconfigs and test cases could setup their own CI to monitor and track failures.

Is that a direction that makes sense to promote as possibly a way to get more visibility to CI failures?

Quoted 2,157 lines
Quoted 2,129 lines

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 and all check-* jobs:

   $ git push gitlab HEAD:<name>-<defconfig name>  # currently   5 jobs
 - to trigger one runtime test and all check-* jobs:
   $ git push gitlab HEAD:<name>-<test case name>  # currently   5 jobs

The check-* jobs are fast, so there is no need to either add a per job trigger for them or remove them from the trigger for a specific defconfig or runtime test case.

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 don't need to
think much, just copy and paste the job name as suffix.
Cc Arnout Vandecappelle <[email protected]>

---
NOTE: I am almost sure that those 2 awk to extract the 'only' key could be merged, but my experience in awk is limited.

---
 .gitlab-ci.yml                         | 2048 +++++++++++++++++++++---
 support/scripts/generate-gitlab-ci-yml |   21 +-
 2 files changed, 1811 insertions(+), 258 deletions(-)
.gitlab-ci.yml +1792 -256
index d84c283dbc..c6fc755c9b 100644
@@ -81,259 +81,1795 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+acmesystems_aria_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_128mb_defconfig$/
+acmesystems_aria_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_256mb_defconfig$/
+acmesystems_arietta_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_128mb_defconfig$/
+acmesystems_arietta_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_256mb_defconfig$/
+amarula_vyasa_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_vyasa_rk3288_defconfig$/
+arcturus_ucls1012a_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucls1012a_defconfig$/
+arcturus_ucp1020_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucp1020_defconfig$/
+arm_foundationv8_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_foundationv8_defconfig$/
+arm_juno_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_juno_defconfig$/
+armadeus_apf27_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf27_defconfig$/
+armadeus_apf28_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf28_defconfig$/
+armadeus_apf51_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf51_defconfig$/
+asus_tinker_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-asus_tinker_rk3288_defconfig$/
+at91sam9260eknf_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9260eknf_defconfig$/
+at91sam9g20dfc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g20dfc_defconfig$/
+at91sam9g45m10ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g45m10ek_defconfig$/
+at91sam9rlek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9rlek_defconfig$/
+at91sam9x5ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_defconfig$/
+at91sam9x5ek_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_dev_defconfig$/
+at91sam9x5ek_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_defconfig$/
+at91sam9x5ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_dev_defconfig$/
+atmel_sama5d27_som1_ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d27_som1_ek_mmc_dev_defconfig$/
+atmel_sama5d2_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_defconfig$/
+atmel_sama5d2_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_dev_defconfig$/
+atmel_sama5d3_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_defconfig$/
+atmel_sama5d3_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_dev_defconfig$/
+atmel_sama5d3_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_defconfig$/
+atmel_sama5d3_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_dev_defconfig$/
+atmel_sama5d3xek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3xek_defconfig$/
+atmel_sama5d4_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_defconfig$/
+atmel_sama5d4_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_dev_defconfig$/
+atmel_sama5d4_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_defconfig$/
+atmel_sama5d4_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_dev_defconfig$/
+bananapi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m1_defconfig$/
+bananapi_m2_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_plus_defconfig$/
+bananapi_m2_ultra_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_ultra_defconfig$/
+bananapi_m64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m64_defconfig$/
+bananapro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapro_defconfig$/
+beagleboardx15_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beagleboardx15_defconfig$/
+beaglebone_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_defconfig$/
+beaglebone_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_qt5_defconfig$/
+chromebook_snow_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-chromebook_snow_defconfig$/
+ci20_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ci20_defconfig$/
+csky_gx6605s_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-csky_gx6605s_defconfig$/
+cubieboard2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-cubieboard2_defconfig$/
+engicam_imx6qdl_icore_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_defconfig$/
+engicam_imx6qdl_icore_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_qt5_defconfig$/
+engicam_imx6qdl_icore_rqs_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_rqs_defconfig$/
+engicam_imx6ul_geam_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_geam_defconfig$/
+engicam_imx6ul_isiot_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_isiot_defconfig$/
+freescale_imx28evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx28evk_defconfig$/
+freescale_imx6dlsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabreauto_defconfig$/
+freescale_imx6dlsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabresd_defconfig$/
+freescale_imx6qsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabreauto_defconfig$/
+freescale_imx6qsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabresd_defconfig$/
+freescale_imx6sxsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6sxsabresd_defconfig$/
+freescale_imx7dsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx7dsabresd_defconfig$/
+freescale_imx8mqevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx8mqevk_defconfig$/
+freescale_p1025twr_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_p1025twr_defconfig$/
+freescale_t1040d4rdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_t1040d4rdb_defconfig$/
+friendlyarm_nanopi_a64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_a64_defconfig$/
+friendlyarm_nanopi_neo2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_neo2_defconfig$/
+galileo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-galileo_defconfig$/
+grinn_chiliboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_chiliboard_defconfig$/
+grinn_liteboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_liteboard_defconfig$/
+imx23evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx23evk_defconfig$/
+imx6-sabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabreauto_defconfig$/
+imx6-sabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_defconfig$/
+imx6-sabresd_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_qt5_defconfig$/
+imx6slevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6slevk_defconfig$/
+imx6sx-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6sx-sdb_defconfig$/
+imx6ulevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulevk_defconfig$/
+imx6ulpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulpico_defconfig$/
+imx7d-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7d-sdb_defconfig$/
+imx7dpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7dpico_defconfig$/
+lego_ev3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-lego_ev3_defconfig$/
+linksprite_pcduino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-linksprite_pcduino_defconfig$/
+minnowboard_max-graphical_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max-graphical_defconfig$/
+minnowboard_max_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max_defconfig$/
+mx25pdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx25pdk_defconfig$/
+mx51evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx51evk_defconfig$/
+mx53loco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx53loco_defconfig$/
+mx6cubox_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6cubox_defconfig$/
+mx6sx_udoo_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6sx_udoo_neo_defconfig$/
+mx6udoo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6udoo_defconfig$/
+nanopi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_defconfig$/
+nanopi_m1_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_plus_defconfig$/
+nanopi_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_neo_defconfig$/
+nexbox_a95x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nexbox_a95x_defconfig$/
+nitrogen6sx_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6sx_defconfig$/
+nitrogen6x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6x_defconfig$/
+nitrogen7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen7_defconfig$/
+nitrogen8m_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen8m_defconfig$/
+odroidc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidc2_defconfig$/
+odroidxu4_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidxu4_defconfig$/
+olimex_a10_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a10_olinuxino_lime_defconfig$/
+olimex_a13_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a13_olinuxino_defconfig$/
+olimex_a20_olinuxino_lime2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime2_defconfig$/
+olimex_a20_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_defconfig$/
+olimex_a20_olinuxino_lime_legacy_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_legacy_defconfig$/
+olimex_a20_olinuxino_micro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_micro_defconfig$/
+olimex_a64_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a64_olinuxino_defconfig$/
+olimex_imx233_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_imx233_olinuxino_defconfig$/
+openblocks_a6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-openblocks_a6_defconfig$/
+orangepi_lite_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite_defconfig$/
+orangepi_one_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_defconfig$/
+orangepi_pc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc2_defconfig$/
+orangepi_pc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_defconfig$/
+orangepi_pc_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_plus_defconfig$/
+orangepi_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_plus_defconfig$/
+orangepi_prime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_prime_defconfig$/
+orangepi_win_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_win_defconfig$/
+orangepi_zero_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_defconfig$/
+orangepi_zero_plus2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_plus2_defconfig$/
+pandaboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pandaboard_defconfig$/
+pc_x86_64_bios_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_bios_defconfig$/
+pc_x86_64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_efi_defconfig$/
+pine64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_defconfig$/
+pine64_sopine_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_sopine_defconfig$/
+qemu_aarch64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_aarch64_virt_defconfig$/
+qemu_arm_versatile_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_defconfig$/
+qemu_arm_versatile_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_nommu_defconfig$/
+qemu_arm_vexpress_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_vexpress_defconfig$/
+qemu_m68k_mcf5208_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_mcf5208_defconfig$/
+qemu_m68k_q800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_q800_defconfig$/
+qemu_microblazebe_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazebe_mmu_defconfig$/
+qemu_microblazeel_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazeel_mmu_defconfig$/
+qemu_mips32r2_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2_malta_defconfig$/
+qemu_mips32r2el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2el_malta_defconfig$/
+qemu_mips32r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6_malta_defconfig$/
+qemu_mips32r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6el_malta_defconfig$/
+qemu_mips64_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64_malta_defconfig$/
+qemu_mips64el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64el_malta_defconfig$/
+qemu_mips64r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6_malta_defconfig$/
+qemu_mips64r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6el_malta_defconfig$/
+qemu_nios2_10m50_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_nios2_10m50_defconfig$/
+qemu_or1k_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_or1k_defconfig$/
+qemu_ppc64_e5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_e5500_defconfig$/
+qemu_ppc64_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_pseries_defconfig$/
+qemu_ppc64le_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64le_pseries_defconfig$/
+qemu_ppc_g3beige_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_g3beige_defconfig$/
+qemu_ppc_mpc8544ds_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_mpc8544ds_defconfig$/
+qemu_ppc_virtex_ml507_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_virtex_ml507_defconfig$/
+qemu_riscv64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv64_virt_defconfig$/
+qemu_sh4_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4_r2d_defconfig$/
+qemu_sh4eb_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4eb_r2d_defconfig$/
+qemu_sparc64_sun4u_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc64_sun4u_defconfig$/
+qemu_sparc_ss10_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc_ss10_defconfig$/
+qemu_x86_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_64_defconfig$/
+qemu_x86_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_defconfig$/
+qemu_xtensa_lx60_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_defconfig$/
+qemu_xtensa_lx60_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_nommu_defconfig$/
+raspberrypi0_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0_defconfig$/
+raspberrypi0w_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0w_defconfig$/
+raspberrypi2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi2_defconfig$/
+raspberrypi3_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_64_defconfig$/
+raspberrypi3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_defconfig$/
+raspberrypi3_qt5we_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_qt5we_defconfig$/
+raspberrypi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi_defconfig$/
+riotboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-riotboard_defconfig$/
+roseapplepi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-roseapplepi_defconfig$/
+s6lx9_microboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-s6lx9_microboard_defconfig$/
+sheevaplug_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-sheevaplug_defconfig$/
+snps_aarch64_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_aarch64_vdk_defconfig$/
+snps_arc700_axs101_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_arc700_axs101_defconfig$/
+snps_archs38_axs103_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_axs103_defconfig$/
+snps_archs38_haps_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_haps_defconfig$/
+snps_archs38_hsdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_hsdk_defconfig$/
+snps_archs38_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_vdk_defconfig$/
+socrates_cyclone5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-socrates_cyclone5_defconfig$/
+solidrun_clearfog_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_clearfog_defconfig$/
+solidrun_macchiatobin_mainline_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_mainline_defconfig$/
+solidrun_macchiatobin_marvell_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_marvell_defconfig$/
+stm32f429_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f429_disco_defconfig$/
+stm32f469_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f469_disco_defconfig$/
+toradex_apalis_imx6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-toradex_apalis_imx6_defconfig$/
+ts4800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4800_defconfig$/
+ts4900_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4900_defconfig$/
+ts5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts5500_defconfig$/
+ts7680_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts7680_defconfig$/
+wandboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-wandboard_defconfig$/
+warp7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warp7_defconfig$/
+warpboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warpboard_defconfig$/
+zynq_microzed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_microzed_defconfig$/
+zynq_zc706_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zc706_defconfig$/
+zynq_zed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zed_defconfig$/
+zynq_zybo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zybo_defconfig$/
+zynqmp_zcu106_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynqmp_zcu106_defconfig$/
+tests.boot.test_atf.TestATFAllwinner:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFAllwinner$/
+tests.boot.test_atf.TestATFMarvell:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFMarvell$/
+tests.boot.test_atf.TestATFVexpress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFVexpress$/
+tests.core.test_file_capabilities.TestFileCapabilities:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_file_capabilities\.TestFileCapabilities$/
+tests.core.test_hardening.TestFortifyConserv:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyConserv$/
+tests.core.test_hardening.TestFortifyNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyNone$/
+tests.core.test_hardening.TestRelro:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelro$/
+tests.core.test_hardening.TestRelroPartial:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelroPartial$/
+tests.core.test_hardening.TestSspNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspNone$/
+tests.core.test_hardening.TestSspStrong:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspStrong$/
+tests.core.test_post_scripts.TestPostScripts:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_post_scripts\.TestPostScripts$/
+tests.core.test_rootfs_overlay.TestRootfsOverlay:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_rootfs_overlay\.TestRootfsOverlay$/
+tests.core.test_timezone.TestGlibcAllTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcAllTimezone$/
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcNonDefaultLimitedTimezone$/
+tests.core.test_timezone.TestNoTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestNoTimezone$/
+tests.fs.test_ext.TestExt2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2$/
+tests.fs.test_ext.TestExt2r1:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2r1$/
+tests.fs.test_ext.TestExt3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt3$/
+tests.fs.test_ext.TestExt4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt4$/
+tests.fs.test_iso9660.TestIso9660Grub2External:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2External$/
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2ExternalCompress$/
+tests.fs.test_iso9660.TestIso9660Grub2Internal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2Internal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternalCompress$/
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxInternal$/
+tests.fs.test_jffs2.TestJffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_jffs2\.TestJffs2$/
+tests.fs.test_squashfs.TestSquashfs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_squashfs\.TestSquashfs$/
+tests.fs.test_ubi.TestUbi:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ubi\.TestUbi$/
+tests.fs.test_yaffs2.TestYaffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_yaffs2\.TestYaffs2$/
+tests.init.test_busybox.TestInitSystemBusyboxRo:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRo$/
+tests.init.test_busybox.TestInitSystemBusyboxRoNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRoNet$/
+tests.init.test_busybox.TestInitSystemBusyboxRw:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRw$/
+tests.init.test_busybox.TestInitSystemBusyboxRwNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRwNet$/
+tests.init.test_none.TestInitSystemNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_none\.TestInitSystemNone$/
+tests.init.test_systemd.TestInitSystemSystemdRoFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoFull$/
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoNetworkd$/
+tests.init.test_systemd.TestInitSystemSystemdRwFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwFull$/
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwNetworkd$/
+tests.package.test_dropbear.TestDropbear:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_dropbear\.TestDropbear$/
+tests.package.test_ipython.TestIPythonPy2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy2$/
+tests.package.test_ipython.TestIPythonPy3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy3$/
+tests.package.test_python.TestPython2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython2$/
+tests.package.test_python.TestPython3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython3$/
+tests.package.test_python_autobahn.TestPythonPy2Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy2Autobahn$/
+tests.package.test_python_autobahn.TestPythonPy3Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy3Autobahn$/
+tests.package.test_python_cryptography.TestPythonPy2Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy2Cryptography$/
+tests.package.test_python_cryptography.TestPythonPy3Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy3Cryptography$/
+tests.package.test_python_incremental.TestPythonPy2Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy2Incremental$/
+tests.package.test_python_incremental.TestPythonPy3Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy3Incremental$/
+tests.package.test_python_twisted.TestPythonPy2Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy2Twisted$/
+tests.package.test_python_twisted.TestPythonPy3Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy3Twisted$/
+tests.package.test_python_txaio.TestPythonPy2Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy2Txaio$/
+tests.package.test_python_txaio.TestPythonPy3Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy3Txaio$/
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy2Txtorcon$/
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy3Txtorcon$/
+tests.package.test_rust.TestRust:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRust$/
+tests.package.test_rust.TestRustBin:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRustBin$/
+tests.package.test_syslog_ng.TestSyslogNg:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_syslog_ng\.TestSyslogNg$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootMusl$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootuClibc$/
+tests.toolchain.test_external.TestExternalToolchainCCache:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCCache$/
+tests.toolchain.test_external.TestExternalToolchainCtngMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCtngMusl$/
+tests.toolchain.test_external.TestExternalToolchainLinaroArm:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainLinaroArm$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv4$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv5$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv7$/
support/scripts/generate-gitlab-ci-yml +19 -3
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
--

2.17.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

--

Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com

CONFIDENTIALITY WARNING: This message may contain proprietary and/or privileged information of Collins Aerospace and its affiliated companies. If you are not the intended recipient, please 1) Do not disclose, copy, distribute or use this message or its contents. 2) Advise the sender by return email. 3) Delete all copies (including all attachments) from your computer. Your cooperation is greatly appreciated.

Signature · 19 lines
Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com



CONFIDENTIALITY WARNING: This message may contain proprietary and/or
privileged information of Collins Aerospace and its affiliated
companies. If you are not the intended recipient, please 1) Do not
disclose, copy, distribute or use this message or its contents. 2)
Advise the sender by return email. 3) Delete all copies (including all
attachments) from your computer. Your cooperation is greatly
appreciated.
#10 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

Ricardo,

Quoted 32 lines · Matthew Weber

Ricardo / Thomas / Yann,

Quoted 6 lines · Matthew Weber

Ricardo,

Quoted 1 line · Ricardo Martincoski
Quoted 19 lines
Quoted 4 lines

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.

Thank you for adding this! I have been thinking about how to better monitor my defconfigs I'm maintaining. Now I'll setup some jobs against my fork.

Quoted 10 lines

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 192 jobs
 - to trigger all runtime tests and all check-* jobs:
   $ git push gitlab HEAD:<name>-runtime-tests     # currently  72 jobs
Quoted 8 lines

I was thinking about adding a section in the manual describing how to setup a gitlab fork and the cronjobs to trigger runtime and defconfig cases. Then a person submitting new defconfigs and test cases could setup their own CI to monitor and track failures.

Is that a direction that makes sense to promote as possibly a way to get more visibility to CI failures?

Do you think you'll be sending an updated patchset for this feature? I can see this enabling others to setup gitlab tests for their defconfigs they support.

Matt

Quoted 2,181 lines
Quoted 2,150 lines
Quoted 2,129 lines

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 and all check-* jobs:

   $ git push gitlab HEAD:<name>-<defconfig name>  # currently   5 jobs
 - to trigger one runtime test and all check-* jobs:
   $ git push gitlab HEAD:<name>-<test case name>  # currently   5 jobs

The check-* jobs are fast, so there is no need to either add a per job trigger for them or remove them from the trigger for a specific defconfig or runtime test case.

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 don't need to
think much, just copy and paste the job name as suffix.
Cc Arnout Vandecappelle <[email protected]>

---
NOTE: I am almost sure that those 2 awk to extract the 'only' key could be merged, but my experience in awk is limited.

---
 .gitlab-ci.yml                         | 2048 +++++++++++++++++++++---
 support/scripts/generate-gitlab-ci-yml |   21 +-
 2 files changed, 1811 insertions(+), 258 deletions(-)
.gitlab-ci.yml +1792 -256
index d84c283dbc..c6fc755c9b 100644
@@ -81,259 +81,1795 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+acmesystems_aria_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_128mb_defconfig$/
+acmesystems_aria_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_256mb_defconfig$/
+acmesystems_arietta_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_128mb_defconfig$/
+acmesystems_arietta_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_256mb_defconfig$/
+amarula_vyasa_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_vyasa_rk3288_defconfig$/
+arcturus_ucls1012a_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucls1012a_defconfig$/
+arcturus_ucp1020_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucp1020_defconfig$/
+arm_foundationv8_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_foundationv8_defconfig$/
+arm_juno_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_juno_defconfig$/
+armadeus_apf27_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf27_defconfig$/
+armadeus_apf28_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf28_defconfig$/
+armadeus_apf51_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf51_defconfig$/
+asus_tinker_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-asus_tinker_rk3288_defconfig$/
+at91sam9260eknf_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9260eknf_defconfig$/
+at91sam9g20dfc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g20dfc_defconfig$/
+at91sam9g45m10ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g45m10ek_defconfig$/
+at91sam9rlek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9rlek_defconfig$/
+at91sam9x5ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_defconfig$/
+at91sam9x5ek_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_dev_defconfig$/
+at91sam9x5ek_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_defconfig$/
+at91sam9x5ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_dev_defconfig$/
+atmel_sama5d27_som1_ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d27_som1_ek_mmc_dev_defconfig$/
+atmel_sama5d2_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_defconfig$/
+atmel_sama5d2_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_dev_defconfig$/
+atmel_sama5d3_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_defconfig$/
+atmel_sama5d3_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_dev_defconfig$/
+atmel_sama5d3_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_defconfig$/
+atmel_sama5d3_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_dev_defconfig$/
+atmel_sama5d3xek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3xek_defconfig$/
+atmel_sama5d4_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_defconfig$/
+atmel_sama5d4_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_dev_defconfig$/
+atmel_sama5d4_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_defconfig$/
+atmel_sama5d4_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_dev_defconfig$/
+bananapi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m1_defconfig$/
+bananapi_m2_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_plus_defconfig$/
+bananapi_m2_ultra_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_ultra_defconfig$/
+bananapi_m64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m64_defconfig$/
+bananapro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapro_defconfig$/
+beagleboardx15_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beagleboardx15_defconfig$/
+beaglebone_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_defconfig$/
+beaglebone_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_qt5_defconfig$/
+chromebook_snow_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-chromebook_snow_defconfig$/
+ci20_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ci20_defconfig$/
+csky_gx6605s_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-csky_gx6605s_defconfig$/
+cubieboard2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-cubieboard2_defconfig$/
+engicam_imx6qdl_icore_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_defconfig$/
+engicam_imx6qdl_icore_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_qt5_defconfig$/
+engicam_imx6qdl_icore_rqs_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_rqs_defconfig$/
+engicam_imx6ul_geam_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_geam_defconfig$/
+engicam_imx6ul_isiot_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_isiot_defconfig$/
+freescale_imx28evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx28evk_defconfig$/
+freescale_imx6dlsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabreauto_defconfig$/
+freescale_imx6dlsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabresd_defconfig$/
+freescale_imx6qsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabreauto_defconfig$/
+freescale_imx6qsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabresd_defconfig$/
+freescale_imx6sxsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6sxsabresd_defconfig$/
+freescale_imx7dsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx7dsabresd_defconfig$/
+freescale_imx8mqevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx8mqevk_defconfig$/
+freescale_p1025twr_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_p1025twr_defconfig$/
+freescale_t1040d4rdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_t1040d4rdb_defconfig$/
+friendlyarm_nanopi_a64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_a64_defconfig$/
+friendlyarm_nanopi_neo2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_neo2_defconfig$/
+galileo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-galileo_defconfig$/
+grinn_chiliboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_chiliboard_defconfig$/
+grinn_liteboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_liteboard_defconfig$/
+imx23evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx23evk_defconfig$/
+imx6-sabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabreauto_defconfig$/
+imx6-sabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_defconfig$/
+imx6-sabresd_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_qt5_defconfig$/
+imx6slevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6slevk_defconfig$/
+imx6sx-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6sx-sdb_defconfig$/
+imx6ulevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulevk_defconfig$/
+imx6ulpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulpico_defconfig$/
+imx7d-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7d-sdb_defconfig$/
+imx7dpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7dpico_defconfig$/
+lego_ev3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-lego_ev3_defconfig$/
+linksprite_pcduino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-linksprite_pcduino_defconfig$/
+minnowboard_max-graphical_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max-graphical_defconfig$/
+minnowboard_max_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max_defconfig$/
+mx25pdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx25pdk_defconfig$/
+mx51evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx51evk_defconfig$/
+mx53loco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx53loco_defconfig$/
+mx6cubox_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6cubox_defconfig$/
+mx6sx_udoo_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6sx_udoo_neo_defconfig$/
+mx6udoo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6udoo_defconfig$/
+nanopi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_defconfig$/
+nanopi_m1_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_plus_defconfig$/
+nanopi_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_neo_defconfig$/
+nexbox_a95x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nexbox_a95x_defconfig$/
+nitrogen6sx_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6sx_defconfig$/
+nitrogen6x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6x_defconfig$/
+nitrogen7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen7_defconfig$/
+nitrogen8m_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen8m_defconfig$/
+odroidc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidc2_defconfig$/
+odroidxu4_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidxu4_defconfig$/
+olimex_a10_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a10_olinuxino_lime_defconfig$/
+olimex_a13_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a13_olinuxino_defconfig$/
+olimex_a20_olinuxino_lime2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime2_defconfig$/
+olimex_a20_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_defconfig$/
+olimex_a20_olinuxino_lime_legacy_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_legacy_defconfig$/
+olimex_a20_olinuxino_micro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_micro_defconfig$/
+olimex_a64_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a64_olinuxino_defconfig$/
+olimex_imx233_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_imx233_olinuxino_defconfig$/
+openblocks_a6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-openblocks_a6_defconfig$/
+orangepi_lite_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite_defconfig$/
+orangepi_one_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_defconfig$/
+orangepi_pc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc2_defconfig$/
+orangepi_pc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_defconfig$/
+orangepi_pc_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_plus_defconfig$/
+orangepi_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_plus_defconfig$/
+orangepi_prime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_prime_defconfig$/
+orangepi_win_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_win_defconfig$/
+orangepi_zero_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_defconfig$/
+orangepi_zero_plus2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_plus2_defconfig$/
+pandaboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pandaboard_defconfig$/
+pc_x86_64_bios_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_bios_defconfig$/
+pc_x86_64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_efi_defconfig$/
+pine64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_defconfig$/
+pine64_sopine_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_sopine_defconfig$/
+qemu_aarch64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_aarch64_virt_defconfig$/
+qemu_arm_versatile_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_defconfig$/
+qemu_arm_versatile_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_nommu_defconfig$/
+qemu_arm_vexpress_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_vexpress_defconfig$/
+qemu_m68k_mcf5208_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_mcf5208_defconfig$/
+qemu_m68k_q800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_q800_defconfig$/
+qemu_microblazebe_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazebe_mmu_defconfig$/
+qemu_microblazeel_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazeel_mmu_defconfig$/
+qemu_mips32r2_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2_malta_defconfig$/
+qemu_mips32r2el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2el_malta_defconfig$/
+qemu_mips32r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6_malta_defconfig$/
+qemu_mips32r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6el_malta_defconfig$/
+qemu_mips64_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64_malta_defconfig$/
+qemu_mips64el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64el_malta_defconfig$/
+qemu_mips64r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6_malta_defconfig$/
+qemu_mips64r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6el_malta_defconfig$/
+qemu_nios2_10m50_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_nios2_10m50_defconfig$/
+qemu_or1k_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_or1k_defconfig$/
+qemu_ppc64_e5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_e5500_defconfig$/
+qemu_ppc64_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_pseries_defconfig$/
+qemu_ppc64le_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64le_pseries_defconfig$/
+qemu_ppc_g3beige_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_g3beige_defconfig$/
+qemu_ppc_mpc8544ds_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_mpc8544ds_defconfig$/
+qemu_ppc_virtex_ml507_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_virtex_ml507_defconfig$/
+qemu_riscv64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv64_virt_defconfig$/
+qemu_sh4_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4_r2d_defconfig$/
+qemu_sh4eb_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4eb_r2d_defconfig$/
+qemu_sparc64_sun4u_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc64_sun4u_defconfig$/
+qemu_sparc_ss10_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc_ss10_defconfig$/
+qemu_x86_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_64_defconfig$/
+qemu_x86_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_defconfig$/
+qemu_xtensa_lx60_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_defconfig$/
+qemu_xtensa_lx60_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_nommu_defconfig$/
+raspberrypi0_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0_defconfig$/
+raspberrypi0w_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0w_defconfig$/
+raspberrypi2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi2_defconfig$/
+raspberrypi3_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_64_defconfig$/
+raspberrypi3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_defconfig$/
+raspberrypi3_qt5we_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_qt5we_defconfig$/
+raspberrypi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi_defconfig$/
+riotboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-riotboard_defconfig$/
+roseapplepi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-roseapplepi_defconfig$/
+s6lx9_microboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-s6lx9_microboard_defconfig$/
+sheevaplug_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-sheevaplug_defconfig$/
+snps_aarch64_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_aarch64_vdk_defconfig$/
+snps_arc700_axs101_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_arc700_axs101_defconfig$/
+snps_archs38_axs103_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_axs103_defconfig$/
+snps_archs38_haps_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_haps_defconfig$/
+snps_archs38_hsdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_hsdk_defconfig$/
+snps_archs38_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_vdk_defconfig$/
+socrates_cyclone5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-socrates_cyclone5_defconfig$/
+solidrun_clearfog_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_clearfog_defconfig$/
+solidrun_macchiatobin_mainline_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_mainline_defconfig$/
+solidrun_macchiatobin_marvell_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_marvell_defconfig$/
+stm32f429_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f429_disco_defconfig$/
+stm32f469_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f469_disco_defconfig$/
+toradex_apalis_imx6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-toradex_apalis_imx6_defconfig$/
+ts4800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4800_defconfig$/
+ts4900_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4900_defconfig$/
+ts5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts5500_defconfig$/
+ts7680_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts7680_defconfig$/
+wandboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-wandboard_defconfig$/
+warp7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warp7_defconfig$/
+warpboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warpboard_defconfig$/
+zynq_microzed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_microzed_defconfig$/
+zynq_zc706_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zc706_defconfig$/
+zynq_zed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zed_defconfig$/
+zynq_zybo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zybo_defconfig$/
+zynqmp_zcu106_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynqmp_zcu106_defconfig$/
+tests.boot.test_atf.TestATFAllwinner:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFAllwinner$/
+tests.boot.test_atf.TestATFMarvell:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFMarvell$/
+tests.boot.test_atf.TestATFVexpress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFVexpress$/
+tests.core.test_file_capabilities.TestFileCapabilities:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_file_capabilities\.TestFileCapabilities$/
+tests.core.test_hardening.TestFortifyConserv:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyConserv$/
+tests.core.test_hardening.TestFortifyNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyNone$/
+tests.core.test_hardening.TestRelro:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelro$/
+tests.core.test_hardening.TestRelroPartial:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelroPartial$/
+tests.core.test_hardening.TestSspNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspNone$/
+tests.core.test_hardening.TestSspStrong:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspStrong$/
+tests.core.test_post_scripts.TestPostScripts:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_post_scripts\.TestPostScripts$/
+tests.core.test_rootfs_overlay.TestRootfsOverlay:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_rootfs_overlay\.TestRootfsOverlay$/
+tests.core.test_timezone.TestGlibcAllTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcAllTimezone$/
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcNonDefaultLimitedTimezone$/
+tests.core.test_timezone.TestNoTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestNoTimezone$/
+tests.fs.test_ext.TestExt2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2$/
+tests.fs.test_ext.TestExt2r1:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2r1$/
+tests.fs.test_ext.TestExt3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt3$/
+tests.fs.test_ext.TestExt4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt4$/
+tests.fs.test_iso9660.TestIso9660Grub2External:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2External$/
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2ExternalCompress$/
+tests.fs.test_iso9660.TestIso9660Grub2Internal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2Internal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternalCompress$/
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxInternal$/
+tests.fs.test_jffs2.TestJffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_jffs2\.TestJffs2$/
+tests.fs.test_squashfs.TestSquashfs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_squashfs\.TestSquashfs$/
+tests.fs.test_ubi.TestUbi:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ubi\.TestUbi$/
+tests.fs.test_yaffs2.TestYaffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_yaffs2\.TestYaffs2$/
+tests.init.test_busybox.TestInitSystemBusyboxRo:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRo$/
+tests.init.test_busybox.TestInitSystemBusyboxRoNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRoNet$/
+tests.init.test_busybox.TestInitSystemBusyboxRw:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRw$/
+tests.init.test_busybox.TestInitSystemBusyboxRwNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRwNet$/
+tests.init.test_none.TestInitSystemNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_none\.TestInitSystemNone$/
+tests.init.test_systemd.TestInitSystemSystemdRoFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoFull$/
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoNetworkd$/
+tests.init.test_systemd.TestInitSystemSystemdRwFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwFull$/
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwNetworkd$/
+tests.package.test_dropbear.TestDropbear:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_dropbear\.TestDropbear$/
+tests.package.test_ipython.TestIPythonPy2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy2$/
+tests.package.test_ipython.TestIPythonPy3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy3$/
+tests.package.test_python.TestPython2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython2$/
+tests.package.test_python.TestPython3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython3$/
+tests.package.test_python_autobahn.TestPythonPy2Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy2Autobahn$/
+tests.package.test_python_autobahn.TestPythonPy3Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy3Autobahn$/
+tests.package.test_python_cryptography.TestPythonPy2Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy2Cryptography$/
+tests.package.test_python_cryptography.TestPythonPy3Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy3Cryptography$/
+tests.package.test_python_incremental.TestPythonPy2Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy2Incremental$/
+tests.package.test_python_incremental.TestPythonPy3Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy3Incremental$/
+tests.package.test_python_twisted.TestPythonPy2Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy2Twisted$/
+tests.package.test_python_twisted.TestPythonPy3Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy3Twisted$/
+tests.package.test_python_txaio.TestPythonPy2Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy2Txaio$/
+tests.package.test_python_txaio.TestPythonPy3Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy3Txaio$/
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy2Txtorcon$/
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy3Txtorcon$/
+tests.package.test_rust.TestRust:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRust$/
+tests.package.test_rust.TestRustBin:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRustBin$/
+tests.package.test_syslog_ng.TestSyslogNg:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_syslog_ng\.TestSyslogNg$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootMusl$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootuClibc$/
+tests.toolchain.test_external.TestExternalToolchainCCache:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCCache$/
+tests.toolchain.test_external.TestExternalToolchainCtngMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCtngMusl$/
+tests.toolchain.test_external.TestExternalToolchainLinaroArm:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainLinaroArm$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv4$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv5$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv7$/
support/scripts/generate-gitlab-ci-yml +19 -3
index d824f669b5..9efa775f88 100755
@@ -7,14 +7,31 @@ output="${2}"
 
 cp "${input}" "${output}"
 
+d_only_in=$(
+    awk '/^\.defconfig:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+d_only=$( \
+    printf ":\n    <<: *defconfig\n    only:\n%s\n        - /-" "$d_only_in"
+)
+
 (
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/' \
+    | awk -v o="$d_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
 
+r_only_in=$(
+    awk '/^\.runtime_test:/{x=1;next}/^[^ ]/{x=0}x' "${input}" \
+        | awk '/^    only/{x=1;next}/^    [^ ]/{x=0}x'
+)
+r_only=$(
+    printf ":\n    <<: *runtime_test\n    only:\n%s\n        - /-" "$r_only_in"
+)
+
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
     | LC_ALL=C sort \
+    | awk -v o="$r_only" '{i=$0; gsub(/\./,"\\.",i); print $0 o i "$/"}' \
     >> "${output}"
--

2.17.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

--

Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com

Quoted 7 lines

CONFIDENTIALITY WARNING: This message may contain proprietary and/or privileged information of Collins Aerospace and its affiliated companies. If you are not the intended recipient, please 1) Do not disclose, copy, distribute or use this message or its contents. 2) Advise the sender by return email. 3) Delete all copies (including all attachments) from your computer. Your cooperation is greatly appreciated.

--

Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com

CONFIDENTIALITY WARNING: This message may contain proprietary and/or privileged information of Collins Aerospace and its affiliated companies. If you are not the intended recipient, please 1) Do not disclose, copy, distribute or use this message or its contents. 2) Advise the sender by return email. 3) Delete all copies (including all attachments) from your computer. Your cooperation is greatly appreciated.

Signature · 23 lines
Matthew Weber | Pr. Software Engineer | Commercial Avionics

COLLINS AEROSPACE

400 Collins Road NE, Cedar Rapids, Iowa 52498, USA

Tel: +1 319 295 7349 | FAX: +1 319 263 6099

matthew.weber at collins.com | collinsaerospace.com



CONFIDENTIALITY WARNING: This message may contain proprietary and/or
privileged information of Collins Aerospace and its affiliated
companies. If you are not the intended recipient, please 1) Do not
disclose, copy, distribute or use this message or its contents. 2)
Advise the sender by return email. 3) Delete all copies (including all
attachments) from your computer. Your cooperation is greatly
appreciated.


Any export restricted material should be shared using my
matthew.weber at corp.rockwellcollins.com address.
#11 lore raw

PATCH 3/3 .gitlab-ci.yml: add trigger per job

Hello,

Quoted 5 lines · Matthew Weber
Quoted 3 lines · Matthew Weber

On Mon, Dec 10, 2018 at 7:30 AM Matthew Weber
<[email protected]> wrote:

[snip]

Quoted 5 lines
Quoted 5 lines

I was thinking about adding a section in the manual describing how to setup a gitlab fork and the cronjobs to trigger runtime and defconfig cases. Then a person submitting new defconfigs and test cases could setup their own CI to monitor and track failures.

... and also easily test the new defconfig or test case using the Gitlab CI even before submitting.

I think this new section to the manual would be useful.

Quoted 8 lines
Quoted 4 lines

Is that a direction that makes sense to promote as possibly a way to get more visibility to CI failures?

Do you think you'll be sending an updated patchset for this feature? I can see this enabling others to setup gitlab tests for their defconfigs they support.

Sorry the long delay on this topic.
I think I will have some time to implement Thomas' suggestions in the next 1 or 2 weekends.
But please feel free to take over if you want (and have the time now).

Regards,
Ricardo

#12 lore raw

PATCH v2 1/1 .gitlab-ci.yml: add trigger per job

In reply to Ricardo Martincoski

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 and all check-* jobs:

   $ git push gitlab HEAD:<name>-<defconfig name>  # currently   5 jobs
 - to trigger one runtime test and all check-* jobs:
   $ git push gitlab HEAD:<name>-<test case name>  # currently   5 jobs

The check-* jobs are fast, so there is no need to either add a per job trigger for them or remove them from the trigger for a specific defconfig or runtime test case.

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 don't need to
think much, just copy and paste the job name as suffix.
Cc Arnout Vandecappelle <[email protected]>
Cc Matt Weber <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v1 -> v2:
- use shell-based implementation instead of complexes awk calls, it is

    simpler and easier to read (suggested by Thomas);
  - since now the value for 'only' is overridden by the script, add a
    note on .gitlab-ci.yml*;

For test purposes I created a commit that makes all defconfig and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43335803
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43335822
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43335842
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43335890

Using only this patch (without the test commit above) I also asked 20 random jobs:

$ for job in \
  $(grep '_defconfig:\|^tests' .gitlab-ci.yml | sed -e 's,:,,g' | shuf -n 20); do \
  git push gitlab HEAD:trigger-per-job-v2-$job ; \
  done
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640727
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640731
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640733
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640742
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640746
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640751
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640758
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640763
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640766
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640773
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640780
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640787
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640794
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640799
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640802
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640808
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640813
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640817
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640821
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/43640823
---
 .gitlab-ci.yml                         | 2458 +++++++++++++++++++++---
 .gitlab-ci.yml.in                      |    2 +
 support/scripts/generate-gitlab-ci-yml |   27 +-
 3 files changed, 2177 insertions(+), 310 deletions(-)
.gitlab-ci.yml +2151 -307
index 79daebf160..61043194f9 100644
@@ -48,6 +48,7 @@ check-package:
 .defconfig: &defconfig
     # Running the defconfigs for every push is too much, so limit to
     # explicit triggers through the API.
+    # NOTE: support/scripts/generate-gitlab-ci-yml overrides this value.
     only:
         - triggers
         - tags
@@ -67,6 +68,7 @@ check-package:
 .runtime_test: &runtime_test
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
+    # NOTE: support/scripts/generate-gitlab-ci-yml overrides this value.
     only:
         - triggers
         - tags
@@ -83,310 +85,2152 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-aarch64_efi_defconfig: *defconfig
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_a64_relic_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite2_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_one_plus_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv32_virt_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_f2fs.TestF2FS: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_lua.TestLua: *runtime_test
-tests.package.test_lua.TestLuajit: *runtime_test
-tests.package.test_perl.TestPerl: *runtime_test
-tests.package.test_perl_class_load.TestPerlClassLoad: *runtime_test
-tests.package.test_perl_dbd_mysql.TestPerlDBDmysql: *runtime_test
-tests.package.test_perl_encode_detect.TestPerlEncodeDetect: *runtime_test
-tests.package.test_perl_gdgraph.TestPerlGDGraph: *runtime_test
-tests.package.test_perl_io_socket_multicast.TestPerlIOSocketMulticast: *runtime_test
-tests.package.test_perl_io_socket_ssl.TestPerlIOSocketSSL: *runtime_test
-tests.package.test_perl_libwww_perl.TestPerllibwwwperl: *runtime_test
-tests.package.test_perl_mail_dkim.TestPerlMailDKIM: *runtime_test
-tests.package.test_perl_x10.TestPerlX10: *runtime_test
-tests.package.test_perl_xml_libxml.TestPerlXMLLibXML: *runtime_test
-tests.package.test_prosody.TestProsodyLua51: *runtime_test
-tests.package.test_prosody.TestProsodyLuajit: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_argh.TestPythonPy2Argh: *runtime_test
-tests.package.test_python_argh.TestPythonPy3Argh: *runtime_test
-tests.package.test_python_attrs.TestPythonPy2Attrs: *runtime_test
-tests.package.test_python_attrs.TestPythonPy3Attrs: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_automat.TestPythonPy2Automat: *runtime_test
-tests.package.test_python_automat.TestPythonPy3Automat: *runtime_test
-tests.package.test_python_bitstring.TestPythonPy2Bitstring: *runtime_test
-tests.package.test_python_bitstring.TestPythonPy3Bitstring: *runtime_test
-tests.package.test_python_cbor.TestPythonPy2Cbor: *runtime_test
-tests.package.test_python_cbor.TestPythonPy3Cbor: *runtime_test
-tests.package.test_python_click.TestPythonPy2Click: *runtime_test
-tests.package.test_python_click.TestPythonPy3Click: *runtime_test
-tests.package.test_python_constantly.TestPythonPy2Constantly: *runtime_test
-tests.package.test_python_constantly.TestPythonPy3Constantly: *runtime_test
-tests.package.test_python_crossbar.TestPythonPy3Crossbar: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_passlib.TestPythonPy2Passlib: *runtime_test
-tests.package.test_python_passlib.TestPythonPy3Passlib: *runtime_test
-tests.package.test_python_pexpect.TestPythonPy2Pexpect: *runtime_test
-tests.package.test_python_pexpect.TestPythonPy3Pexpect: *runtime_test
-tests.package.test_python_pynacl.TestPythonPy2Pynacl: *runtime_test
-tests.package.test_python_pynacl.TestPythonPy3Pynacl: *runtime_test
-tests.package.test_python_pyyaml.TestPythonPy2Pyyaml: *runtime_test
-tests.package.test_python_pyyaml.TestPythonPy3Pyyaml: *runtime_test
-tests.package.test_python_service_identity.TestPythonPy2ServiceIdentity: *runtime_test
-tests.package.test_python_service_identity.TestPythonPy3ServiceIdentity: *runtime_test
-tests.package.test_python_subprocess32.TestPythonPy2Subprocess32: *runtime_test
-tests.package.test_python_treq.TestPythonPy2Treq: *runtime_test
-tests.package.test_python_treq.TestPythonPy3Treq: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_python_ubjson.TestPythonPy2Ubjson: *runtime_test
-tests.package.test_python_ubjson.TestPythonPy3Ubjson: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+aarch64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-aarch64_efi_defconfig$/
+acmesystems_aria_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_128mb_defconfig$/
+acmesystems_aria_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_aria_g25_256mb_defconfig$/
+acmesystems_arietta_g25_128mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_128mb_defconfig$/
+acmesystems_arietta_g25_256mb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-acmesystems_arietta_g25_256mb_defconfig$/
+amarula_a64_relic_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_a64_relic_defconfig$/
+amarula_vyasa_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-amarula_vyasa_rk3288_defconfig$/
+arcturus_ucls1012a_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucls1012a_defconfig$/
+arcturus_ucp1020_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arcturus_ucp1020_defconfig$/
+arm_foundationv8_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_foundationv8_defconfig$/
+arm_juno_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-arm_juno_defconfig$/
+armadeus_apf27_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf27_defconfig$/
+armadeus_apf28_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf28_defconfig$/
+armadeus_apf51_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-armadeus_apf51_defconfig$/
+asus_tinker_rk3288_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-asus_tinker_rk3288_defconfig$/
+at91sam9260eknf_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9260eknf_defconfig$/
+at91sam9g20dfc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g20dfc_defconfig$/
+at91sam9g45m10ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9g45m10ek_defconfig$/
+at91sam9rlek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9rlek_defconfig$/
+at91sam9x5ek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_defconfig$/
+at91sam9x5ek_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_dev_defconfig$/
+at91sam9x5ek_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_defconfig$/
+at91sam9x5ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-at91sam9x5ek_mmc_dev_defconfig$/
+atmel_sama5d27_som1_ek_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d27_som1_ek_mmc_dev_defconfig$/
+atmel_sama5d2_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_defconfig$/
+atmel_sama5d2_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d2_xplained_mmc_dev_defconfig$/
+atmel_sama5d3_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_defconfig$/
+atmel_sama5d3_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_dev_defconfig$/
+atmel_sama5d3_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_defconfig$/
+atmel_sama5d3_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3_xplained_mmc_dev_defconfig$/
+atmel_sama5d3xek_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d3xek_defconfig$/
+atmel_sama5d4_xplained_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_defconfig$/
+atmel_sama5d4_xplained_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_dev_defconfig$/
+atmel_sama5d4_xplained_mmc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_defconfig$/
+atmel_sama5d4_xplained_mmc_dev_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-atmel_sama5d4_xplained_mmc_dev_defconfig$/
+bananapi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m1_defconfig$/
+bananapi_m2_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_plus_defconfig$/
+bananapi_m2_ultra_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m2_ultra_defconfig$/
+bananapi_m64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapi_m64_defconfig$/
+bananapro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-bananapro_defconfig$/
+beagleboardx15_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beagleboardx15_defconfig$/
+beaglebone_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_defconfig$/
+beaglebone_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-beaglebone_qt5_defconfig$/
+chromebook_snow_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-chromebook_snow_defconfig$/
+ci20_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ci20_defconfig$/
+csky_gx6605s_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-csky_gx6605s_defconfig$/
+cubieboard2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-cubieboard2_defconfig$/
+engicam_imx6qdl_icore_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_defconfig$/
+engicam_imx6qdl_icore_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_qt5_defconfig$/
+engicam_imx6qdl_icore_rqs_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6qdl_icore_rqs_defconfig$/
+engicam_imx6ul_geam_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_geam_defconfig$/
+engicam_imx6ul_isiot_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-engicam_imx6ul_isiot_defconfig$/
+freescale_imx28evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx28evk_defconfig$/
+freescale_imx6dlsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabreauto_defconfig$/
+freescale_imx6dlsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6dlsabresd_defconfig$/
+freescale_imx6qsabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabreauto_defconfig$/
+freescale_imx6qsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6qsabresd_defconfig$/
+freescale_imx6sxsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx6sxsabresd_defconfig$/
+freescale_imx7dsabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx7dsabresd_defconfig$/
+freescale_imx8mqevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_imx8mqevk_defconfig$/
+freescale_p1025twr_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_p1025twr_defconfig$/
+freescale_t1040d4rdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-freescale_t1040d4rdb_defconfig$/
+friendlyarm_nanopi_a64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_a64_defconfig$/
+friendlyarm_nanopi_neo2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-friendlyarm_nanopi_neo2_defconfig$/
+galileo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-galileo_defconfig$/
+grinn_chiliboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_chiliboard_defconfig$/
+grinn_liteboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-grinn_liteboard_defconfig$/
+imx23evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx23evk_defconfig$/
+imx6-sabreauto_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabreauto_defconfig$/
+imx6-sabresd_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_defconfig$/
+imx6-sabresd_qt5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6-sabresd_qt5_defconfig$/
+imx6slevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6slevk_defconfig$/
+imx6sx-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6sx-sdb_defconfig$/
+imx6ulevk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulevk_defconfig$/
+imx6ulpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx6ulpico_defconfig$/
+imx7d-sdb_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7d-sdb_defconfig$/
+imx7dpico_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-imx7dpico_defconfig$/
+lego_ev3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-lego_ev3_defconfig$/
+linksprite_pcduino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-linksprite_pcduino_defconfig$/
+minnowboard_max-graphical_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max-graphical_defconfig$/
+minnowboard_max_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-minnowboard_max_defconfig$/
+mx25pdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx25pdk_defconfig$/
+mx51evk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx51evk_defconfig$/
+mx53loco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx53loco_defconfig$/
+mx6cubox_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6cubox_defconfig$/
+mx6sx_udoo_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6sx_udoo_neo_defconfig$/
+mx6udoo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-mx6udoo_defconfig$/
+nanopi_m1_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_defconfig$/
+nanopi_m1_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_m1_plus_defconfig$/
+nanopi_neo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nanopi_neo_defconfig$/
+nexbox_a95x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nexbox_a95x_defconfig$/
+nitrogen6sx_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6sx_defconfig$/
+nitrogen6x_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen6x_defconfig$/
+nitrogen7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen7_defconfig$/
+nitrogen8m_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-nitrogen8m_defconfig$/
+odroidc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidc2_defconfig$/
+odroidxu4_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-odroidxu4_defconfig$/
+olimex_a10_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a10_olinuxino_lime_defconfig$/
+olimex_a13_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a13_olinuxino_defconfig$/
+olimex_a20_olinuxino_lime2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime2_defconfig$/
+olimex_a20_olinuxino_lime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_defconfig$/
+olimex_a20_olinuxino_lime_legacy_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_lime_legacy_defconfig$/
+olimex_a20_olinuxino_micro_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a20_olinuxino_micro_defconfig$/
+olimex_a64_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_a64_olinuxino_defconfig$/
+olimex_imx233_olinuxino_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-olimex_imx233_olinuxino_defconfig$/
+openblocks_a6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-openblocks_a6_defconfig$/
+orangepi_lite2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite2_defconfig$/
+orangepi_lite_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_lite_defconfig$/
+orangepi_one_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_defconfig$/
+orangepi_one_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_one_plus_defconfig$/
+orangepi_pc2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc2_defconfig$/
+orangepi_pc_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_defconfig$/
+orangepi_pc_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_pc_plus_defconfig$/
+orangepi_plus_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_plus_defconfig$/
+orangepi_prime_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_prime_defconfig$/
+orangepi_win_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_win_defconfig$/
+orangepi_zero_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_defconfig$/
+orangepi_zero_plus2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-orangepi_zero_plus2_defconfig$/
+pandaboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pandaboard_defconfig$/
+pc_x86_64_bios_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_bios_defconfig$/
+pc_x86_64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pc_x86_64_efi_defconfig$/
+pine64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_defconfig$/
+pine64_sopine_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-pine64_sopine_defconfig$/
+qemu_aarch64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_aarch64_virt_defconfig$/
+qemu_arm_versatile_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_defconfig$/
+qemu_arm_versatile_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_versatile_nommu_defconfig$/
+qemu_arm_vexpress_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_arm_vexpress_defconfig$/
+qemu_m68k_mcf5208_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_mcf5208_defconfig$/
+qemu_m68k_q800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_m68k_q800_defconfig$/
+qemu_microblazebe_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazebe_mmu_defconfig$/
+qemu_microblazeel_mmu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_microblazeel_mmu_defconfig$/
+qemu_mips32r2_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2_malta_defconfig$/
+qemu_mips32r2el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r2el_malta_defconfig$/
+qemu_mips32r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6_malta_defconfig$/
+qemu_mips32r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips32r6el_malta_defconfig$/
+qemu_mips64_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64_malta_defconfig$/
+qemu_mips64el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64el_malta_defconfig$/
+qemu_mips64r6_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6_malta_defconfig$/
+qemu_mips64r6el_malta_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_mips64r6el_malta_defconfig$/
+qemu_nios2_10m50_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_nios2_10m50_defconfig$/
+qemu_or1k_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_or1k_defconfig$/
+qemu_ppc64_e5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_e5500_defconfig$/
+qemu_ppc64_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64_pseries_defconfig$/
+qemu_ppc64le_pseries_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc64le_pseries_defconfig$/
+qemu_ppc_g3beige_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_g3beige_defconfig$/
+qemu_ppc_mpc8544ds_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_mpc8544ds_defconfig$/
+qemu_ppc_virtex_ml507_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_ppc_virtex_ml507_defconfig$/
+qemu_riscv32_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv32_virt_defconfig$/
+qemu_riscv64_virt_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_riscv64_virt_defconfig$/
+qemu_sh4_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4_r2d_defconfig$/
+qemu_sh4eb_r2d_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sh4eb_r2d_defconfig$/
+qemu_sparc64_sun4u_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc64_sun4u_defconfig$/
+qemu_sparc_ss10_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_sparc_ss10_defconfig$/
+qemu_x86_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_64_defconfig$/
+qemu_x86_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_x86_defconfig$/
+qemu_xtensa_lx60_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_defconfig$/
+qemu_xtensa_lx60_nommu_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-qemu_xtensa_lx60_nommu_defconfig$/
+raspberrypi0_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0_defconfig$/
+raspberrypi0w_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi0w_defconfig$/
+raspberrypi2_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi2_defconfig$/
+raspberrypi3_64_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_64_defconfig$/
+raspberrypi3_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_defconfig$/
+raspberrypi3_qt5we_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi3_qt5we_defconfig$/
+raspberrypi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-raspberrypi_defconfig$/
+riotboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-riotboard_defconfig$/
+roseapplepi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-roseapplepi_defconfig$/
+s6lx9_microboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-s6lx9_microboard_defconfig$/
+sheevaplug_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-sheevaplug_defconfig$/
+snps_aarch64_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_aarch64_vdk_defconfig$/
+snps_arc700_axs101_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_arc700_axs101_defconfig$/
+snps_archs38_axs103_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_axs103_defconfig$/
+snps_archs38_haps_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_haps_defconfig$/
+snps_archs38_hsdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_hsdk_defconfig$/
+snps_archs38_vdk_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-snps_archs38_vdk_defconfig$/
+socrates_cyclone5_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-socrates_cyclone5_defconfig$/
+solidrun_clearfog_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_clearfog_defconfig$/
+solidrun_macchiatobin_mainline_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_mainline_defconfig$/
+solidrun_macchiatobin_marvell_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-solidrun_macchiatobin_marvell_defconfig$/
+stm32f429_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f429_disco_defconfig$/
+stm32f469_disco_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-stm32f469_disco_defconfig$/
+toradex_apalis_imx6_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-toradex_apalis_imx6_defconfig$/
+ts4800_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4800_defconfig$/
+ts4900_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts4900_defconfig$/
+ts5500_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts5500_defconfig$/
+ts7680_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-ts7680_defconfig$/
+wandboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-wandboard_defconfig$/
+warp7_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warp7_defconfig$/
+warpboard_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-warpboard_defconfig$/
+zynq_microzed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_microzed_defconfig$/
+zynq_zc706_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zc706_defconfig$/
+zynq_zed_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zed_defconfig$/
+zynq_zybo_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynq_zybo_defconfig$/
+zynqmp_zcu106_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-zynqmp_zcu106_defconfig$/
+tests.boot.test_atf.TestATFAllwinner:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFAllwinner$/
+tests.boot.test_atf.TestATFMarvell:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFMarvell$/
+tests.boot.test_atf.TestATFVexpress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.boot\.test_atf\.TestATFVexpress$/
+tests.core.test_file_capabilities.TestFileCapabilities:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_file_capabilities\.TestFileCapabilities$/
+tests.core.test_hardening.TestFortifyConserv:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyConserv$/
+tests.core.test_hardening.TestFortifyNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestFortifyNone$/
+tests.core.test_hardening.TestRelro:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelro$/
+tests.core.test_hardening.TestRelroPartial:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestRelroPartial$/
+tests.core.test_hardening.TestSspNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspNone$/
+tests.core.test_hardening.TestSspStrong:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_hardening\.TestSspStrong$/
+tests.core.test_post_scripts.TestPostScripts:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_post_scripts\.TestPostScripts$/
+tests.core.test_rootfs_overlay.TestRootfsOverlay:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_rootfs_overlay\.TestRootfsOverlay$/
+tests.core.test_timezone.TestGlibcAllTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcAllTimezone$/
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestGlibcNonDefaultLimitedTimezone$/
+tests.core.test_timezone.TestNoTimezone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.core\.test_timezone\.TestNoTimezone$/
+tests.fs.test_ext.TestExt2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2$/
+tests.fs.test_ext.TestExt2r1:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt2r1$/
+tests.fs.test_ext.TestExt3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt3$/
+tests.fs.test_ext.TestExt4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ext\.TestExt4$/
+tests.fs.test_f2fs.TestF2FS:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_f2fs\.TestF2FS$/
+tests.fs.test_iso9660.TestIso9660Grub2External:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2External$/
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2ExternalCompress$/
+tests.fs.test_iso9660.TestIso9660Grub2Internal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660Grub2Internal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternal$/
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxExternalCompress$/
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_iso9660\.TestIso9660SyslinuxInternal$/
+tests.fs.test_jffs2.TestJffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_jffs2\.TestJffs2$/
+tests.fs.test_squashfs.TestSquashfs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_squashfs\.TestSquashfs$/
+tests.fs.test_ubi.TestUbi:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_ubi\.TestUbi$/
+tests.fs.test_yaffs2.TestYaffs2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.fs\.test_yaffs2\.TestYaffs2$/
+tests.init.test_busybox.TestInitSystemBusyboxRo:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRo$/
+tests.init.test_busybox.TestInitSystemBusyboxRoNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRoNet$/
+tests.init.test_busybox.TestInitSystemBusyboxRw:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRw$/
+tests.init.test_busybox.TestInitSystemBusyboxRwNet:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_busybox\.TestInitSystemBusyboxRwNet$/
+tests.init.test_none.TestInitSystemNone:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_none\.TestInitSystemNone$/
+tests.init.test_systemd.TestInitSystemSystemdRoFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoFull$/
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRoNetworkd$/
+tests.init.test_systemd.TestInitSystemSystemdRwFull:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwFull$/
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwIfupdown$/
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.init\.test_systemd\.TestInitSystemSystemdRwNetworkd$/
+tests.package.test_dropbear.TestDropbear:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_dropbear\.TestDropbear$/
+tests.package.test_ipython.TestIPythonPy2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy2$/
+tests.package.test_ipython.TestIPythonPy3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_ipython\.TestIPythonPy3$/
+tests.package.test_lua.TestLua:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_lua\.TestLua$/
+tests.package.test_lua.TestLuajit:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_lua\.TestLuajit$/
+tests.package.test_perl.TestPerl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl\.TestPerl$/
+tests.package.test_perl_class_load.TestPerlClassLoad:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_class_load\.TestPerlClassLoad$/
+tests.package.test_perl_dbd_mysql.TestPerlDBDmysql:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_dbd_mysql\.TestPerlDBDmysql$/
+tests.package.test_perl_encode_detect.TestPerlEncodeDetect:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_encode_detect\.TestPerlEncodeDetect$/
+tests.package.test_perl_gdgraph.TestPerlGDGraph:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_gdgraph\.TestPerlGDGraph$/
+tests.package.test_perl_io_socket_multicast.TestPerlIOSocketMulticast:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_io_socket_multicast\.TestPerlIOSocketMulticast$/
+tests.package.test_perl_io_socket_ssl.TestPerlIOSocketSSL:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_io_socket_ssl\.TestPerlIOSocketSSL$/
+tests.package.test_perl_libwww_perl.TestPerllibwwwperl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_libwww_perl\.TestPerllibwwwperl$/
+tests.package.test_perl_mail_dkim.TestPerlMailDKIM:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_mail_dkim\.TestPerlMailDKIM$/
+tests.package.test_perl_x10.TestPerlX10:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_x10\.TestPerlX10$/
+tests.package.test_perl_xml_libxml.TestPerlXMLLibXML:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_perl_xml_libxml\.TestPerlXMLLibXML$/
+tests.package.test_prosody.TestProsodyLua51:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_prosody\.TestProsodyLua51$/
+tests.package.test_prosody.TestProsodyLuajit:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_prosody\.TestProsodyLuajit$/
+tests.package.test_python.TestPython2:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython2$/
+tests.package.test_python.TestPython3:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python\.TestPython3$/
+tests.package.test_python_argh.TestPythonPy2Argh:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_argh\.TestPythonPy2Argh$/
+tests.package.test_python_argh.TestPythonPy3Argh:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_argh\.TestPythonPy3Argh$/
+tests.package.test_python_attrs.TestPythonPy2Attrs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_attrs\.TestPythonPy2Attrs$/
+tests.package.test_python_attrs.TestPythonPy3Attrs:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_attrs\.TestPythonPy3Attrs$/
+tests.package.test_python_autobahn.TestPythonPy2Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy2Autobahn$/
+tests.package.test_python_autobahn.TestPythonPy3Autobahn:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_autobahn\.TestPythonPy3Autobahn$/
+tests.package.test_python_automat.TestPythonPy2Automat:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_automat\.TestPythonPy2Automat$/
+tests.package.test_python_automat.TestPythonPy3Automat:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_automat\.TestPythonPy3Automat$/
+tests.package.test_python_bitstring.TestPythonPy2Bitstring:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_bitstring\.TestPythonPy2Bitstring$/
+tests.package.test_python_bitstring.TestPythonPy3Bitstring:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_bitstring\.TestPythonPy3Bitstring$/
+tests.package.test_python_cbor.TestPythonPy2Cbor:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cbor\.TestPythonPy2Cbor$/
+tests.package.test_python_cbor.TestPythonPy3Cbor:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cbor\.TestPythonPy3Cbor$/
+tests.package.test_python_click.TestPythonPy2Click:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_click\.TestPythonPy2Click$/
+tests.package.test_python_click.TestPythonPy3Click:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_click\.TestPythonPy3Click$/
+tests.package.test_python_constantly.TestPythonPy2Constantly:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_constantly\.TestPythonPy2Constantly$/
+tests.package.test_python_constantly.TestPythonPy3Constantly:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_constantly\.TestPythonPy3Constantly$/
+tests.package.test_python_crossbar.TestPythonPy3Crossbar:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_crossbar\.TestPythonPy3Crossbar$/
+tests.package.test_python_cryptography.TestPythonPy2Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy2Cryptography$/
+tests.package.test_python_cryptography.TestPythonPy3Cryptography:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_cryptography\.TestPythonPy3Cryptography$/
+tests.package.test_python_incremental.TestPythonPy2Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy2Incremental$/
+tests.package.test_python_incremental.TestPythonPy3Incremental:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_incremental\.TestPythonPy3Incremental$/
+tests.package.test_python_passlib.TestPythonPy2Passlib:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_passlib\.TestPythonPy2Passlib$/
+tests.package.test_python_passlib.TestPythonPy3Passlib:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_passlib\.TestPythonPy3Passlib$/
+tests.package.test_python_pexpect.TestPythonPy2Pexpect:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pexpect\.TestPythonPy2Pexpect$/
+tests.package.test_python_pexpect.TestPythonPy3Pexpect:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pexpect\.TestPythonPy3Pexpect$/
+tests.package.test_python_pynacl.TestPythonPy2Pynacl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pynacl\.TestPythonPy2Pynacl$/
+tests.package.test_python_pynacl.TestPythonPy3Pynacl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pynacl\.TestPythonPy3Pynacl$/
+tests.package.test_python_pyyaml.TestPythonPy2Pyyaml:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pyyaml\.TestPythonPy2Pyyaml$/
+tests.package.test_python_pyyaml.TestPythonPy3Pyyaml:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_pyyaml\.TestPythonPy3Pyyaml$/
+tests.package.test_python_service_identity.TestPythonPy2ServiceIdentity:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_service_identity\.TestPythonPy2ServiceIdentity$/
+tests.package.test_python_service_identity.TestPythonPy3ServiceIdentity:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_service_identity\.TestPythonPy3ServiceIdentity$/
+tests.package.test_python_subprocess32.TestPythonPy2Subprocess32:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_subprocess32\.TestPythonPy2Subprocess32$/
+tests.package.test_python_treq.TestPythonPy2Treq:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_treq\.TestPythonPy2Treq$/
+tests.package.test_python_treq.TestPythonPy3Treq:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_treq\.TestPythonPy3Treq$/
+tests.package.test_python_twisted.TestPythonPy2Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy2Twisted$/
+tests.package.test_python_twisted.TestPythonPy3Twisted:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_twisted\.TestPythonPy3Twisted$/
+tests.package.test_python_txaio.TestPythonPy2Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy2Txaio$/
+tests.package.test_python_txaio.TestPythonPy3Txaio:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txaio\.TestPythonPy3Txaio$/
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy2Txtorcon$/
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_txtorcon\.TestPythonPy3Txtorcon$/
+tests.package.test_python_ubjson.TestPythonPy2Ubjson:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_ubjson\.TestPythonPy2Ubjson$/
+tests.package.test_python_ubjson.TestPythonPy3Ubjson:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_python_ubjson\.TestPythonPy3Ubjson$/
+tests.package.test_rust.TestRust:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRust$/
+tests.package.test_rust.TestRustBin:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_rust\.TestRustBin$/
+tests.package.test_syslog_ng.TestSyslogNg:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.package\.test_syslog_ng\.TestSyslogNg$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootMusl$/
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainBuildrootuClibc$/
+tests.toolchain.test_external.TestExternalToolchainCCache:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCCache$/
+tests.toolchain.test_external.TestExternalToolchainCtngMusl:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainCtngMusl$/
+tests.toolchain.test_external.TestExternalToolchainLinaroArm:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainLinaroArm$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv4$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv5$/
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests$/
+        - /-tests\.toolchain\.test_external\.TestExternalToolchainSourceryArmv7$/
.gitlab-ci.yml.in +2 -0
index d5eab91c70..97df3bafe9 100644
@@ -48,6 +48,7 @@ check-package:
 .defconfig: &defconfig
     # Running the defconfigs for every push is too much, so limit to
     # explicit triggers through the API.
+    # NOTE: support/scripts/generate-gitlab-ci-yml overrides this value.
     only:
         - triggers
         - tags
@@ -67,6 +68,7 @@ check-package:
 .runtime_test: &runtime_test
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
+    # NOTE: support/scripts/generate-gitlab-ci-yml overrides this value.
     only:
         - triggers
         - tags
support/scripts/generate-gitlab-ci-yml +24 -3
index 431911d370..5e3482a9f2 100755
@@ -10,8 +10,29 @@ cat "${input}"
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/'
+    | while read defconfig; do
+        cat <<EOF
+${defconfig}:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs\$/
+        - /-${defconfig}\$/
+EOF
+      done
 
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
-    | LC_ALL=C sort
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1/' \
+    | LC_ALL=C sort \
+    | while read runtest; do
+        cat <<EOF
+${runtest}:
+    <<: *runtime_test
+    only:
+        - triggers
+        - tags
+        - /-runtime-tests\$/
+        - /-${runtest//./\\.}\$/
+EOF
+      done
Signature · 1 line
2.17.1
#13 lore raw

PATCH v2 1/1 .gitlab-ci.yml: add trigger per job

Hi Ricardo,

First of all, I love this feature, so I would really like to see it applied.

However, I'm thinking if there could be an alternative way to do it...

.gitlab-ci.yml check-package: · line 94

Quoted 7 lines · Ricardo Martincoski
.gitlab-ci.yml +7 -0
+aarch64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-aarch64_efi_defconfig$/

Since we have a nice pattern with the branch name here, I think we could
instead rely on the branch name in the script and make a separate job for a single defconfig. Something like this:

build-one-defconfig:
only:
- /_defconfig$/
script:
... Use some sedded version of ${CI_BRANCH_NAME} ...

Of course, you'd want to refactor that with the existing defconfig_script so it needs a little more work...

Completely independent of this, it would also be nice if the .gitlab-ci could
be converted to use the "extends" keyword [1]. And also if the generated part could be "include"d [2]. New gitlab features which weren't available when we created this. With that in place, it might even be possible to do this in a pipeline, where the included part is generated in the first stage - but I'm not sure if gitlab-ci supports that.

Regards,
Arnout

[1] https://docs.gitlab.com/ee/ci/yaml/README.html#extends
[2] https://docs.gitlab.com/ee/ci/yaml/README.html#include

#14 lore raw

PATCH v2 1/1 .gitlab-ci.yml: add trigger per job

Hello,

On Fri, Jan 18, 2019 at 08:21 AM, Arnout Vandecappelle wrote:

[snip]

Quoted 14 lines · Ricardo Martincoski

.gitlab-ci.yml check-package: · line 94

Quoted 8 lines
.gitlab-ci.yml +7 -0
+aarch64_efi_defconfig:
+    <<: *defconfig
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+        - /-aarch64_efi_defconfig$/

Since we have a nice pattern with the branch name here, I think we could
instead rely on the branch name in the script and make a separate job for a single defconfig. Something like this:

Quoted 5 lines

build-one-defconfig:
only:
- /_defconfig$/
script:
... Use some sedded version of ${CI_BRANCH_NAME} ...

Using a separate job is a great idea. It would even allow to easily not run the check-* jobs when a single job is requested (something that Thomas suggested).

I will mark this patch as Changes Requested and resend.

Quoted 7 lines

Of course, you'd want to refactor that with the existing defconfig_script so it needs a little more work...

Completely independent of this, it would also be nice if the .gitlab-ci could
be converted to use the "extends" keyword [1]. And also if the generated part

Sure. We can use "extends" instead of YAML anchors. It will make the .yml file more readable and allow us...

Quoted 1 line

could be "include"d [2]. New gitlab features which weren't available when we

... to use "include" and avoid copying all the contents from .gitlab-ci.yml.in. But ...

Quoted 3 lines

created this. With that in place, it might even be possible to do this in a pipeline, where the included part is generated in the first stage - but I'm not sure if gitlab-ci supports that.

... no. Gitlab CI does not support generating .gitlab-ci.yml dynamically yet. Let's hope this issue gets fixed:
https://gitlab.com/gitlab-org/gitlab-ce/issues/45828
There is already a prototype (I did not tested it):
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22219

Regards,
Ricardo

#15 lore raw

v3 cover .gitlab-ci.yml: rework and add trigger per job

In reply to Ricardo Martincoski

Hello,

Beside the current subsets of jobs that can be triggered by pushing temporary branches with special names:
- all defconfigs: /.*-defconfigs$/
- all runtime tests: /.*-runtime-tests$/
This series allows the user of GitLab pipeline to trigger some interesting subsets of jobs by pushing temporary branches with names that match regexps:
- one defconfig: /.*-defconfig_name$/
- one test case: /.*-test_case_name$/
Pushing a tag still triggers all jobs.
Using an API token still triggers all jobs.

Patches 1 to 3 rework .gitlab-ci.yml to make maintenance easier:
- do not copy anymore the content of the template into .gitlab-ci.yml, use instead the new keywords "extends" and "include";
- reorder the template so similar keys stay together;
Patch 4 could be merged to patch 5, but for the sake of easier review/testing I had split them.
Patches 1 to 4 do not change any functionality.

Finally patch 5 actually adds the per defconfig and per runtime test triggers.

Regards,
Ricardo

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

Ricardo Martincoski (5):
.gitlab-ci.yml: use "extends" keyword
.gitlab-ci.yml: use "include" keyword
.gitlab-ci.yml: reorder jobs
.gitlab-ci.yml: prepare to reuse scripts
.gitlab-ci.yml: add trigger per job

 .gitlab-ci.yml.in => .gitlab-ci-template.yml |  94 ++-
 .gitlab-ci.yml                               | 703 ++++++++-----------
 Makefile                                     |   4 +-
 support/scripts/generate-gitlab-ci-yml       |  13 +-
 4 files changed, 384 insertions(+), 430 deletions(-)
 rename .gitlab-ci.yml.in => .gitlab-ci-template.yml (60%)
Signature · 1 line
2.17.1
#16 lore raw

PATCH v3 1/5 .gitlab-ci.yml: use "extends" keyword

Replace all YAML anchors with the new "extends" keyword because it is more readable and more flexible (it works across configuration files combined with the new "include" keyword).

Readability is more meaningful in .gitlab-ci.yml.in.
In the part of .gitlab-ci.yml that is auto-generated by 'make .gitlab-ci.yml' keep the keyword in the same line of the job name. So instead of this:
zynqmp_zcu106_defconfig:
extends: .defconfig
tests.boot.test_atf.TestATFAllwinner:
extends: .runtime_test
Use this:
zynqmp_zcu106_defconfig: { extends: .defconfig } tests.boot.test_atf.TestATFAllwinner: { extends: .runtime_test }
Do this to to keep .gitlab-ci.yml easier to be post-processed by a script.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v2 -> v3:
- new patch (suggested by Arnout, not necessarily to be implemented in this series, but since it makes the maintenance of the .yml files easier I already did);

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44071446
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44071594
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44071585
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44071620

---
 .gitlab-ci.yml                         | 641 +++++++++++++------------
 .gitlab-ci.yml.in                      |  27 +-
 support/scripts/generate-gitlab-ci-yml |   4 +-
 3 files changed, 337 insertions(+), 335 deletions(-)
.gitlab-ci.yml +321 -320
index 79daebf160..a8209d76e6 100644
@@ -6,16 +6,17 @@
 
 image: buildroot/base:20180318.1724
 
-.defconfig_script: &defconfig_script
-    - echo 'Configure Buildroot'
-    - make ${CI_JOB_NAME}
-    - echo 'Build buildroot'
-    - |
-        make > >(tee build.log |grep '>>>') 2>&1 || {
-            echo 'Failed build last output'
-            tail -200 build.log
-            exit 1
-        }
+.defconfig_script:
+    script:
+        - echo 'Configure Buildroot'
+        - make ${CI_JOB_NAME}
+        - echo 'Build buildroot'
+        - |
+            make > >(tee build.log |grep '>>>') 2>&1 || {
+                echo 'Failed build last output'
+                tail -200 build.log
+                exit 1
+            }
 
 check-gitlab-ci.yml:
     script:
@@ -45,14 +46,14 @@ check-package:
     script:
         - make check-package
 
-.defconfig: &defconfig
+.defconfig:
+    extends: .defconfig_script
     # Running the defconfigs for every push is too much, so limit to
     # explicit triggers through the API.
     only:
         - triggers
         - tags
         - /-defconfigs$/
-    script: *defconfig_script
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -64,7 +65,7 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
-.runtime_test: &runtime_test
+.runtime_test:
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
@@ -83,310 +84,310 @@ check-package:
             - test-output/*.log
             - test-output/*/.config
             - test-output/*/images/*
-aarch64_efi_defconfig: *defconfig
-acmesystems_aria_g25_128mb_defconfig: *defconfig
-acmesystems_aria_g25_256mb_defconfig: *defconfig
-acmesystems_arietta_g25_128mb_defconfig: *defconfig
-acmesystems_arietta_g25_256mb_defconfig: *defconfig
-amarula_a64_relic_defconfig: *defconfig
-amarula_vyasa_rk3288_defconfig: *defconfig
-arcturus_ucls1012a_defconfig: *defconfig
-arcturus_ucp1020_defconfig: *defconfig
-arm_foundationv8_defconfig: *defconfig
-arm_juno_defconfig: *defconfig
-armadeus_apf27_defconfig: *defconfig
-armadeus_apf28_defconfig: *defconfig
-armadeus_apf51_defconfig: *defconfig
-asus_tinker_rk3288_defconfig: *defconfig
-at91sam9260eknf_defconfig: *defconfig
-at91sam9g20dfc_defconfig: *defconfig
-at91sam9g45m10ek_defconfig: *defconfig
-at91sam9rlek_defconfig: *defconfig
-at91sam9x5ek_defconfig: *defconfig
-at91sam9x5ek_dev_defconfig: *defconfig
-at91sam9x5ek_mmc_defconfig: *defconfig
-at91sam9x5ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_defconfig: *defconfig
-atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_defconfig: *defconfig
-atmel_sama5d3_xplained_dev_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_defconfig: *defconfig
-atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig
-atmel_sama5d3xek_defconfig: *defconfig
-atmel_sama5d4_xplained_defconfig: *defconfig
-atmel_sama5d4_xplained_dev_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_defconfig: *defconfig
-atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig
-bananapi_m1_defconfig: *defconfig
-bananapi_m2_plus_defconfig: *defconfig
-bananapi_m2_ultra_defconfig: *defconfig
-bananapi_m64_defconfig: *defconfig
-bananapro_defconfig: *defconfig
-beagleboardx15_defconfig: *defconfig
-beaglebone_defconfig: *defconfig
-beaglebone_qt5_defconfig: *defconfig
-chromebook_snow_defconfig: *defconfig
-ci20_defconfig: *defconfig
-csky_gx6605s_defconfig: *defconfig
-cubieboard2_defconfig: *defconfig
-engicam_imx6qdl_icore_defconfig: *defconfig
-engicam_imx6qdl_icore_qt5_defconfig: *defconfig
-engicam_imx6qdl_icore_rqs_defconfig: *defconfig
-engicam_imx6ul_geam_defconfig: *defconfig
-engicam_imx6ul_isiot_defconfig: *defconfig
-freescale_imx28evk_defconfig: *defconfig
-freescale_imx6dlsabreauto_defconfig: *defconfig
-freescale_imx6dlsabresd_defconfig: *defconfig
-freescale_imx6qsabreauto_defconfig: *defconfig
-freescale_imx6qsabresd_defconfig: *defconfig
-freescale_imx6sxsabresd_defconfig: *defconfig
-freescale_imx7dsabresd_defconfig: *defconfig
-freescale_imx8mqevk_defconfig: *defconfig
-freescale_p1025twr_defconfig: *defconfig
-freescale_t1040d4rdb_defconfig: *defconfig
-friendlyarm_nanopi_a64_defconfig: *defconfig
-friendlyarm_nanopi_neo2_defconfig: *defconfig
-galileo_defconfig: *defconfig
-grinn_chiliboard_defconfig: *defconfig
-grinn_liteboard_defconfig: *defconfig
-imx23evk_defconfig: *defconfig
-imx6-sabreauto_defconfig: *defconfig
-imx6-sabresd_defconfig: *defconfig
-imx6-sabresd_qt5_defconfig: *defconfig
-imx6slevk_defconfig: *defconfig
-imx6sx-sdb_defconfig: *defconfig
-imx6ulevk_defconfig: *defconfig
-imx6ulpico_defconfig: *defconfig
-imx7d-sdb_defconfig: *defconfig
-imx7dpico_defconfig: *defconfig
-lego_ev3_defconfig: *defconfig
-linksprite_pcduino_defconfig: *defconfig
-minnowboard_max-graphical_defconfig: *defconfig
-minnowboard_max_defconfig: *defconfig
-mx25pdk_defconfig: *defconfig
-mx51evk_defconfig: *defconfig
-mx53loco_defconfig: *defconfig
-mx6cubox_defconfig: *defconfig
-mx6sx_udoo_neo_defconfig: *defconfig
-mx6udoo_defconfig: *defconfig
-nanopi_m1_defconfig: *defconfig
-nanopi_m1_plus_defconfig: *defconfig
-nanopi_neo_defconfig: *defconfig
-nexbox_a95x_defconfig: *defconfig
-nitrogen6sx_defconfig: *defconfig
-nitrogen6x_defconfig: *defconfig
-nitrogen7_defconfig: *defconfig
-nitrogen8m_defconfig: *defconfig
-odroidc2_defconfig: *defconfig
-odroidxu4_defconfig: *defconfig
-olimex_a10_olinuxino_lime_defconfig: *defconfig
-olimex_a13_olinuxino_defconfig: *defconfig
-olimex_a20_olinuxino_lime2_defconfig: *defconfig
-olimex_a20_olinuxino_lime_defconfig: *defconfig
-olimex_a20_olinuxino_lime_legacy_defconfig: *defconfig
-olimex_a20_olinuxino_micro_defconfig: *defconfig
-olimex_a64_olinuxino_defconfig: *defconfig
-olimex_imx233_olinuxino_defconfig: *defconfig
-openblocks_a6_defconfig: *defconfig
-orangepi_lite2_defconfig: *defconfig
-orangepi_lite_defconfig: *defconfig
-orangepi_one_defconfig: *defconfig
-orangepi_one_plus_defconfig: *defconfig
-orangepi_pc2_defconfig: *defconfig
-orangepi_pc_defconfig: *defconfig
-orangepi_pc_plus_defconfig: *defconfig
-orangepi_plus_defconfig: *defconfig
-orangepi_prime_defconfig: *defconfig
-orangepi_win_defconfig: *defconfig
-orangepi_zero_defconfig: *defconfig
-orangepi_zero_plus2_defconfig: *defconfig
-pandaboard_defconfig: *defconfig
-pc_x86_64_bios_defconfig: *defconfig
-pc_x86_64_efi_defconfig: *defconfig
-pine64_defconfig: *defconfig
-pine64_sopine_defconfig: *defconfig
-qemu_aarch64_virt_defconfig: *defconfig
-qemu_arm_versatile_defconfig: *defconfig
-qemu_arm_versatile_nommu_defconfig: *defconfig
-qemu_arm_vexpress_defconfig: *defconfig
-qemu_m68k_mcf5208_defconfig: *defconfig
-qemu_m68k_q800_defconfig: *defconfig
-qemu_microblazebe_mmu_defconfig: *defconfig
-qemu_microblazeel_mmu_defconfig: *defconfig
-qemu_mips32r2_malta_defconfig: *defconfig
-qemu_mips32r2el_malta_defconfig: *defconfig
-qemu_mips32r6_malta_defconfig: *defconfig
-qemu_mips32r6el_malta_defconfig: *defconfig
-qemu_mips64_malta_defconfig: *defconfig
-qemu_mips64el_malta_defconfig: *defconfig
-qemu_mips64r6_malta_defconfig: *defconfig
-qemu_mips64r6el_malta_defconfig: *defconfig
-qemu_nios2_10m50_defconfig: *defconfig
-qemu_or1k_defconfig: *defconfig
-qemu_ppc64_e5500_defconfig: *defconfig
-qemu_ppc64_pseries_defconfig: *defconfig
-qemu_ppc64le_pseries_defconfig: *defconfig
-qemu_ppc_g3beige_defconfig: *defconfig
-qemu_ppc_mpc8544ds_defconfig: *defconfig
-qemu_ppc_virtex_ml507_defconfig: *defconfig
-qemu_riscv32_virt_defconfig: *defconfig
-qemu_riscv64_virt_defconfig: *defconfig
-qemu_sh4_r2d_defconfig: *defconfig
-qemu_sh4eb_r2d_defconfig: *defconfig
-qemu_sparc64_sun4u_defconfig: *defconfig
-qemu_sparc_ss10_defconfig: *defconfig
-qemu_x86_64_defconfig: *defconfig
-qemu_x86_defconfig: *defconfig
-qemu_xtensa_lx60_defconfig: *defconfig
-qemu_xtensa_lx60_nommu_defconfig: *defconfig
-raspberrypi0_defconfig: *defconfig
-raspberrypi0w_defconfig: *defconfig
-raspberrypi2_defconfig: *defconfig
-raspberrypi3_64_defconfig: *defconfig
-raspberrypi3_defconfig: *defconfig
-raspberrypi3_qt5we_defconfig: *defconfig
-raspberrypi_defconfig: *defconfig
-riotboard_defconfig: *defconfig
-roseapplepi_defconfig: *defconfig
-s6lx9_microboard_defconfig: *defconfig
-sheevaplug_defconfig: *defconfig
-snps_aarch64_vdk_defconfig: *defconfig
-snps_arc700_axs101_defconfig: *defconfig
-snps_archs38_axs103_defconfig: *defconfig
-snps_archs38_haps_defconfig: *defconfig
-snps_archs38_hsdk_defconfig: *defconfig
-snps_archs38_vdk_defconfig: *defconfig
-socrates_cyclone5_defconfig: *defconfig
-solidrun_clearfog_defconfig: *defconfig
-solidrun_macchiatobin_mainline_defconfig: *defconfig
-solidrun_macchiatobin_marvell_defconfig: *defconfig
-stm32f429_disco_defconfig: *defconfig
-stm32f469_disco_defconfig: *defconfig
-toradex_apalis_imx6_defconfig: *defconfig
-ts4800_defconfig: *defconfig
-ts4900_defconfig: *defconfig
-ts5500_defconfig: *defconfig
-ts7680_defconfig: *defconfig
-wandboard_defconfig: *defconfig
-warp7_defconfig: *defconfig
-warpboard_defconfig: *defconfig
-zynq_microzed_defconfig: *defconfig
-zynq_zc706_defconfig: *defconfig
-zynq_zed_defconfig: *defconfig
-zynq_zybo_defconfig: *defconfig
-zynqmp_zcu106_defconfig: *defconfig
-tests.boot.test_atf.TestATFAllwinner: *runtime_test
-tests.boot.test_atf.TestATFMarvell: *runtime_test
-tests.boot.test_atf.TestATFVexpress: *runtime_test
-tests.core.test_file_capabilities.TestFileCapabilities: *runtime_test
-tests.core.test_hardening.TestFortifyConserv: *runtime_test
-tests.core.test_hardening.TestFortifyNone: *runtime_test
-tests.core.test_hardening.TestRelro: *runtime_test
-tests.core.test_hardening.TestRelroPartial: *runtime_test
-tests.core.test_hardening.TestSspNone: *runtime_test
-tests.core.test_hardening.TestSspStrong: *runtime_test
-tests.core.test_post_scripts.TestPostScripts: *runtime_test
-tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test
-tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test
-tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test
-tests.core.test_timezone.TestNoTimezone: *runtime_test
-tests.fs.test_ext.TestExt2: *runtime_test
-tests.fs.test_ext.TestExt2r1: *runtime_test
-tests.fs.test_ext.TestExt3: *runtime_test
-tests.fs.test_ext.TestExt4: *runtime_test
-tests.fs.test_f2fs.TestF2FS: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test
-tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test
-tests.fs.test_jffs2.TestJffs2: *runtime_test
-tests.fs.test_squashfs.TestSquashfs: *runtime_test
-tests.fs.test_ubi.TestUbi: *runtime_test
-tests.fs.test_yaffs2.TestYaffs2: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test
-tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test
-tests.init.test_none.TestInitSystemNone: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test
-tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test
-tests.package.test_dropbear.TestDropbear: *runtime_test
-tests.package.test_ipython.TestIPythonPy2: *runtime_test
-tests.package.test_ipython.TestIPythonPy3: *runtime_test
-tests.package.test_lua.TestLua: *runtime_test
-tests.package.test_lua.TestLuajit: *runtime_test
-tests.package.test_perl.TestPerl: *runtime_test
-tests.package.test_perl_class_load.TestPerlClassLoad: *runtime_test
-tests.package.test_perl_dbd_mysql.TestPerlDBDmysql: *runtime_test
-tests.package.test_perl_encode_detect.TestPerlEncodeDetect: *runtime_test
-tests.package.test_perl_gdgraph.TestPerlGDGraph: *runtime_test
-tests.package.test_perl_io_socket_multicast.TestPerlIOSocketMulticast: *runtime_test
-tests.package.test_perl_io_socket_ssl.TestPerlIOSocketSSL: *runtime_test
-tests.package.test_perl_libwww_perl.TestPerllibwwwperl: *runtime_test
-tests.package.test_perl_mail_dkim.TestPerlMailDKIM: *runtime_test
-tests.package.test_perl_x10.TestPerlX10: *runtime_test
-tests.package.test_perl_xml_libxml.TestPerlXMLLibXML: *runtime_test
-tests.package.test_prosody.TestProsodyLua51: *runtime_test
-tests.package.test_prosody.TestProsodyLuajit: *runtime_test
-tests.package.test_python.TestPython2: *runtime_test
-tests.package.test_python.TestPython3: *runtime_test
-tests.package.test_python_argh.TestPythonPy2Argh: *runtime_test
-tests.package.test_python_argh.TestPythonPy3Argh: *runtime_test
-tests.package.test_python_attrs.TestPythonPy2Attrs: *runtime_test
-tests.package.test_python_attrs.TestPythonPy3Attrs: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy2Autobahn: *runtime_test
-tests.package.test_python_autobahn.TestPythonPy3Autobahn: *runtime_test
-tests.package.test_python_automat.TestPythonPy2Automat: *runtime_test
-tests.package.test_python_automat.TestPythonPy3Automat: *runtime_test
-tests.package.test_python_bitstring.TestPythonPy2Bitstring: *runtime_test
-tests.package.test_python_bitstring.TestPythonPy3Bitstring: *runtime_test
-tests.package.test_python_cbor.TestPythonPy2Cbor: *runtime_test
-tests.package.test_python_cbor.TestPythonPy3Cbor: *runtime_test
-tests.package.test_python_click.TestPythonPy2Click: *runtime_test
-tests.package.test_python_click.TestPythonPy3Click: *runtime_test
-tests.package.test_python_constantly.TestPythonPy2Constantly: *runtime_test
-tests.package.test_python_constantly.TestPythonPy3Constantly: *runtime_test
-tests.package.test_python_crossbar.TestPythonPy3Crossbar: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
-tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
-tests.package.test_python_incremental.TestPythonPy2Incremental: *runtime_test
-tests.package.test_python_incremental.TestPythonPy3Incremental: *runtime_test
-tests.package.test_python_passlib.TestPythonPy2Passlib: *runtime_test
-tests.package.test_python_passlib.TestPythonPy3Passlib: *runtime_test
-tests.package.test_python_pexpect.TestPythonPy2Pexpect: *runtime_test
-tests.package.test_python_pexpect.TestPythonPy3Pexpect: *runtime_test
-tests.package.test_python_pynacl.TestPythonPy2Pynacl: *runtime_test
-tests.package.test_python_pynacl.TestPythonPy3Pynacl: *runtime_test
-tests.package.test_python_pyyaml.TestPythonPy2Pyyaml: *runtime_test
-tests.package.test_python_pyyaml.TestPythonPy3Pyyaml: *runtime_test
-tests.package.test_python_service_identity.TestPythonPy2ServiceIdentity: *runtime_test
-tests.package.test_python_service_identity.TestPythonPy3ServiceIdentity: *runtime_test
-tests.package.test_python_subprocess32.TestPythonPy2Subprocess32: *runtime_test
-tests.package.test_python_treq.TestPythonPy2Treq: *runtime_test
-tests.package.test_python_treq.TestPythonPy3Treq: *runtime_test
-tests.package.test_python_twisted.TestPythonPy2Twisted: *runtime_test
-tests.package.test_python_twisted.TestPythonPy3Twisted: *runtime_test
-tests.package.test_python_txaio.TestPythonPy2Txaio: *runtime_test
-tests.package.test_python_txaio.TestPythonPy3Txaio: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: *runtime_test
-tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: *runtime_test
-tests.package.test_python_ubjson.TestPythonPy2Ubjson: *runtime_test
-tests.package.test_python_ubjson.TestPythonPy3Ubjson: *runtime_test
-tests.package.test_rust.TestRust: *runtime_test
-tests.package.test_rust.TestRustBin: *runtime_test
-tests.package.test_syslog_ng.TestSyslogNg: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test
-tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test
+aarch64_efi_defconfig: { extends: .defconfig }
+acmesystems_aria_g25_128mb_defconfig: { extends: .defconfig }
+acmesystems_aria_g25_256mb_defconfig: { extends: .defconfig }
+acmesystems_arietta_g25_128mb_defconfig: { extends: .defconfig }
+acmesystems_arietta_g25_256mb_defconfig: { extends: .defconfig }
+amarula_a64_relic_defconfig: { extends: .defconfig }
+amarula_vyasa_rk3288_defconfig: { extends: .defconfig }
+arcturus_ucls1012a_defconfig: { extends: .defconfig }
+arcturus_ucp1020_defconfig: { extends: .defconfig }
+arm_foundationv8_defconfig: { extends: .defconfig }
+arm_juno_defconfig: { extends: .defconfig }
+armadeus_apf27_defconfig: { extends: .defconfig }
+armadeus_apf28_defconfig: { extends: .defconfig }
+armadeus_apf51_defconfig: { extends: .defconfig }
+asus_tinker_rk3288_defconfig: { extends: .defconfig }
+at91sam9260eknf_defconfig: { extends: .defconfig }
+at91sam9g20dfc_defconfig: { extends: .defconfig }
+at91sam9g45m10ek_defconfig: { extends: .defconfig }
+at91sam9rlek_defconfig: { extends: .defconfig }
+at91sam9x5ek_defconfig: { extends: .defconfig }
+at91sam9x5ek_dev_defconfig: { extends: .defconfig }
+at91sam9x5ek_mmc_defconfig: { extends: .defconfig }
+at91sam9x5ek_mmc_dev_defconfig: { extends: .defconfig }
+atmel_sama5d27_som1_ek_mmc_dev_defconfig: { extends: .defconfig }
+atmel_sama5d2_xplained_mmc_defconfig: { extends: .defconfig }
+atmel_sama5d2_xplained_mmc_dev_defconfig: { extends: .defconfig }
+atmel_sama5d3_xplained_defconfig: { extends: .defconfig }
+atmel_sama5d3_xplained_dev_defconfig: { extends: .defconfig }
+atmel_sama5d3_xplained_mmc_defconfig: { extends: .defconfig }
+atmel_sama5d3_xplained_mmc_dev_defconfig: { extends: .defconfig }
+atmel_sama5d3xek_defconfig: { extends: .defconfig }
+atmel_sama5d4_xplained_defconfig: { extends: .defconfig }
+atmel_sama5d4_xplained_dev_defconfig: { extends: .defconfig }
+atmel_sama5d4_xplained_mmc_defconfig: { extends: .defconfig }
+atmel_sama5d4_xplained_mmc_dev_defconfig: { extends: .defconfig }
+bananapi_m1_defconfig: { extends: .defconfig }
+bananapi_m2_plus_defconfig: { extends: .defconfig }
+bananapi_m2_ultra_defconfig: { extends: .defconfig }
+bananapi_m64_defconfig: { extends: .defconfig }
+bananapro_defconfig: { extends: .defconfig }
+beagleboardx15_defconfig: { extends: .defconfig }
+beaglebone_defconfig: { extends: .defconfig }
+beaglebone_qt5_defconfig: { extends: .defconfig }
+chromebook_snow_defconfig: { extends: .defconfig }
+ci20_defconfig: { extends: .defconfig }
+csky_gx6605s_defconfig: { extends: .defconfig }
+cubieboard2_defconfig: { extends: .defconfig }
+engicam_imx6qdl_icore_defconfig: { extends: .defconfig }
+engicam_imx6qdl_icore_qt5_defconfig: { extends: .defconfig }
+engicam_imx6qdl_icore_rqs_defconfig: { extends: .defconfig }
+engicam_imx6ul_geam_defconfig: { extends: .defconfig }
+engicam_imx6ul_isiot_defconfig: { extends: .defconfig }
+freescale_imx28evk_defconfig: { extends: .defconfig }
+freescale_imx6dlsabreauto_defconfig: { extends: .defconfig }
+freescale_imx6dlsabresd_defconfig: { extends: .defconfig }
+freescale_imx6qsabreauto_defconfig: { extends: .defconfig }
+freescale_imx6qsabresd_defconfig: { extends: .defconfig }
+freescale_imx6sxsabresd_defconfig: { extends: .defconfig }
+freescale_imx7dsabresd_defconfig: { extends: .defconfig }
+freescale_imx8mqevk_defconfig: { extends: .defconfig }
+freescale_p1025twr_defconfig: { extends: .defconfig }
+freescale_t1040d4rdb_defconfig: { extends: .defconfig }
+friendlyarm_nanopi_a64_defconfig: { extends: .defconfig }
+friendlyarm_nanopi_neo2_defconfig: { extends: .defconfig }
+galileo_defconfig: { extends: .defconfig }
+grinn_chiliboard_defconfig: { extends: .defconfig }
+grinn_liteboard_defconfig: { extends: .defconfig }
+imx23evk_defconfig: { extends: .defconfig }
+imx6-sabreauto_defconfig: { extends: .defconfig }
+imx6-sabresd_defconfig: { extends: .defconfig }
+imx6-sabresd_qt5_defconfig: { extends: .defconfig }
+imx6slevk_defconfig: { extends: .defconfig }
+imx6sx-sdb_defconfig: { extends: .defconfig }
+imx6ulevk_defconfig: { extends: .defconfig }
+imx6ulpico_defconfig: { extends: .defconfig }
+imx7d-sdb_defconfig: { extends: .defconfig }
+imx7dpico_defconfig: { extends: .defconfig }
+lego_ev3_defconfig: { extends: .defconfig }
+linksprite_pcduino_defconfig: { extends: .defconfig }
+minnowboard_max-graphical_defconfig: { extends: .defconfig }
+minnowboard_max_defconfig: { extends: .defconfig }
+mx25pdk_defconfig: { extends: .defconfig }
+mx51evk_defconfig: { extends: .defconfig }
+mx53loco_defconfig: { extends: .defconfig }
+mx6cubox_defconfig: { extends: .defconfig }
+mx6sx_udoo_neo_defconfig: { extends: .defconfig }
+mx6udoo_defconfig: { extends: .defconfig }
+nanopi_m1_defconfig: { extends: .defconfig }
+nanopi_m1_plus_defconfig: { extends: .defconfig }
+nanopi_neo_defconfig: { extends: .defconfig }
+nexbox_a95x_defconfig: { extends: .defconfig }
+nitrogen6sx_defconfig: { extends: .defconfig }
+nitrogen6x_defconfig: { extends: .defconfig }
+nitrogen7_defconfig: { extends: .defconfig }
+nitrogen8m_defconfig: { extends: .defconfig }
+odroidc2_defconfig: { extends: .defconfig }
+odroidxu4_defconfig: { extends: .defconfig }
+olimex_a10_olinuxino_lime_defconfig: { extends: .defconfig }
+olimex_a13_olinuxino_defconfig: { extends: .defconfig }
+olimex_a20_olinuxino_lime2_defconfig: { extends: .defconfig }
+olimex_a20_olinuxino_lime_defconfig: { extends: .defconfig }
+olimex_a20_olinuxino_lime_legacy_defconfig: { extends: .defconfig }
+olimex_a20_olinuxino_micro_defconfig: { extends: .defconfig }
+olimex_a64_olinuxino_defconfig: { extends: .defconfig }
+olimex_imx233_olinuxino_defconfig: { extends: .defconfig }
+openblocks_a6_defconfig: { extends: .defconfig }
+orangepi_lite2_defconfig: { extends: .defconfig }
+orangepi_lite_defconfig: { extends: .defconfig }
+orangepi_one_defconfig: { extends: .defconfig }
+orangepi_one_plus_defconfig: { extends: .defconfig }
+orangepi_pc2_defconfig: { extends: .defconfig }
+orangepi_pc_defconfig: { extends: .defconfig }
+orangepi_pc_plus_defconfig: { extends: .defconfig }
+orangepi_plus_defconfig: { extends: .defconfig }
+orangepi_prime_defconfig: { extends: .defconfig }
+orangepi_win_defconfig: { extends: .defconfig }
+orangepi_zero_defconfig: { extends: .defconfig }
+orangepi_zero_plus2_defconfig: { extends: .defconfig }
+pandaboard_defconfig: { extends: .defconfig }
+pc_x86_64_bios_defconfig: { extends: .defconfig }
+pc_x86_64_efi_defconfig: { extends: .defconfig }
+pine64_defconfig: { extends: .defconfig }
+pine64_sopine_defconfig: { extends: .defconfig }
+qemu_aarch64_virt_defconfig: { extends: .defconfig }
+qemu_arm_versatile_defconfig: { extends: .defconfig }
+qemu_arm_versatile_nommu_defconfig: { extends: .defconfig }
+qemu_arm_vexpress_defconfig: { extends: .defconfig }
+qemu_m68k_mcf5208_defconfig: { extends: .defconfig }
+qemu_m68k_q800_defconfig: { extends: .defconfig }
+qemu_microblazebe_mmu_defconfig: { extends: .defconfig }
+qemu_microblazeel_mmu_defconfig: { extends: .defconfig }
+qemu_mips32r2_malta_defconfig: { extends: .defconfig }
+qemu_mips32r2el_malta_defconfig: { extends: .defconfig }
+qemu_mips32r6_malta_defconfig: { extends: .defconfig }
+qemu_mips32r6el_malta_defconfig: { extends: .defconfig }
+qemu_mips64_malta_defconfig: { extends: .defconfig }
+qemu_mips64el_malta_defconfig: { extends: .defconfig }
+qemu_mips64r6_malta_defconfig: { extends: .defconfig }
+qemu_mips64r6el_malta_defconfig: { extends: .defconfig }
+qemu_nios2_10m50_defconfig: { extends: .defconfig }
+qemu_or1k_defconfig: { extends: .defconfig }
+qemu_ppc64_e5500_defconfig: { extends: .defconfig }
+qemu_ppc64_pseries_defconfig: { extends: .defconfig }
+qemu_ppc64le_pseries_defconfig: { extends: .defconfig }
+qemu_ppc_g3beige_defconfig: { extends: .defconfig }
+qemu_ppc_mpc8544ds_defconfig: { extends: .defconfig }
+qemu_ppc_virtex_ml507_defconfig: { extends: .defconfig }
+qemu_riscv32_virt_defconfig: { extends: .defconfig }
+qemu_riscv64_virt_defconfig: { extends: .defconfig }
+qemu_sh4_r2d_defconfig: { extends: .defconfig }
+qemu_sh4eb_r2d_defconfig: { extends: .defconfig }
+qemu_sparc64_sun4u_defconfig: { extends: .defconfig }
+qemu_sparc_ss10_defconfig: { extends: .defconfig }
+qemu_x86_64_defconfig: { extends: .defconfig }
+qemu_x86_defconfig: { extends: .defconfig }
+qemu_xtensa_lx60_defconfig: { extends: .defconfig }
+qemu_xtensa_lx60_nommu_defconfig: { extends: .defconfig }
+raspberrypi0_defconfig: { extends: .defconfig }
+raspberrypi0w_defconfig: { extends: .defconfig }
+raspberrypi2_defconfig: { extends: .defconfig }
+raspberrypi3_64_defconfig: { extends: .defconfig }
+raspberrypi3_defconfig: { extends: .defconfig }
+raspberrypi3_qt5we_defconfig: { extends: .defconfig }
+raspberrypi_defconfig: { extends: .defconfig }
+riotboard_defconfig: { extends: .defconfig }
+roseapplepi_defconfig: { extends: .defconfig }
+s6lx9_microboard_defconfig: { extends: .defconfig }
+sheevaplug_defconfig: { extends: .defconfig }
+snps_aarch64_vdk_defconfig: { extends: .defconfig }
+snps_arc700_axs101_defconfig: { extends: .defconfig }
+snps_archs38_axs103_defconfig: { extends: .defconfig }
+snps_archs38_haps_defconfig: { extends: .defconfig }
+snps_archs38_hsdk_defconfig: { extends: .defconfig }
+snps_archs38_vdk_defconfig: { extends: .defconfig }
+socrates_cyclone5_defconfig: { extends: .defconfig }
+solidrun_clearfog_defconfig: { extends: .defconfig }
+solidrun_macchiatobin_mainline_defconfig: { extends: .defconfig }
+solidrun_macchiatobin_marvell_defconfig: { extends: .defconfig }
+stm32f429_disco_defconfig: { extends: .defconfig }
+stm32f469_disco_defconfig: { extends: .defconfig }
+toradex_apalis_imx6_defconfig: { extends: .defconfig }
+ts4800_defconfig: { extends: .defconfig }
+ts4900_defconfig: { extends: .defconfig }
+ts5500_defconfig: { extends: .defconfig }
+ts7680_defconfig: { extends: .defconfig }
+wandboard_defconfig: { extends: .defconfig }
+warp7_defconfig: { extends: .defconfig }
+warpboard_defconfig: { extends: .defconfig }
+zynq_microzed_defconfig: { extends: .defconfig }
+zynq_zc706_defconfig: { extends: .defconfig }
+zynq_zed_defconfig: { extends: .defconfig }
+zynq_zybo_defconfig: { extends: .defconfig }
+zynqmp_zcu106_defconfig: { extends: .defconfig }
+tests.boot.test_atf.TestATFAllwinner: { extends: .runtime_test }
+tests.boot.test_atf.TestATFMarvell: { extends: .runtime_test }
+tests.boot.test_atf.TestATFVexpress: { extends: .runtime_test }
+tests.core.test_file_capabilities.TestFileCapabilities: { extends: .runtime_test }
+tests.core.test_hardening.TestFortifyConserv: { extends: .runtime_test }
+tests.core.test_hardening.TestFortifyNone: { extends: .runtime_test }
+tests.core.test_hardening.TestRelro: { extends: .runtime_test }
+tests.core.test_hardening.TestRelroPartial: { extends: .runtime_test }
+tests.core.test_hardening.TestSspNone: { extends: .runtime_test }
+tests.core.test_hardening.TestSspStrong: { extends: .runtime_test }
+tests.core.test_post_scripts.TestPostScripts: { extends: .runtime_test }
+tests.core.test_rootfs_overlay.TestRootfsOverlay: { extends: .runtime_test }
+tests.core.test_timezone.TestGlibcAllTimezone: { extends: .runtime_test }
+tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: { extends: .runtime_test }
+tests.core.test_timezone.TestNoTimezone: { extends: .runtime_test }
+tests.fs.test_ext.TestExt2: { extends: .runtime_test }
+tests.fs.test_ext.TestExt2r1: { extends: .runtime_test }
+tests.fs.test_ext.TestExt3: { extends: .runtime_test }
+tests.fs.test_ext.TestExt4: { extends: .runtime_test }
+tests.fs.test_f2fs.TestF2FS: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660Grub2External: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660Grub2Internal: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660SyslinuxExternal: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: { extends: .runtime_test }
+tests.fs.test_iso9660.TestIso9660SyslinuxInternal: { extends: .runtime_test }
+tests.fs.test_jffs2.TestJffs2: { extends: .runtime_test }
+tests.fs.test_squashfs.TestSquashfs: { extends: .runtime_test }
+tests.fs.test_ubi.TestUbi: { extends: .runtime_test }
+tests.fs.test_yaffs2.TestYaffs2: { extends: .runtime_test }
+tests.init.test_busybox.TestInitSystemBusyboxRo: { extends: .runtime_test }
+tests.init.test_busybox.TestInitSystemBusyboxRoNet: { extends: .runtime_test }
+tests.init.test_busybox.TestInitSystemBusyboxRw: { extends: .runtime_test }
+tests.init.test_busybox.TestInitSystemBusyboxRwNet: { extends: .runtime_test }
+tests.init.test_none.TestInitSystemNone: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRoFull: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRwFull: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: { extends: .runtime_test }
+tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: { extends: .runtime_test }
+tests.package.test_dropbear.TestDropbear: { extends: .runtime_test }
+tests.package.test_ipython.TestIPythonPy2: { extends: .runtime_test }
+tests.package.test_ipython.TestIPythonPy3: { extends: .runtime_test }
+tests.package.test_lua.TestLua: { extends: .runtime_test }
+tests.package.test_lua.TestLuajit: { extends: .runtime_test }
+tests.package.test_perl.TestPerl: { extends: .runtime_test }
+tests.package.test_perl_class_load.TestPerlClassLoad: { extends: .runtime_test }
+tests.package.test_perl_dbd_mysql.TestPerlDBDmysql: { extends: .runtime_test }
+tests.package.test_perl_encode_detect.TestPerlEncodeDetect: { extends: .runtime_test }
+tests.package.test_perl_gdgraph.TestPerlGDGraph: { extends: .runtime_test }
+tests.package.test_perl_io_socket_multicast.TestPerlIOSocketMulticast: { extends: .runtime_test }
+tests.package.test_perl_io_socket_ssl.TestPerlIOSocketSSL: { extends: .runtime_test }
+tests.package.test_perl_libwww_perl.TestPerllibwwwperl: { extends: .runtime_test }
+tests.package.test_perl_mail_dkim.TestPerlMailDKIM: { extends: .runtime_test }
+tests.package.test_perl_x10.TestPerlX10: { extends: .runtime_test }
+tests.package.test_perl_xml_libxml.TestPerlXMLLibXML: { extends: .runtime_test }
+tests.package.test_prosody.TestProsodyLua51: { extends: .runtime_test }
+tests.package.test_prosody.TestProsodyLuajit: { extends: .runtime_test }
+tests.package.test_python.TestPython2: { extends: .runtime_test }
+tests.package.test_python.TestPython3: { extends: .runtime_test }
+tests.package.test_python_argh.TestPythonPy2Argh: { extends: .runtime_test }
+tests.package.test_python_argh.TestPythonPy3Argh: { extends: .runtime_test }
+tests.package.test_python_attrs.TestPythonPy2Attrs: { extends: .runtime_test }
+tests.package.test_python_attrs.TestPythonPy3Attrs: { extends: .runtime_test }
+tests.package.test_python_autobahn.TestPythonPy2Autobahn: { extends: .runtime_test }
+tests.package.test_python_autobahn.TestPythonPy3Autobahn: { extends: .runtime_test }
+tests.package.test_python_automat.TestPythonPy2Automat: { extends: .runtime_test }
+tests.package.test_python_automat.TestPythonPy3Automat: { extends: .runtime_test }
+tests.package.test_python_bitstring.TestPythonPy2Bitstring: { extends: .runtime_test }
+tests.package.test_python_bitstring.TestPythonPy3Bitstring: { extends: .runtime_test }
+tests.package.test_python_cbor.TestPythonPy2Cbor: { extends: .runtime_test }
+tests.package.test_python_cbor.TestPythonPy3Cbor: { extends: .runtime_test }
+tests.package.test_python_click.TestPythonPy2Click: { extends: .runtime_test }
+tests.package.test_python_click.TestPythonPy3Click: { extends: .runtime_test }
+tests.package.test_python_constantly.TestPythonPy2Constantly: { extends: .runtime_test }
+tests.package.test_python_constantly.TestPythonPy3Constantly: { extends: .runtime_test }
+tests.package.test_python_crossbar.TestPythonPy3Crossbar: { extends: .runtime_test }
+tests.package.test_python_cryptography.TestPythonPy2Cryptography: { extends: .runtime_test }
+tests.package.test_python_cryptography.TestPythonPy3Cryptography: { extends: .runtime_test }
+tests.package.test_python_incremental.TestPythonPy2Incremental: { extends: .runtime_test }
+tests.package.test_python_incremental.TestPythonPy3Incremental: { extends: .runtime_test }
+tests.package.test_python_passlib.TestPythonPy2Passlib: { extends: .runtime_test }
+tests.package.test_python_passlib.TestPythonPy3Passlib: { extends: .runtime_test }
+tests.package.test_python_pexpect.TestPythonPy2Pexpect: { extends: .runtime_test }
+tests.package.test_python_pexpect.TestPythonPy3Pexpect: { extends: .runtime_test }
+tests.package.test_python_pynacl.TestPythonPy2Pynacl: { extends: .runtime_test }
+tests.package.test_python_pynacl.TestPythonPy3Pynacl: { extends: .runtime_test }
+tests.package.test_python_pyyaml.TestPythonPy2Pyyaml: { extends: .runtime_test }
+tests.package.test_python_pyyaml.TestPythonPy3Pyyaml: { extends: .runtime_test }
+tests.package.test_python_service_identity.TestPythonPy2ServiceIdentity: { extends: .runtime_test }
+tests.package.test_python_service_identity.TestPythonPy3ServiceIdentity: { extends: .runtime_test }
+tests.package.test_python_subprocess32.TestPythonPy2Subprocess32: { extends: .runtime_test }
+tests.package.test_python_treq.TestPythonPy2Treq: { extends: .runtime_test }
+tests.package.test_python_treq.TestPythonPy3Treq: { extends: .runtime_test }
+tests.package.test_python_twisted.TestPythonPy2Twisted: { extends: .runtime_test }
+tests.package.test_python_twisted.TestPythonPy3Twisted: { extends: .runtime_test }
+tests.package.test_python_txaio.TestPythonPy2Txaio: { extends: .runtime_test }
+tests.package.test_python_txaio.TestPythonPy3Txaio: { extends: .runtime_test }
+tests.package.test_python_txtorcon.TestPythonPy2Txtorcon: { extends: .runtime_test }
+tests.package.test_python_txtorcon.TestPythonPy3Txtorcon: { extends: .runtime_test }
+tests.package.test_python_ubjson.TestPythonPy2Ubjson: { extends: .runtime_test }
+tests.package.test_python_ubjson.TestPythonPy3Ubjson: { extends: .runtime_test }
+tests.package.test_rust.TestRust: { extends: .runtime_test }
+tests.package.test_rust.TestRustBin: { extends: .runtime_test }
+tests.package.test_syslog_ng.TestSyslogNg: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainCCache: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainCtngMusl: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainLinaroArm: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: { extends: .runtime_test }
+tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: { extends: .runtime_test }
.gitlab-ci.yml.in +14 -13
index d5eab91c70..a506840892 100644
@@ -6,16 +6,17 @@
 
 image: buildroot/base:20180318.1724
 
-.defconfig_script: &defconfig_script
-    - echo 'Configure Buildroot'
-    - make ${CI_JOB_NAME}
-    - echo 'Build buildroot'
-    - |
-        make > >(tee build.log |grep '>>>') 2>&1 || {
-            echo 'Failed build last output'
-            tail -200 build.log
-            exit 1
-        }
+.defconfig_script:
+    script:
+        - echo 'Configure Buildroot'
+        - make ${CI_JOB_NAME}
+        - echo 'Build buildroot'
+        - |
+            make > >(tee build.log |grep '>>>') 2>&1 || {
+                echo 'Failed build last output'
+                tail -200 build.log
+                exit 1
+            }
 
 check-gitlab-ci.yml:
     script:
@@ -45,14 +46,14 @@ check-package:
     script:
         - make check-package
 
-.defconfig: &defconfig
+.defconfig:
+    extends: .defconfig_script
     # Running the defconfigs for every push is too much, so limit to
     # explicit triggers through the API.
     only:
         - triggers
         - tags
         - /-defconfigs$/
-    script: *defconfig_script
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -64,7 +65,7 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
-.runtime_test: &runtime_test
+.runtime_test:
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
support/scripts/generate-gitlab-ci-yml +2 -2
index 431911d370..262a7649b2 100755
@@ -10,8 +10,8 @@ cat "${input}"
     cd configs
     LC_ALL=C ls -1 *_defconfig
 ) \
-    | sed 's/$/: *defconfig/'
+    | sed 's/$/: { extends: .defconfig }/'
 
 ./support/testing/run-tests -l 2>&1 \
-    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' \
+    | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: { extends: .runtime_test }/' \
     | LC_ALL=C sort
Signature · 1 line
2.17.1
#17 lore raw

PATCH v3 1/5 .gitlab-ci.yml: use "extends" keyword

Quoted 18 lines · Ricardo Martincoski

Replace all YAML anchors with the new "extends" keyword because it is more readable and more flexible (it works across configuration files combined with the new "include" keyword).

Readability is more meaningful in .gitlab-ci.yml.in.
In the part of .gitlab-ci.yml that is auto-generated by 'make .gitlab-ci.yml' keep the keyword in the same line of the job name. So instead of this:
zynqmp_zcu106_defconfig:
extends: .defconfig
tests.boot.test_atf.TestATFAllwinner:
extends: .runtime_test
Use this:
zynqmp_zcu106_defconfig: { extends: .defconfig } tests.boot.test_atf.TestATFAllwinner: { extends: .runtime_test }
Do this to to keep .gitlab-ci.yml easier to be post-processed by a script.

Quoted 3 lines
Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

Applied to master, thanks.

Regards,
Arnout

#18 lore raw

PATCH v3 2/5 .gitlab-ci.yml: use "include" keyword

In reply to Ricardo Martincoski

Do not copy the contents of .gitlab-ci.yml.in to .gitlab-ci.yml when 'make .gitlab-ci.yml' runs, use the new "include" keyword instead.

The docs state "include requires the external YAML file to have the extensions .yml or .yaml" so rename .gitlab-ci.yml.in. Use the example name from the docs: .gitlab-ci-template.yml.
This file is not anymore a template for our own script that generates .gitlab-ci.yml. It becomes a job template to the Gitlab CI infra to use when populating the list of jobs to run.

Keep the comment about running 'make .gitlab-ci.yml' in the generated file.
At the same time update the comment to state that also when removing a defconfig or adding/removing runtime tests the file needs to be regenerated.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v2 -> v3:
- new patch (suggested by Arnout, not necessarily to be implemented in this series, but since it makes the maintenance of the .yml files easier I already did);

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072060
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072068
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072082
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072108

---
 .gitlab-ci.yml.in => .gitlab-ci-template.yml |  5 +-
 .gitlab-ci.yml                               | 90 +-------------------
 Makefile                                     |  4 +-
 support/scripts/generate-gitlab-ci-yml       |  9 +-
 4 files changed, 14 insertions(+), 94 deletions(-)
 rename .gitlab-ci.yml.in => .gitlab-ci-template.yml (94%)
.gitlab-ci-template.yml renamed from .gitlab-ci.yml.in +2 -3
similarity index 94%
rename from .gitlab-ci.yml.in
rename to .gitlab-ci-template.yml
index a506840892..83b93d5aaa 100644
@@ -1,8 +1,7 @@
 # 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".
+# The .gitlab-ci.yml file is generated and has an "include" keyword that
+# makes Gitlab-CI to use the jobs below.
 
 image: buildroot/base:20180318.1724
 
.gitlab-ci.yml +4 -86

93 lines not on this page · raw message

Makefile +2 -2
index a382a5defb..27412320bd 100644
@@ -1159,8 +1159,8 @@ check-package:
 		-exec ./utils/check-package {} +
 
 .PHONY: .gitlab-ci.yml
-.gitlab-ci.yml: .gitlab-ci.yml.in
-	./support/scripts/generate-gitlab-ci-yml $< > $@
+.gitlab-ci.yml:
+	./support/scripts/generate-gitlab-ci-yml > $@
 
 include docs/manual/manual.mk
 -include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk)))
support/scripts/generate-gitlab-ci-yml +6 -3
index 262a7649b2..c50a5f1e82 100755
@@ -2,9 +2,12 @@
 set -e
 set -o pipefail
 
-input="${1}"
-
-cat "${input}"
+cat <<EOF
+# This file needs to be regenerated every time a defconfig or runtime
+# test is added or removed, using "make .gitlab-ci.yml".
+include:
+    - local: '/.gitlab-ci-template.yml'
+EOF
 
 (
     cd configs
Signature · 1 line
2.17.1
#19 lore raw

PATCH v3 2/5 .gitlab-ci.yml: use "include" keyword

Quoted 9 lines · Ricardo Martincoski

Do not copy the contents of .gitlab-ci.yml.in to .gitlab-ci.yml when 'make .gitlab-ci.yml' runs, use the new "include" keyword instead.

The docs state "include requires the external YAML file to have the extensions .yml or .yaml" so rename .gitlab-ci.yml.in. Use the example name from the docs: .gitlab-ci-template.yml.
This file is not anymore a template for our own script that generates .gitlab-ci.yml. It becomes a job template to the Gitlab CI infra to use when populating the list of jobs to run.

Meh, this is not what I meant...

What I meant was to rename .gitlab-ci.yml.in to .gitlab-ci.yml and to add the
include to the end of it, and to make generate-gitlab-ci.yml generate only the included file.

This has the advantage that it allows to generate different versions of the
included file by modifying the generator script. For example, we could think of generating only a subset of the defconfigs and tests in master, and use a special branch for full testing, and add another CI job with a time trigger that updates that special branch.

I thought of fixing that up while committing, but it's a little bit complicated
so instead I've marked the rest of the series as Changes Requested.

If you don't have time to do it, could you instead repost v2 but rebased on the
"extends" patch?

Regards,
Arnout

#20 lore raw

PATCH v3 2/5 .gitlab-ci.yml: use "include" keyword

Hello,

Sorry for the long delay in answering.

Quoted 4 lines · Arnout Vandecappelle
Quoted 3 lines · Ricardo Martincoski

Do not copy the contents of .gitlab-ci.yml.in to .gitlab-ci.yml when 'make .gitlab-ci.yml' runs, use the new "include" keyword instead.

Quoted 8 lines
Quoted 6 lines

The docs state "include requires the external YAML file to have the extensions .yml or .yaml" so rename .gitlab-ci.yml.in. Use the example name from the docs: .gitlab-ci-template.yml.
This file is not anymore a template for our own script that generates .gitlab-ci.yml. It becomes a job template to the Gitlab CI infra to use when populating the list of jobs to run.

Meh, this is not what I meant...

Oh, really sorry. I was thinking only about the duplicated code.

Quoted 4 lines

What I meant was to rename .gitlab-ci.yml.in to .gitlab-ci.yml and to add the
include to the end of it, and to make generate-gitlab-ci.yml generate only the included file.

OK

Quoted 6 lines

This has the advantage that it allows to generate different versions of the
included file by modifying the generator script. For example, we could think of generating only a subset of the defconfigs and tests in master, and use a special branch for full testing, and add another CI job with a time trigger that updates that special branch.

OK, now (hopefully) I see what you want to achieve.

Quoted 5 lines

I thought of fixing that up while committing, but it's a little bit complicated
so instead I've marked the rest of the series as Changes Requested.

If you don't have time to do it, could you instead repost v2 but rebased on the
"extends" patch?

I will repost without this patch so we can move forward with this series. But we can revisit the use of 'include' later, after the series got merged.

Regards,
Ricardo

#21 lore raw

PATCH v3 3/5 .gitlab-ci.yml: reorder jobs

In reply to Ricardo Martincoski

In order to make the template of jobs easier to maintain, reorder the keys in a more logical way:
Keep the docker image at the top.
Then all check-* jobs in the case-insensitive alphabetical order they appear on Gitlab-CI pipeline results.
Then all keys related to defconfigs.
Finally all keys related to runtime tests.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
NOTE: I used .gitlab-ci.yml as prefix for the commit subject because it seems to me it is "the area touched by the patch".
Please correct me if I misunderstood.

Changes v2 -> v3:
- new patch, since I am already doing a lot of changes to this file;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072644
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072658
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072673
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072690

---
 .gitlab-ci-template.yml | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)
.gitlab-ci-template.yml +18 -18
index 83b93d5aaa..f1dfcbcecb 100644
@@ -5,24 +5,6 @@
 
 image: buildroot/base:20180318.1724
 
-.defconfig_script:
-    script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
-        - echo 'Build buildroot'
-        - |
-            make > >(tee build.log |grep '>>>') 2>&1 || {
-                echo 'Failed build last output'
-                tail -200 build.log
-                exit 1
-            }
-
-check-gitlab-ci.yml:
-    script:
-        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
-        - make .gitlab-ci.yml
-        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
-
 check-DEVELOPERS:
     # get-developers should print just "No action specified"; if it prints
     # anything else, it's a parse error.
@@ -41,10 +23,28 @@ check-flake8:
     after_script:
         - wc -l files.processed
 
+check-gitlab-ci.yml:
+    script:
+        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
+        - make .gitlab-ci.yml
+        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
+
 check-package:
     script:
         - make check-package
 
+.defconfig_script:
+    script:
+        - echo 'Configure Buildroot'
+        - make ${CI_JOB_NAME}
+        - echo 'Build buildroot'
+        - |
+            make > >(tee build.log |grep '>>>') 2>&1 || {
+                echo 'Failed build last output'
+                tail -200 build.log
+                exit 1
+            }
+
 .defconfig:
     extends: .defconfig_script
     # Running the defconfigs for every push is too much, so limit to
Signature · 1 line
2.17.1
#22 lore raw

PATCH v3 4/5 .gitlab-ci.yml: prepare to reuse scripts

In reply to Ricardo Martincoski

Use local variables to pass the name of the defconfig to build or runtime test to run.
This change allows upcoming new jobs to reuse those scripts.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v2 -> v3:
- new patch, trying to make the review/testing easier;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072827
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072834
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072856
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44072869

---
 .gitlab-ci-template.yml | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)
.gitlab-ci-template.yml +16 -7
index f1dfcbcecb..59f3af36eb 100644
@@ -35,8 +35,8 @@ check-package:
 
 .defconfig_script:
     script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
+        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
+        - make ${DEFCONFIG_NAME}
         - echo 'Build buildroot'
         - |
             make > >(tee build.log |grep '>>>') 2>&1 || {
@@ -53,6 +53,8 @@ check-package:
         - triggers
         - tags
         - /-defconfigs$/
+    before_script:
+        - DEFCONFIG_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -64,18 +66,25 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
+.runtime_test_script:
+    # 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}
+
 .runtime_test:
+    extends: .runtime_test_script
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
         - triggers
         - tags
         - /-runtime-tests$/
-    # 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: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME}
+    before_script:
+        - TEST_CASE_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
Signature · 1 line
2.17.1
#23 lore raw

PATCH v3 5/5 .gitlab-ci.yml: add trigger per job

In reply to Ricardo Martincoski

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.

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 don'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.

Cc Arnout Vandecappelle <[email protected]>
Cc Matt Weber <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v2 -> v3:
- use a separate job to build one defconfig or run one runtime test

    (suggested by Arnout);

- do not run check-* jobs when a single job (defconfig or runtime test) was requested (suggested by Thomas in reply to the cover letter of v1);

Changes v1 -> v2:
- use shell-based implementation instead of complexes awk calls, it is

    simpler and easier to read (suggested by Thomas);
  - since now the value for 'only' is overridden by the script, add a
    note on .gitlab-ci.yml*;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073033
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073047
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073089
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073172

Using the entire series (without the test commit above) I also asked 20 random jobs:

$ for job in \
  $(grep '_defconfig:\|^tests' .gitlab-ci.yml | sed -e 's,:.*,,g' | shuf -n 20); do \
  git push gitlab HEAD:trigger-per-job-v3-$job ; \
  done
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073410
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073419
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073431
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073434
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073436
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073438
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073445
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073448
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073455
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073458
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073461
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073463
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073469
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073477
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073479
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073482
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073486
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073491
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073510
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/44073522
---
 .gitlab-ci-template.yml | 65 ++++++++++++++++++++++++++++-------------
 1 file changed, 44 insertions(+), 21 deletions(-)
.gitlab-ci-template.yml +44 -21
index 59f3af36eb..297372d965 100644
@@ -5,7 +5,13 @@
 
 image: buildroot/base:20180318.1724
 
+.check_base:
+    except:
+        - /^.*-.*_defconfig$/
+        - /^.*-tests\..*$/
+
 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.
@@ -13,6 +19,7 @@ check-DEVELOPERS:
         - "! 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
@@ -24,16 +31,18 @@ check-flake8:
         - 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_script:
+.defconfig_base:
     script:
         - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
         - make ${DEFCONFIG_NAME}
@@ -44,17 +53,6 @@ check-package:
                 tail -200 build.log
                 exit 1
             }
-
-.defconfig:
-    extends: .defconfig_script
-    # Running the defconfigs for every push is too much, so limit to
-    # explicit triggers through the API.
-    only:
-        - triggers
-        - tags
-        - /-defconfigs$/
-    before_script:
-        - DEFCONFIG_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -66,7 +64,25 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
-.runtime_test_script:
+.defconfig:
+    extends: .defconfig_base
+    # Running the defconfigs for every push is too much, so limit to
+    # explicit triggers through the API.
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+    before_script:
+        - DEFCONFIG_NAME=${CI_JOB_NAME}
+
+one-defconfig:
+    extends: .defconfig_base
+    only:
+        - /^.*-.*_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
@@ -74,9 +90,16 @@ check-package:
     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_script
+    extends: .runtime_test_base
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
@@ -85,10 +108,10 @@ check-package:
         - /-runtime-tests$/
     before_script:
         - TEST_CASE_NAME=${CI_JOB_NAME}
-    artifacts:
-        when: always
-        expire_in: 2 weeks
-        paths:
-            - test-output/*.log
-            - test-output/*/.config
-            - test-output/*/images/*
+
+one-runtime_test:
+    extends: .runtime_test_base
+    only:
+        - /^.*-tests\..*$/
+    before_script:
+        - TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
Signature · 1 line
2.17.1
#24 lore raw

v4 cover .gitlab-ci.yml: rework and add trigger per job

In reply to Ricardo Martincoski

Hello,

Besides the current subsets of jobs that can be triggered by pushing temporary branches with special names:
- all defconfigs: /.*-defconfigs$/
- all runtime tests: /.*-runtime-tests$/
This series allows the user of GitLab pipeline to trigger some interesting subsets of jobs by pushing temporary branches with names that match regexps:
- one defconfig: /.*-defconfig_name$/
- one test case: /.*-test_case_name$/
Pushing a tag still triggers all jobs.

Patch 1 reorders the template so similar keys stay together, making the maintenance easier.
Patch 2 could be merged to patch 3, but for the sake of easier review/testing I had split them.
Patches 1 and 2 do not change any functionality.

Finally patch 3 actually adds the per defconfig and per runtime test triggers.

Changes v3 -> v4:
- remove patch 2 that switch to using the new "include" keyword. That patch started from a suggestion from Arnout that I misunderstood. That patch does not really need to be in this series, so let's switch to using "include" in a separate patch or series.

Regards,
Ricardo

Ricardo Martincoski (3):
.gitlab-ci.yml: reorder jobs
.gitlab-ci.yml: prepare to reuse scripts
.gitlab-ci.yml: add trigger per job

 .gitlab-ci.yml    | 90 ++++++++++++++++++++++++++++++++---------------
 .gitlab-ci.yml.in | 90 ++++++++++++++++++++++++++++++++---------------
 2 files changed, 122 insertions(+), 58 deletions(-)
Signature · 1 line
2.17.1
#25 lore raw

PATCH v4 1/3 .gitlab-ci.yml: reorder jobs

In order to make the file easier to maintain, reorder the keys in a more logical way:
Keep the docker image at the top.
Then all check-* jobs in the case-insensitive alphabetical order they appear on Gitlab-CI pipeline results.
Then all keys related to defconfigs.
Finally all keys related to runtime tests.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v3 -> v4:
- rebase after removing one patch from the series;

Changes v2 -> v3:
- new patch, since I am already doing a lot of changes to this file;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs: (total 4)
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55630581
- all defconfigs and all check-* jobs: (total 199)
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55630594
- all runtime tests and all check-* jobs: (total 145)
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55630611
- all jobs (using a tag): (total 340)
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55630646

---
 .gitlab-ci.yml    | 36 ++++++++++++++++++------------------
 .gitlab-ci.yml.in | 36 ++++++++++++++++++------------------
 2 files changed, 36 insertions(+), 36 deletions(-)
.gitlab-ci.yml +18 -18
index 572868a557..58166364ad 100644
@@ -6,24 +6,6 @@
 
 image: buildroot/base:20180318.1724
 
-.defconfig_script:
-    script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
-        - echo 'Build buildroot'
-        - |
-            make > >(tee build.log |grep '>>>') 2>&1 || {
-                echo 'Failed build last output'
-                tail -200 build.log
-                exit 1
-            }
-
-check-gitlab-ci.yml:
-    script:
-        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
-        - make .gitlab-ci.yml
-        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
-
 check-DEVELOPERS:
     # get-developers should print just "No action specified"; if it prints
     # anything else, it's a parse error.
@@ -42,10 +24,28 @@ check-flake8:
     after_script:
         - wc -l files.processed
 
+check-gitlab-ci.yml:
+    script:
+        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
+        - make .gitlab-ci.yml
+        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
+
 check-package:
     script:
         - make check-package
 
+.defconfig_script:
+    script:
+        - echo 'Configure Buildroot'
+        - make ${CI_JOB_NAME}
+        - echo 'Build buildroot'
+        - |
+            make > >(tee build.log |grep '>>>') 2>&1 || {
+                echo 'Failed build last output'
+                tail -200 build.log
+                exit 1
+            }
+
 .defconfig:
     extends: .defconfig_script
     # Running the defconfigs for every push is too much, so limit to
.gitlab-ci.yml.in +18 -18
index a506840892..f519338d63 100644
@@ -6,24 +6,6 @@
 
 image: buildroot/base:20180318.1724
 
-.defconfig_script:
-    script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
-        - echo 'Build buildroot'
-        - |
-            make > >(tee build.log |grep '>>>') 2>&1 || {
-                echo 'Failed build last output'
-                tail -200 build.log
-                exit 1
-            }
-
-check-gitlab-ci.yml:
-    script:
-        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
-        - make .gitlab-ci.yml
-        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
-
 check-DEVELOPERS:
     # get-developers should print just "No action specified"; if it prints
     # anything else, it's a parse error.
@@ -42,10 +24,28 @@ check-flake8:
     after_script:
         - wc -l files.processed
 
+check-gitlab-ci.yml:
+    script:
+        - mv .gitlab-ci.yml .gitlab-ci.yml.orig
+        - make .gitlab-ci.yml
+        - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml
+
 check-package:
     script:
         - make check-package
 
+.defconfig_script:
+    script:
+        - echo 'Configure Buildroot'
+        - make ${CI_JOB_NAME}
+        - echo 'Build buildroot'
+        - |
+            make > >(tee build.log |grep '>>>') 2>&1 || {
+                echo 'Failed build last output'
+                tail -200 build.log
+                exit 1
+            }
+
 .defconfig:
     extends: .defconfig_script
     # Running the defconfigs for every push is too much, so limit to
Signature · 1 line
2.17.1
#26 lore raw

PATCH v4 1/3 .gitlab-ci.yml: reorder jobs

Quoted 11 lines · Ricardo Martincoski

In order to make the file easier to maintain, reorder the keys in a more logical way:
Keep the docker image at the top.
Then all check-* jobs in the case-insensitive alphabetical order they appear on Gitlab-CI pipeline results.
Then all keys related to defconfigs.
Finally all keys related to runtime tests.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

Applied to master, thanks.

I tested it by just saving the output of sort .gitlab-ci.yml.in before and
after and checking that they were equal.

Regards,
Arnout

#27 lore raw

PATCH v4 2/3 .gitlab-ci.yml: prepare to reuse scripts

In reply to Ricardo Martincoski

Use local variables to pass the name of the defconfig to build or runtime test to run.
This change allows upcoming new jobs to reuse those scripts.

Cc Arnout Vandecappelle <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v3 -> v4:
- rebase after removing one patch from the series;

Changes v2 -> v3:
- new patch, trying to make the review/testing easier;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632102
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632126
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632153
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632193

---
 .gitlab-ci.yml    | 23 ++++++++++++++++-------
 .gitlab-ci.yml.in | 23 ++++++++++++++++-------
 2 files changed, 32 insertions(+), 14 deletions(-)
.gitlab-ci.yml +16 -7
index 58166364ad..44fdb94f65 100644
@@ -36,8 +36,8 @@ check-package:
 
 .defconfig_script:
     script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
+        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
+        - make ${DEFCONFIG_NAME}
         - echo 'Build buildroot'
         - |
             make > >(tee build.log |grep '>>>') 2>&1 || {
@@ -54,6 +54,8 @@ check-package:
         - triggers
         - tags
         - /-defconfigs$/
+    before_script:
+        - DEFCONFIG_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -65,18 +67,25 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
+.runtime_test_script:
+    # 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}
+
 .runtime_test:
+    extends: .runtime_test_script
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
         - triggers
         - tags
         - /-runtime-tests$/
-    # 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: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME}
+    before_script:
+        - TEST_CASE_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
.gitlab-ci.yml.in +16 -7
index f519338d63..0b4c65b258 100644
@@ -36,8 +36,8 @@ check-package:
 
 .defconfig_script:
     script:
-        - echo 'Configure Buildroot'
-        - make ${CI_JOB_NAME}
+        - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
+        - make ${DEFCONFIG_NAME}
         - echo 'Build buildroot'
         - |
             make > >(tee build.log |grep '>>>') 2>&1 || {
@@ -54,6 +54,8 @@ check-package:
         - triggers
         - tags
         - /-defconfigs$/
+    before_script:
+        - DEFCONFIG_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -65,18 +67,25 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
+.runtime_test_script:
+    # 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}
+
 .runtime_test:
+    extends: .runtime_test_script
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
         - triggers
         - tags
         - /-runtime-tests$/
-    # 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: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME}
+    before_script:
+        - TEST_CASE_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
Signature · 1 line
2.17.1
#28 lore raw

PATCH v4 3/3 .gitlab-ci.yml: add trigger per job

In reply to Ricardo Martincoski

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.

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 don'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.

Cc Arnout Vandecappelle <[email protected]>
Cc Matt Weber <[email protected]>
Cc Thomas Petazzoni <[email protected]>

---
Changes v3 -> v4:
- rebase after removing one patch from the series;

Changes v2 -> v3:
- use a separate job to build one defconfig or run one runtime test

    (suggested by Arnout);

- do not run check-* jobs when a single job (defconfig or runtime test) was requested (suggested by Thomas in reply to the cover letter of v1);

Changes v1 -> v2:
- use shell-based implementation instead of complexes awk calls, it is

    simpler and easier to read (suggested by Thomas);
  - since now the value for 'only' is overridden by the script, add a
    note on .gitlab-ci.yml*;

For test purposes I created a commit that makes all defconfigs and runtime tests to echo the command that would be called instead of actually calling it and then I asked Gitlab CI to run:
- only the check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632370
- all defconfigs and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632439
- all runtime tests and all check-* jobs:
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632468
- all jobs (using a tag):
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632522

Using the entire series (without the test commit above) I also asked 20 random jobs:

$ for job in \
  $(grep '_defconfig:\|^tests' .gitlab-ci.yml | sed -e 's,:.*,,g' | shuf -n 20); do \
  git push gitlab HEAD:trigger-per-job-v4-$job ; \
  done
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632631
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632633
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632636
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632638
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632642
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632644
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632646
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632651
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632653
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632655
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632658
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632661
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632668
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632670
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632672
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632674
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632677
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632680
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632686
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/55632688
---
 .gitlab-ci.yml    | 65 ++++++++++++++++++++++++++++++++---------------
 .gitlab-ci.yml.in | 65 ++++++++++++++++++++++++++++++++---------------
 2 files changed, 88 insertions(+), 42 deletions(-)
.gitlab-ci.yml +44 -21
index 44fdb94f65..a38448e3df 100644
@@ -6,7 +6,13 @@
 
 image: buildroot/base:20180318.1724
 
+.check_base:
+    except:
+        - /^.*-.*_defconfig$/
+        - /^.*-tests\..*$/
+
 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.
@@ -14,6 +20,7 @@ check-DEVELOPERS:
         - "! 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
@@ -25,16 +32,18 @@ check-flake8:
         - 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_script:
+.defconfig_base:
     script:
         - echo "Configure Buildroot for ${DEFCONFIG_NAME}"
         - make ${DEFCONFIG_NAME}
@@ -45,17 +54,6 @@ check-package:
                 tail -200 build.log
                 exit 1
             }
-
-.defconfig:
-    extends: .defconfig_script
-    # Running the defconfigs for every push is too much, so limit to
-    # explicit triggers through the API.
-    only:
-        - triggers
-        - tags
-        - /-defconfigs$/
-    before_script:
-        - DEFCONFIG_NAME=${CI_JOB_NAME}
     artifacts:
         when: always
         expire_in: 2 weeks
@@ -67,7 +65,25 @@ check-package:
             - output/build/packages-file-list.txt
             - output/build/*/.config
 
-.runtime_test_script:
+.defconfig:
+    extends: .defconfig_base
+    # Running the defconfigs for every push is too much, so limit to
+    # explicit triggers through the API.
+    only:
+        - triggers
+        - tags
+        - /-defconfigs$/
+    before_script:
+        - DEFCONFIG_NAME=${CI_JOB_NAME}
+
+one-defconfig:
+    extends: .defconfig_base
+    only:
+        - /^.*-.*_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
@@ -75,9 +91,16 @@ check-package:
     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_script
+    extends: .runtime_test_base
     # Running the runtime tests for every push is too much, so limit to
     # explicit triggers through the API.
     only:
@@ -86,13 +109,13 @@ check-package:
         - /-runtime-tests$/
     before_script:
         - TEST_CASE_NAME=${CI_JOB_NAME}
-    artifacts:
-        when: always
-        expire_in: 2 weeks
-        paths:
-            - test-output/*.log
-            - test-output/*/.config
-            - test-output/*/images/*
+
+one-runtime_test:
+    extends: .runtime_test_base
+    only:
+        - /^.*-tests\..*$/
+    before_script:
+        - TEST_CASE_NAME=$(echo ${CI_COMMIT_REF_NAME} | sed -e 's,^.*-,,g')
 aarch64_efi_defconfig: { extends: .defconfig }
 acmesystems_aria_g25_128mb_defconfig: { extends: .defconfig }
 acmesystems_aria_g25_256mb_defconfig: { extends: .defconfig }
.gitlab-ci.yml.in +44 -21

116 lines not on this page · raw message

Signature · 1 line
2.17.1
#29 lore raw

PATCH v4 3/3 .gitlab-ci.yml: add trigger per job

Quoted 2 lines · Ricardo Martincoski

The check-* jobs are fast, so there is no need to add a per job trigger for them.

This bit is no longer true, right?

I can fix that up while applying, no need to resend.

Also, I'll squash patches 2 and 3. Patch 2 is really not worth much on its own
IMO. It would make more sense to introduce the _base keys in a separate patch (i.e. moving the artifacts to _base) and include the variable name in that patch. But I don't think it's worth the effort to try to split like that.

Regards,
Arnout

#30 lore raw

PATCH v4 3/3 .gitlab-ci.yml: add trigger per job

Hello,

Quoted 5 lines · Arnout Vandecappelle
Quoted 2 lines · Ricardo Martincoski

The check-* jobs are fast, so there is no need to add a per job trigger for them.

This bit is no longer true, right?

I still think:
- The check-* jobs are fast
- there is no *need* to add a per job trigger for them.
But with v4 of this series indeed it should be easy to add a per job trigger for them too, for consistence or some other reason.

Quoted 2 lines

I can fix that up while applying, no need to resend.

So feel free to add them *if* you keep current behavior. For example, now when one pushes a branch to GitLab the 4 check-* jobs run.
I guess you would need to do this for each of the 4 jobs:

check-DEVELOPERS:
extends: .check_base
+ only:

+        - triggers
+        - tags
+        - branches
+        - /-check-DEVELOPERS$/

If you intend to change the current behavior, please do this in a follow up patch so we can discuss a little more during its review.

Quoted 5 lines

Also, I'll squash patches 2 and 3. Patch 2 is really not worth much on its own
IMO. It would make more sense to introduce the _base keys in a separate patch (i.e. moving the artifacts to _base) and include the variable name in that patch. But I don't think it's worth the effort to try to split like that.

OK. Please feel free to squash them.

Regards,
Ricardo

#31 lore raw

PATCH v4 3/3 .gitlab-ci.yml: add trigger per job

Quoted 9 lines · Ricardo Martincoski

Hello,

Quoted 5 lines · Arnout Vandecappelle
Quoted 2 lines · Ricardo Martincoski

The check-* jobs are fast, so there is no need to add a per job trigger for them.

This bit is no longer true, right?

I'm sorry, I had not read it correctly. I had read "The check-* jobs are fast,
so there is no need to exclude them from the defconfig and test branches."

Indeed, there is no need to add a per job trigger. The main reason for that is
though that they'll run for every push anyway, so adding a separate trigger is kind of useless.

Quoted 22 lines

I still think:
- The check-* jobs are fast
- there is no *need* to add a per job trigger for them.
But with v4 of this series indeed it should be easy to add a per job trigger for them too, for consistence or some other reason.

Quoted 2 lines

I can fix that up while applying, no need to resend.

So feel free to add them *if* you keep current behavior. For example, now when one pushes a branch to GitLab the 4 check-* jobs run.
I guess you would need to do this for each of the 4 jobs:

check-DEVELOPERS:
extends: .check_base

.gitlab-ci.yml +5 -0
+    only:
+        - triggers
+        - tags
+        - branches
+        - /-check-DEVELOPERS$/
Quoted 2 lines

If you intend to change the current behavior, please do this in a follow up patch so we can discuss a little more during its review.

So no, that was not at all my intention.

Quoted 6 lines
Quoted 4 lines

Also, I'll squash patches 2 and 3. Patch 2 is really not worth much on its own
IMO. It would make more sense to introduce the _base keys in a separate patch (i.e. moving the artifacts to _base) and include the variable name in that patch. But I don't think it's worth the effort to try to split like that.

OK. Please feel free to squash them.

I'll do that when I get around to applying them :-)

Regards,
Arnout

#32 lore raw

PATCH v4 3/3 .gitlab-ci.yml: add trigger per job

Quoted 6 lines · Arnout Vandecappelle
Quoted 5 lines
Quoted 4 lines

Also, I'll squash patches 2 and 3. Patch 2 is really not worth much on its own
IMO. It would make more sense to introduce the _base keys in a separate patch (i.e. moving the artifacts to _base) and include the variable name in that patch. But I don't think it's worth the effort to try to split like that.

OK. Please feel free to squash them.

I'll do that when I get around to applying them :-)

I finally did...

Patches 2 and 3 squashed and applied to master, thanks.

Regards,
Arnout

#33 lore raw

cover .gitlab-ci.yml: add trigger per job and per type of job

In reply to Ricardo Martincoski

Hello Ricardo,

Quoted 10 lines · Ricardo Martincoski

This series allows the user of GitLab pipeline to trigger some interesting subsets of jobs by pushing temporary branches with names that match regexps:
- all defconfigs: /.*-defconfigs$/
- all runtime tests: /.*-runtime-tests$/
- one defconfig: /.*-defconfig_name$/
- one test case: /.*-test_case_name$/
The check-* jobs keep being triggered for all pushes: branches that match one of the regexps above, branches that don't match them, and tags. Pushing a tag still triggers all jobs.

Quoted 4 lines

The first patch adds the first two regexps.
The second patch prepares to add the per job trigger but don't change any functionality.
The last patch actually adds the per defconfig and per runtime test triggers.

Thanks for working on this! Overall, it looks good to me. The only thing that I find a bit disturbing is that the "generic" tests (i.e check-package and al.) are always done, even if you specifically ask to only run a specific defconfig build or a specific runtime test.

I.e, something like:

Quoted 3 lines
$ git push gitlab HEAD:test3-qemu_arm_versatile_defconfig
results in 5 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614400

is a bit weird, because one would expect to have only a single job, building qemu_arm_versatile_defconfig.

Not directly related to patch series, but related to gitlab CI testing, I have a few questions where you could possibly help.

Currently:

- at every push, gitlab CI is doing the "generic" tests. This happens for all branches, because it takes place for every push. This looks good to me, the only change I'd like to make is to redirect the e-mail notifications to the mailing list.

- every week, a cronjob does a trigger:

curl -X POST -F token=SOMETHING -F ref=master
https://gitlab.com/api/v4/projects/2648174/trigger/pipeline

First, this does not test all branches, which could trivially be fixed by doing several triggers, one per branch with different ref=<value>.

However, the output at
https://gitlab.com/buildroot.org/buildroot/pipelines is not very nice, as everything is fixed together: we cannot distinguish easily the pipelines that ran just the generic tests or the ones who ran the runtime tests and defconfig tests. Ideally, it would be nice to have separately the results for the runtime tests and defconfig tests.

So, with your feature, I'm wondering if instead of using this explicit trigger mechanism, we shouldn't have a cronjob that pushes branches with a name that will trigger what we want, i.e something like this (pseudo-code):

# perhaps we could automatically grab this from
# http://autobuild.buildroot.net/branches
BRANCHES="2018.02.x 2018.08.x master"

timestamp=$(date +%s)
for branch in ${BRANCHES} ; do
git push gitlab ${branch}:${branch}-defconfigs-${timestamp} git push gitlab ${branch}:${branch}-runtime-tests-${timestamp}
done

This would give us separate branch names for every test, which would make the output in https://gitlab.com/buildroot.org/buildroot/pipelines
a lot more readable.

What do you think about this? Is this a good idea? Do you see other solutions with what Gitlab CI provides?

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
#34 lore raw

cover .gitlab-ci.yml: add trigger per job and per type of job

Hello Thomas,

Quoted 22 lines · Thomas Petazzoni
Quoted 10 lines · Ricardo Martincoski

This series allows the user of GitLab pipeline to trigger some interesting subsets of jobs by pushing temporary branches with names that match regexps:
- all defconfigs: /.*-defconfigs$/
- all runtime tests: /.*-runtime-tests$/
- one defconfig: /.*-defconfig_name$/
- one test case: /.*-test_case_name$/
The check-* jobs keep being triggered for all pushes: branches that match one of the regexps above, branches that don't match them, and tags. Pushing a tag still triggers all jobs.

Quoted 4 lines

The first patch adds the first two regexps.
The second patch prepares to add the per job trigger but don't change any functionality.
The last patch actually adds the per defconfig and per runtime test triggers.

Thanks for working on this! Overall, it looks good to me. The only thing that I find a bit disturbing is that the "generic" tests (i.e check-package and al.) are always done, even if you specifically ask to only run a specific defconfig build or a specific runtime test.

Quoted 8 lines

I.e, something like:

Quoted 3 lines
$ git push gitlab HEAD:test3-qemu_arm_versatile_defconfig
results in 5 jobs
https://gitlab.com/RicardoMartincoski/buildroot/pipelines/34614400

is a bit weird, because one would expect to have only a single job, building qemu_arm_versatile_defconfig.

Yes. It's a bit weird. I did like this to avoid messing with the generic tests running on every push.

The correct solution to get ride of them IMO is to create yet another specific regexp for the generic tests.
/-generic-tests(-[\d+])?$/
There are only 4 and they run fast, so I think there is no need for per job trigger for them.
Notice that it implies in not running any jobs for ordinary pushes.

But maybe even the generic tests running on every push is too much. Automatically running them once a day seems reasonable to me.

And whenever the gut feeling tells that a patch or patch series can break any of them (or even when a runtime test or defconfig should be run to detect possible regressions) we would still be allowed to manually trigger them by using the special branch names, even before the patch is applied to the main repo. And if the asked test fails with the patch, asking the same test for the current master is also easy, so we can be sure the patch being tested is the culprit, not any other commit that was applied to master after the last cronjob ran.

Quoted 10 lines

Not directly related to patch series, but related to gitlab CI testing, I have a few questions where you could possibly help.

Currently:

- at every push, gitlab CI is doing the "generic" tests. This happens for all branches, because it takes place for every push. This looks good to me, the only change I'd like to make is to redirect the e-mail notifications to the mailing list.

So maybe it could also be a cronjob, running once a day.

Quoted 22 lines

- every week, a cronjob does a trigger:

curl -X POST -F token=SOMETHING -F ref=master
https://gitlab.com/api/v4/projects/2648174/trigger/pipeline

First, this does not test all branches, which could trivially be fixed by doing several triggers, one per branch with different ref=<value>.

However, the output at
https://gitlab.com/buildroot.org/buildroot/pipelines is not very nice, as everything is fixed together: we cannot distinguish easily the pipelines that ran just the generic tests or the ones who ran the runtime tests and defconfig tests. Ideally, it would be nice to have separately the results for the runtime tests and defconfig tests.

So, with your feature, I'm wondering if instead of using this explicit trigger mechanism, we shouldn't have a cronjob that pushes branches with a name that will trigger what we want, i.e something like this (pseudo-code):

Quoted 5 lines
# perhaps we could automatically grab this from
# http://autobuild.buildroot.net/branches
BRANCHES="2018.02.x 2018.08.x master"

timestamp=$(date +%s)

Maybe 'date +%Y%m%d' is more friendly for those like me that don't know which day it is by just looking at a number of seconds since epoch :-) But I don't care much.

Quoted 4 lines

for branch in ${BRANCHES} ; do
git push gitlab ${branch}:${branch}-defconfigs-${timestamp} git push gitlab ${branch}:${branch}-runtime-tests-${timestamp}
done

So perhaps these are more suitable regexps:
/-defconfigs(-[\d+])?$/
/-runtime-tests(-[\d+])?$/

Quoted 4 lines

This would give us separate branch names for every test, which would make the output in https://gitlab.com/buildroot.org/buildroot/pipelines
a lot more readable.

Indeed. The GUI has a small column for this and will display only master-runt...
when the mouse pointer is not hovering the name, but it gives a good idea what the pipeline did tested.

Quoted 3 lines

What do you think about this? Is this a good idea? Do you see other solutions with what Gitlab CI provides?

I think it is a good idea.
I don't see any better solution using only Gitlab.

Using different branches for each pipeline that cronjob triggers have 2 small downsides I can think of:
- we lose the 'latest' label from the 'Pipeline' column because all pipelines will have it. I don't think it adds much info anyway.
- the list of stale branches will grow. That shouldn't bring problems, and we can always remove branches from time to time (yearly?) if we like. Removing a branch does not seem to remove the associated pipelines.

So, +1 to adopt this.

Regards,
Ricardo