All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job
@ 2018-10-28 23:58 Ricardo Martincoski
  2018-10-28 23:58 ` [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger " Ricardo Martincoski
                   ` (3 more replies)
  0 siblings, 4 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2018-10-28 23:58 UTC (permalink / raw)
  To: buildroot

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

-- 
2.17.1

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger per type of job
  2018-10-28 23:58 [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Ricardo Martincoski
@ 2018-10-28 23:58 ` Ricardo Martincoski
  2018-12-09 20:29   ` Thomas Petazzoni
  2018-10-28 23:58 ` [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation Ricardo Martincoski
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2018-10-28 23:58 UTC (permalink / raw)
  To: buildroot

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

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
 .gitlab-ci.yml    | 2 ++
 .gitlab-ci.yml.in | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8b9a1f175c..d84c283dbc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index db526c4b5a..ebca29ca1f 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation
  2018-10-28 23:58 [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Ricardo Martincoski
  2018-10-28 23:58 ` [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger " Ricardo Martincoski
@ 2018-10-28 23:58 ` Ricardo Martincoski
  2018-12-09 20:32   ` Thomas Petazzoni
  2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2018-10-31  9:13 ` [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Thomas Petazzoni
  3 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2018-10-28 23:58 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
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

diff --git a/Makefile b/Makefile
index a69af3b645..6a80809ad2 100644
--- a/Makefile
+++ b/Makefile
@@ -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)))
diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
new file mode 100755
index 0000000000..d824f669b5
--- /dev/null
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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}"
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-10-28 23:58 [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Ricardo Martincoski
  2018-10-28 23:58 ` [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger " Ricardo Martincoski
  2018-10-28 23:58 ` [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation Ricardo Martincoski
@ 2018-10-28 23:58 ` Ricardo Martincoski
  2018-12-09 20:59   ` Thomas Petazzoni
                     ` (2 more replies)
  2018-10-31  9:13 ` [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Thomas Petazzoni
  3 siblings, 3 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2018-10-28 23:58 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d84c283dbc..c6fc755c9b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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$/
diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
index d824f669b5..9efa775f88 100755
--- a/support/scripts/generate-gitlab-ci-yml
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job
  2018-10-28 23:58 [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Ricardo Martincoski
                   ` (2 preceding siblings ...)
  2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
@ 2018-10-31  9:13 ` Thomas Petazzoni
  2018-11-02  4:22   ` Ricardo Martincoski
  3 siblings, 1 reply; 35+ messages in thread
From: Thomas Petazzoni @ 2018-10-31  9:13 UTC (permalink / raw)
  To: buildroot

Hello Ricardo,

On Sun, 28 Oct 2018 20:58:36 -0300, Ricardo Martincoski wrote:

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

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:

> $ 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
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job
  2018-10-31  9:13 ` [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Thomas Petazzoni
@ 2018-11-02  4:22   ` Ricardo Martincoski
  0 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2018-11-02  4:22 UTC (permalink / raw)
  To: buildroot

Hello Thomas,

On Wed, Oct 31, 2018 at 06:13 AM, Thomas Petazzoni wrote:

> On Sun, 28 Oct 2018 20:58:36 -0300, Ricardo Martincoski wrote:
> 
>> 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.
> 
> 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:
> 
>> $ 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.

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

> 
>  - 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)

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.

> 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+])?$/

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

> 
> 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger per type of job
  2018-10-28 23:58 ` [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger " Ricardo Martincoski
@ 2018-12-09 20:29   ` Thomas Petazzoni
  0 siblings, 0 replies; 35+ messages in thread
From: Thomas Petazzoni @ 2018-12-09 20:29 UTC (permalink / raw)
  To: buildroot

Hello,

On Sun, 28 Oct 2018 20:58:37 -0300, Ricardo Martincoski wrote:
> 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
> 
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>

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
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation
  2018-10-28 23:58 ` [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation Ricardo Martincoski
@ 2018-12-09 20:32   ` Thomas Petazzoni
  0 siblings, 0 replies; 35+ messages in thread
From: Thomas Petazzoni @ 2018-12-09 20:32 UTC (permalink / raw)
  To: buildroot

Hello,

On Sun, 28 Oct 2018 20:58:38 -0300, Ricardo Martincoski wrote:
> 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.
> 
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>

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

> diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> new file mode 100755
> index 0000000000..d824f669b5
> --- /dev/null
> +++ b/support/scripts/generate-gitlab-ci-yml
> @@ -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}"

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
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
@ 2018-12-09 20:59   ` Thomas Petazzoni
  2019-01-16 22:57     ` Ricardo Martincoski
  2018-12-10 13:30   ` Matthew Weber
  2019-01-16 22:45   ` [Buildroot] [PATCH v2] " Ricardo Martincoski
  2 siblings, 1 reply; 35+ messages in thread
From: Thomas Petazzoni @ 2018-12-09 20:59 UTC (permalink / raw)
  To: buildroot

Hello,

On Sun, 28 Oct 2018 20:58:39 -0300, Ricardo Martincoski wrote:

> diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> index d824f669b5..9efa775f88 100755
> --- a/support/scripts/generate-gitlab-ci-yml
> +++ b/support/scripts/generate-gitlab-ci-yml
> @@ -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}"  

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:

diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
index 431911d370..110de0b207 100755
--- a/support/scripts/generate-gitlab-ci-yml
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2018-12-09 20:59   ` Thomas Petazzoni
@ 2018-12-10 13:30   ` Matthew Weber
  2018-12-13 16:55     ` Matthew Weber
  2019-01-16 22:45   ` [Buildroot] [PATCH v2] " Ricardo Martincoski
  2 siblings, 1 reply; 35+ messages in thread
From: Matthew Weber @ 2018-12-10 13:30 UTC (permalink / raw)
  To: buildroot

Ricardo,

On Sun, Oct 28, 2018 at 6:59 PM Ricardo Martincoski
<ricardo.martincoski@gmail.com> wrote:
>
> 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.

>
> 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.
>
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> ---
> 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(-)
>
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index d84c283dbc..c6fc755c9b 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -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$/
> diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> index d824f669b5..9efa775f88 100755
> --- a/support/scripts/generate-gitlab-ci-yml
> +++ b/support/scripts/generate-gitlab-ci-yml
> @@ -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



-- 

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.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-12-10 13:30   ` Matthew Weber
@ 2018-12-13 16:55     ` Matthew Weber
  2019-01-09 14:57       ` Matthew Weber
  0 siblings, 1 reply; 35+ messages in thread
From: Matthew Weber @ 2018-12-13 16:55 UTC (permalink / raw)
  To: buildroot

Ricardo / Thomas / Yann,


On Mon, Dec 10, 2018 at 7:30 AM Matthew Weber
<matthew.weber@rockwellcollins.com> wrote:
>
> Ricardo,
>
> On Sun, Oct 28, 2018 at 6:59 PM Ricardo Martincoski
> <ricardo.martincoski@gmail.com> wrote:
> >
> > 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.
>
> >
> > 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?

> > 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.
> >
> > Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> > Cc: Arnout Vandecappelle <arnout@mind.be>
> > ---
> > 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(-)
> >
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index d84c283dbc..c6fc755c9b 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -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$/
> > diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> > index d824f669b5..9efa775f88 100755
> > --- a/support/scripts/generate-gitlab-ci-yml
> > +++ b/support/scripts/generate-gitlab-ci-yml
> > @@ -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
>
>
>
> --
>
> 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.



-- 

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.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-12-13 16:55     ` Matthew Weber
@ 2019-01-09 14:57       ` Matthew Weber
  2019-01-11  2:52         ` Ricardo Martincoski
  0 siblings, 1 reply; 35+ messages in thread
From: Matthew Weber @ 2019-01-09 14:57 UTC (permalink / raw)
  To: buildroot

Ricardo,

On Thu, Dec 13, 2018 at 10:55 AM Matthew Weber
<matthew.weber@rockwellcollins.com> wrote:
>
> Ricardo / Thomas / Yann,
>
>
> On Mon, Dec 10, 2018 at 7:30 AM Matthew Weber
> <matthew.weber@rockwellcollins.com> wrote:
> >
> > Ricardo,
> >
> > On Sun, Oct 28, 2018 at 6:59 PM Ricardo Martincoski
> > <ricardo.martincoski@gmail.com> wrote:
> > >
> > > 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.
> >
> > >
> > > 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?
>

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

> > > 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.
> > >
> > > Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> > > Cc: Arnout Vandecappelle <arnout@mind.be>
> > > ---
> > > 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(-)
> > >
> > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > > index d84c283dbc..c6fc755c9b 100644
> > > --- a/.gitlab-ci.yml
> > > +++ b/.gitlab-ci.yml
> > > @@ -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$/
> > > diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> > > index d824f669b5..9efa775f88 100755
> > > --- a/support/scripts/generate-gitlab-ci-yml
> > > +++ b/support/scripts/generate-gitlab-ci-yml
> > > @@ -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
> >
> >
> >
> > --
> >
> > 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.
>
>
>
> --
>
> 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.



-- 

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.

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2019-01-09 14:57       ` Matthew Weber
@ 2019-01-11  2:52         ` Ricardo Martincoski
  0 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-11  2:52 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, Jan 09, 2019 at 12:57 PM, Matthew Weber wrote:

> On Thu, Dec 13, 2018 at 10:55 AM Matthew Weber
> <matthew.weber@rockwellcollins.com> wrote:
>>
>> On Mon, Dec 10, 2018 at 7:30 AM Matthew Weber
>> <matthew.weber@rockwellcollins.com> wrote:
[snip]
>>
>> 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.

>>
>> 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v2] .gitlab-ci.yml: add trigger per job
  2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2018-12-09 20:59   ` Thomas Petazzoni
  2018-12-10 13:30   ` Matthew Weber
@ 2019-01-16 22:45   ` Ricardo Martincoski
  2019-01-18 10:21     ` Arnout Vandecappelle
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
  2 siblings, 2 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-16 22:45 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Matt Weber <matthew.weber@rockwellcollins.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 79daebf160..61043194f9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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$/
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index d5eab91c70..97df3bafe9 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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
diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
index 431911d370..5e3482a9f2 100755
--- a/support/scripts/generate-gitlab-ci-yml
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job
  2018-12-09 20:59   ` Thomas Petazzoni
@ 2019-01-16 22:57     ` Ricardo Martincoski
  0 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-16 22:57 UTC (permalink / raw)
  To: buildroot

Hello,

On Sun, Dec 09, 2018 at 06:59 PM, Thomas Petazzoni wrote:

> On Sun, 28 Oct 2018 20:58:39 -0300, Ricardo Martincoski wrote:
> 
>> diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
>> index d824f669b5..9efa775f88 100755
>> --- a/support/scripts/generate-gitlab-ci-yml
>> +++ b/support/scripts/generate-gitlab-ci-yml
>> @@ -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}"  
> 
> 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:
> 
> diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
> index 431911d370..110de0b207 100755
> --- a/support/scripts/generate-gitlab-ci-yml
> +++ b/support/scripts/generate-gitlab-ci-yml
> @@ -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 ?

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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v2] .gitlab-ci.yml: add trigger per job
  2019-01-16 22:45   ` [Buildroot] [PATCH v2] " Ricardo Martincoski
@ 2019-01-18 10:21     ` Arnout Vandecappelle
  2019-01-20 20:21       ` Ricardo Martincoski
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
  1 sibling, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-01-18 10:21 UTC (permalink / raw)
  To: buildroot

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

On 16/01/2019 23:45, Ricardo Martincoski wrote:

> +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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v2] .gitlab-ci.yml: add trigger per job
  2019-01-18 10:21     ` Arnout Vandecappelle
@ 2019-01-20 20:21       ` Ricardo Martincoski
  0 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-20 20:21 UTC (permalink / raw)
  To: buildroot

Hello,

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

[snip]
> On 16/01/2019 23:45, Ricardo Martincoski wrote:
> 
>> +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} ...

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.

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

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

> 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and add trigger per job
  2019-01-16 22:45   ` [Buildroot] [PATCH v2] " Ricardo Martincoski
  2019-01-18 10:21     ` Arnout Vandecappelle
@ 2019-01-21  1:11     ` Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword Ricardo Martincoski
                         ` (5 more replies)
  1 sibling, 6 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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 <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

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%)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
@ 2019-01-21  1:11       ` Ricardo Martincoski
  2019-02-06 10:53         ` Arnout Vandecappelle
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword Ricardo Martincoski
                         ` (4 subsequent siblings)
  5 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 79daebf160..a8209d76e6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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 }
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index d5eab91c70..a506840892 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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:
diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
index 431911d370..262a7649b2 100755
--- a/support/scripts/generate-gitlab-ci-yml
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword Ricardo Martincoski
@ 2019-01-21  1:11       ` Ricardo Martincoski
  2019-02-06 10:59         ` Arnout Vandecappelle
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 3/5] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
                         ` (3 subsequent siblings)
  5 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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%)

diff --git a/.gitlab-ci.yml.in b/.gitlab-ci-template.yml
similarity index 94%
rename from .gitlab-ci.yml.in
rename to .gitlab-ci-template.yml
index a506840892..83b93d5aaa 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci-template.yml
@@ -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
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a8209d76e6..75c30a4653 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,89 +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".
-
-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.
-    # The initial ! is removed by YAML so we need to quote it.
-    script:
-        - "! utils/get-developers | grep -v 'No action specified'"
-
-check-flake8:
-    before_script:
-        # Help flake8 to find the Python files without .py extension.
-        - find * -type f -name '*.py' > files.txt
-        - find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt
-        - sort -u files.txt | tee files.processed
-    script:
-        - python -m flake8 --statistics --count $(cat files.processed)
-    after_script:
-        - wc -l files.processed
-
-check-package:
-    script:
-        - make check-package
-
-.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$/
-    artifacts:
-        when: always
-        expire_in: 2 weeks
-        paths:
-            - .config
-            - build.log
-            - output/images/
-            - output/build/build-time.log
-            - output/build/packages-file-list.txt
-            - output/build/*/.config
-
-.runtime_test:
-    # 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}
-    artifacts:
-        when: always
-        expire_in: 2 weeks
-        paths:
-            - test-output/*.log
-            - test-output/*/.config
-            - test-output/*/images/*
+# 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'
 aarch64_efi_defconfig: { extends: .defconfig }
 acmesystems_aria_g25_128mb_defconfig: { extends: .defconfig }
 acmesystems_aria_g25_256mb_defconfig: { extends: .defconfig }
diff --git a/Makefile b/Makefile
index a382a5defb..27412320bd 100644
--- a/Makefile
+++ b/Makefile
@@ -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)))
diff --git a/support/scripts/generate-gitlab-ci-yml b/support/scripts/generate-gitlab-ci-yml
index 262a7649b2..c50a5f1e82 100755
--- a/support/scripts/generate-gitlab-ci-yml
+++ b/support/scripts/generate-gitlab-ci-yml
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 3/5] .gitlab-ci.yml: reorder jobs
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword Ricardo Martincoski
@ 2019-01-21  1:11       ` Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 4/5] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
                         ` (2 subsequent siblings)
  5 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci-template.yml b/.gitlab-ci-template.yml
index 83b93d5aaa..f1dfcbcecb 100644
--- a/.gitlab-ci-template.yml
+++ b/.gitlab-ci-template.yml
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 4/5] .gitlab-ci.yml: prepare to reuse scripts
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
                         ` (2 preceding siblings ...)
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 3/5] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
@ 2019-01-21  1:11       ` Ricardo Martincoski
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 5/5] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
  5 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci-template.yml b/.gitlab-ci-template.yml
index f1dfcbcecb..59f3af36eb 100644
--- a/.gitlab-ci-template.yml
+++ b/.gitlab-ci-template.yml
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 5/5] .gitlab-ci.yml: add trigger per job
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
                         ` (3 preceding siblings ...)
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 4/5] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
@ 2019-01-21  1:11       ` Ricardo Martincoski
  2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
  5 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-01-21  1:11 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Matt Weber <matthew.weber@rockwellcollins.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci-template.yml b/.gitlab-ci-template.yml
index 59f3af36eb..297372d965 100644
--- a/.gitlab-ci-template.yml
+++ b/.gitlab-ci-template.yml
@@ -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')
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword Ricardo Martincoski
@ 2019-02-06 10:53         ` Arnout Vandecappelle
  0 siblings, 0 replies; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-02-06 10:53 UTC (permalink / raw)
  To: buildroot



On 21/01/2019 02:11, Ricardo Martincoski wrote:
> 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.
> 
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

 Applied to master, thanks.

 Regards,
 Arnout

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword Ricardo Martincoski
@ 2019-02-06 10:59         ` Arnout Vandecappelle
  2019-04-08  3:22           ` Ricardo Martincoski
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-02-06 10:59 UTC (permalink / raw)
  To: buildroot



On 21/01/2019 02:11, Ricardo Martincoski wrote:
> 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword
  2019-02-06 10:59         ` Arnout Vandecappelle
@ 2019-04-08  3:22           ` Ricardo Martincoski
  0 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-08  3:22 UTC (permalink / raw)
  To: buildroot

Hello,

Sorry for the long delay in answering.

On Wed, Feb 06, 2019 at 08:59 AM, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 21/01/2019 02:11, Ricardo Martincoski wrote:
>> 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...

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

> 
>  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

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

>  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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and add trigger per job
  2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
                         ` (4 preceding siblings ...)
  2019-01-21  1:11       ` [Buildroot] [PATCH v3 5/5] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
@ 2019-04-08  3:22       ` Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
                           ` (2 more replies)
  5 siblings, 3 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-08  3:22 UTC (permalink / raw)
  To: buildroot

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(-)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs
  2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
@ 2019-04-08  3:22         ` Ricardo Martincoski
  2019-04-13 13:43           ` Arnout Vandecappelle
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 2/3] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-08  3:22 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 572868a557..58166364ad 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index a506840892..f519338d63 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 2/3] .gitlab-ci.yml: prepare to reuse scripts
  2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
@ 2019-04-08  3:22         ` Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
  2 siblings, 0 replies; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-08  3:22 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 58166364ad..44fdb94f65 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index f519338d63..0b4c65b258 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job
  2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 2/3] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
@ 2019-04-08  3:22         ` Ricardo Martincoski
  2019-04-13 13:46           ` Arnout Vandecappelle
  2 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-08  3:22 UTC (permalink / raw)
  To: buildroot

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.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Matt Weber <matthew.weber@rockwellcollins.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
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(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 44fdb94f65..a38448e3df 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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 }
diff --git a/.gitlab-ci.yml.in b/.gitlab-ci.yml.in
index 0b4c65b258..b139144d6f 100644
--- a/.gitlab-ci.yml.in
+++ b/.gitlab-ci.yml.in
@@ -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,10 +109,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')
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
@ 2019-04-13 13:43           ` Arnout Vandecappelle
  0 siblings, 0 replies; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-04-13 13:43 UTC (permalink / raw)
  To: buildroot



On 08/04/2019 05:22, Ricardo Martincoski wrote:
> 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.
> 
> Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>


 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job
  2019-04-08  3:22         ` [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
@ 2019-04-13 13:46           ` Arnout Vandecappelle
  2019-04-22  1:27             ` Ricardo Martincoski
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-04-13 13:46 UTC (permalink / raw)
  To: buildroot



On 08/04/2019 05:22, Ricardo Martincoski wrote:
> 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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job
  2019-04-13 13:46           ` Arnout Vandecappelle
@ 2019-04-22  1:27             ` Ricardo Martincoski
  2019-04-22  7:19               ` Arnout Vandecappelle
  0 siblings, 1 reply; 35+ messages in thread
From: Ricardo Martincoski @ 2019-04-22  1:27 UTC (permalink / raw)
  To: buildroot

Hello,

On Sat, Apr 13, 2019 at 10:46 AM, Arnout Vandecappelle wrote:

> On 08/04/2019 05:22, Ricardo Martincoski wrote:
>> 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.

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

> 
>  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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job
  2019-04-22  1:27             ` Ricardo Martincoski
@ 2019-04-22  7:19               ` Arnout Vandecappelle
  2019-05-01 13:54                 ` Arnout Vandecappelle
  0 siblings, 1 reply; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-04-22  7:19 UTC (permalink / raw)
  To: buildroot



On 22/04/2019 03:27, Ricardo Martincoski wrote:
> Hello,
> 
> On Sat, Apr 13, 2019 at 10:46 AM, Arnout Vandecappelle wrote:
> 
>> On 08/04/2019 05:22, Ricardo Martincoski wrote:
>>> 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.

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

 So no, that was not at all my intention.


>>  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

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job
  2019-04-22  7:19               ` Arnout Vandecappelle
@ 2019-05-01 13:54                 ` Arnout Vandecappelle
  0 siblings, 0 replies; 35+ messages in thread
From: Arnout Vandecappelle @ 2019-05-01 13:54 UTC (permalink / raw)
  To: buildroot



On 22/04/2019 09:19, Arnout Vandecappelle wrote:
>>>  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

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2019-05-01 13:54 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-28 23:58 [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Ricardo Martincoski
2018-10-28 23:58 ` [Buildroot] [PATCH 1/3] .gitlab-ci.yml: add trigger " Ricardo Martincoski
2018-12-09 20:29   ` Thomas Petazzoni
2018-10-28 23:58 ` [Buildroot] [PATCH 2/3] Makefile: offload .gitlab-ci.yml generation Ricardo Martincoski
2018-12-09 20:32   ` Thomas Petazzoni
2018-10-28 23:58 ` [Buildroot] [PATCH 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
2018-12-09 20:59   ` Thomas Petazzoni
2019-01-16 22:57     ` Ricardo Martincoski
2018-12-10 13:30   ` Matthew Weber
2018-12-13 16:55     ` Matthew Weber
2019-01-09 14:57       ` Matthew Weber
2019-01-11  2:52         ` Ricardo Martincoski
2019-01-16 22:45   ` [Buildroot] [PATCH v2] " Ricardo Martincoski
2019-01-18 10:21     ` Arnout Vandecappelle
2019-01-20 20:21       ` Ricardo Martincoski
2019-01-21  1:11     ` [Buildroot] [PATCH v3 0/5] .gitlab-ci.yml: rework and " Ricardo Martincoski
2019-01-21  1:11       ` [Buildroot] [PATCH v3 1/5] .gitlab-ci.yml: use "extends" keyword Ricardo Martincoski
2019-02-06 10:53         ` Arnout Vandecappelle
2019-01-21  1:11       ` [Buildroot] [PATCH v3 2/5] .gitlab-ci.yml: use "include" keyword Ricardo Martincoski
2019-02-06 10:59         ` Arnout Vandecappelle
2019-04-08  3:22           ` Ricardo Martincoski
2019-01-21  1:11       ` [Buildroot] [PATCH v3 3/5] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
2019-01-21  1:11       ` [Buildroot] [PATCH v3 4/5] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
2019-01-21  1:11       ` [Buildroot] [PATCH v3 5/5] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
2019-04-08  3:22       ` [Buildroot] [PATCH v4 0/3] .gitlab-ci.yml: rework and " Ricardo Martincoski
2019-04-08  3:22         ` [Buildroot] [PATCH v4 1/3] .gitlab-ci.yml: reorder jobs Ricardo Martincoski
2019-04-13 13:43           ` Arnout Vandecappelle
2019-04-08  3:22         ` [Buildroot] [PATCH v4 2/3] .gitlab-ci.yml: prepare to reuse scripts Ricardo Martincoski
2019-04-08  3:22         ` [Buildroot] [PATCH v4 3/3] .gitlab-ci.yml: add trigger per job Ricardo Martincoski
2019-04-13 13:46           ` Arnout Vandecappelle
2019-04-22  1:27             ` Ricardo Martincoski
2019-04-22  7:19               ` Arnout Vandecappelle
2019-05-01 13:54                 ` Arnout Vandecappelle
2018-10-31  9:13 ` [Buildroot] [PATCH 0/3] .gitlab-ci.yml: add trigger per job and per type of job Thomas Petazzoni
2018-11-02  4:22   ` Ricardo Martincoski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.