diff mbox series

[8/9] gitlab-ci: Run Avocado tests manually (except mainstream CI)

Message ID 20210525082556.4011380-9-f4bug@amsat.org (mailing list archive)
State New, archived
Headers show
Series gitlab-ci: Make mainstream CI green again | expand

Commit Message

Philippe Mathieu-Daudé May 25, 2021, 8:25 a.m. UTC
Due to a design problem and misunderstanding between the Avocado
framework and QEMU, Avocado is fetching many asset artifacts it
shouldn't be fetching, exhausting the jobs CI timeout.

Since Avocado artifacts are cached, this is not an issue with old
forks, which already have populated the cache and do not need to
download new artifacts to run the tests.

However this is very confusing to new contributors who start to
fork the project and keep having failing CI pipelines.

As a temporary kludge, add the QEMU_CI_AVOCADO_TESTING variable
to allow old forks to keep running the Avocado tests, while still
allowing new forks to use the mainstream set of CI tests.

Keep the tests enabled by default on the mainstream namespace
which is old enough to have a populated cache, hoping we will
keep this cache long enough until the Avocado/QEMU design issue
is fixed.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
Since it is not clear which project should be modified, there is
no issue filled to track the progress on fixing this problem.
---
 .gitlab-ci.d/buildtest-template.yml | 12 ++++++++++++
 .gitlab-ci.yml                      | 24 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

Comments

Alex Bennée May 25, 2021, 11:25 a.m. UTC | #1
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:

> Due to a design problem and misunderstanding between the Avocado
> framework and QEMU, Avocado is fetching many asset artifacts it
> shouldn't be fetching, exhausting the jobs CI timeout.
>
> Since Avocado artifacts are cached, this is not an issue with old
> forks, which already have populated the cache and do not need to
> download new artifacts to run the tests.
>
> However this is very confusing to new contributors who start to
> fork the project and keep having failing CI pipelines.
>
> As a temporary kludge, add the QEMU_CI_AVOCADO_TESTING variable
> to allow old forks to keep running the Avocado tests, while still
> allowing new forks to use the mainstream set of CI tests.
>
> Keep the tests enabled by default on the mainstream namespace
> which is old enough to have a populated cache, hoping we will
> keep this cache long enough until the Avocado/QEMU design issue
> is fixed.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Thomas Huth May 27, 2021, 6:08 a.m. UTC | #2
On 25/05/2021 10.25, Philippe Mathieu-Daudé wrote:
> Due to a design problem and misunderstanding between the Avocado
> framework and QEMU, Avocado is fetching many asset artifacts it
> shouldn't be fetching, exhausting the jobs CI timeout.
> 
> Since Avocado artifacts are cached, this is not an issue with old
> forks, which already have populated the cache and do not need to
> download new artifacts to run the tests.
> 
> However this is very confusing to new contributors who start to
> fork the project and keep having failing CI pipelines.
> 
> As a temporary kludge, add the QEMU_CI_AVOCADO_TESTING variable
> to allow old forks to keep running the Avocado tests, while still
> allowing new forks to use the mainstream set of CI tests.

This definitely needs to be documented in docs/devel/testing.rst ... could 
you please come up with a patch that describes this variable for newbies there?

  Thanks,
   Thomas
diff mbox series

Patch

diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-template.yml
index 180bf1aee7e..8e6321c2a38 100644
--- a/.gitlab-ci.d/buildtest-template.yml
+++ b/.gitlab-ci.d/buildtest-template.yml
@@ -67,3 +67,15 @@ 
   after_script:
     - cd build
     - du -chs ${CI_PROJECT_DIR}/avocado-cache
+  rules:
+    # Only run these jobs if running on the mainstream namespace,
+    # or if the user set the QEMU_CI_AVOCADO_TESTING variable (either
+    # in its namespace setting or via git-push option, see documentation
+    # in /.gitlab-ci.yml of this repository).
+    - if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
+      when: always
+    - if: '$QEMU_CI_AVOCADO_TESTING'
+      when: always
+    # Otherwise, set to manual (the jobs are created but not run).
+    - when: manual
+      allow_failure: true
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8c843e5f20e..830c5b7af97 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,5 +12,29 @@ 
 # location of your custom .gitlab-ci.yml:
 # https://docs.gitlab.com/ee/ci/pipelines/settings.html#custom-cicd-configuration-path
 #
+# ----------------------------------------------------------------------
+#
+# QEMU CI jobs are based on templates. Some templates provide
+# user-configurable options, modifiable via configuration variables.
+#
+# These variables can be set globally in the user's CI namespace
+# setting:
+# https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui
+# or set manually each time a branch/tag is pushed, as a git-push
+# command line argument:
+# https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
+#
+# Example setting the QEMU_CI_EXAMPLE_VAR variable:
+#
+#   git push -o ci.variable="QEMU_CI_EXAMPLE_VAR=value" myrepo mybranch
+#
+# ----------------------------------------------------------------------
+#
+# List of environment variables that can be use to modify the set
+# of jobs selected:
+#
+# - QEMU_CI_AVOCADO_TESTING
+#   If set, tests using the Avocado framework will be run
+
 include:
   - local: '/.gitlab-ci.d/qemu-project.yml'