Message ID | 20230608164018.2520330-3-berrange@redhat.com |
---|---|
State | New |
Headers | show |
Series | gitlab: improvements to handling of stable staging branches | expand |
On 08/06/2023 18.40, Daniel P. Berrangé wrote: > The CI rules have special logic for what happens in upstream. To enable > contributors who modify CI rules to test this logic, however, they need > to be able to override which repo is considered upstream. This > introduces the 'QEMU_CI_UPSTREAM' variable > > git push gitlab <branch> -o ci.variable=QEMU_CI_UPSTREAM=berrange > > to make it look as if my namespace is the actual upstream. Namespace in > this context refers to the path fragement in gitlab URLs that is above s/fragement/fragment/ > the repository. Typically this will be the contributor's gitlab login > name. > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > Reviewed-by: Michael Tokarev <mjt@tls.msk.ru> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > .gitlab-ci.d/base.yml | 19 ++++++++++++------- > docs/devel/ci-jobs.rst.inc | 6 ++++++ > 2 files changed, 18 insertions(+), 7 deletions(-) > > diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml > index fba9d31cc6..a1d734267a 100644 > --- a/.gitlab-ci.d/base.yml > +++ b/.gitlab-ci.d/base.yml > @@ -5,6 +5,11 @@ variables: > # for different branches in contributor forks. > QEMU_CI_CONTAINER_TAG: latest > > + # For purposes of CI rules, upstream is the gitlab.com/qemu-project > + # namespace. When testing CI, it might be usefult to override this > + # to point to a fork repo > + QEMU_CI_UPSTREAM: qemu-project > + > # The order of rules defined here is critically important. > # They are evaluated in order and first match wins. > # > @@ -30,23 +35,23 @@ variables: > when: never > > # Publishing jobs should only run on the default branch in upstream > - - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' > + - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' > when: never > > # Non-publishing jobs should only run on staging branches in upstream > - - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/' > + - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/' > when: never > > # Jobs only intended for forks should always be skipped on upstream > - - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"' > + - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' > when: never > > # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set > - - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' > + - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' > when: never > > # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set > - - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"' > + - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' > when: never > > > @@ -66,7 +71,7 @@ variables: > allow_failure: true > > # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset > - - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"' > + - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' > when: manual > allow_failure: true > > @@ -78,7 +83,7 @@ variables: > > # Forks pipeline jobs don't start automatically unless > # QEMU_CI=2 is set > - - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' > + - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' > when: manual > > # Jobs can run if any jobs they depend on were successful > diff --git a/docs/devel/ci-jobs.rst.inc b/docs/devel/ci-jobs.rst.inc > index f72537853b..f9ef14f2eb 100644 > --- a/docs/devel/ci-jobs.rst.inc > +++ b/docs/devel/ci-jobs.rst.inc > @@ -75,6 +75,12 @@ in a handful of namespaces > 'latest', but if running pipelines for different branches > concurrently, it should be overridden per pipeline. > > + * QEMU_CI_UPSTREAM - gitlab namespace that is considerd to be s/considerd/considered/ > + the 'upstream'. This defaults to 'qemu-project'. Contributors > + may choose to override this if they are modifying rules in > + base.yml and need to validate how they will operate when in > + an upstream context, as opposed to their fork context. > + > * nnn - other misc variables not falling into the above > categories, or using different names for historical reasons > and not yet converted. I can fix up the typos when picking up the patch, no need to resend. Reviewed-by: Thomas Huth <thuth@redhat.com>
diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml index fba9d31cc6..a1d734267a 100644 --- a/.gitlab-ci.d/base.yml +++ b/.gitlab-ci.d/base.yml @@ -5,6 +5,11 @@ variables: # for different branches in contributor forks. QEMU_CI_CONTAINER_TAG: latest + # For purposes of CI rules, upstream is the gitlab.com/qemu-project + # namespace. When testing CI, it might be usefult to override this + # to point to a fork repo + QEMU_CI_UPSTREAM: qemu-project + # The order of rules defined here is critically important. # They are evaluated in order and first match wins. # @@ -30,23 +35,23 @@ variables: when: never # Publishing jobs should only run on the default branch in upstream - - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' + - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' when: never # Non-publishing jobs should only run on staging branches in upstream - - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/' + - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/' when: never # Jobs only intended for forks should always be skipped on upstream - - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"' + - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' when: never # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set - - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' + - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' when: never # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set - - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"' + - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' when: never @@ -66,7 +71,7 @@ variables: allow_failure: true # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset - - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"' + - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' when: manual allow_failure: true @@ -78,7 +83,7 @@ variables: # Forks pipeline jobs don't start automatically unless # QEMU_CI=2 is set - - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' + - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' when: manual # Jobs can run if any jobs they depend on were successful diff --git a/docs/devel/ci-jobs.rst.inc b/docs/devel/ci-jobs.rst.inc index f72537853b..f9ef14f2eb 100644 --- a/docs/devel/ci-jobs.rst.inc +++ b/docs/devel/ci-jobs.rst.inc @@ -75,6 +75,12 @@ in a handful of namespaces 'latest', but if running pipelines for different branches concurrently, it should be overridden per pipeline. + * QEMU_CI_UPSTREAM - gitlab namespace that is considerd to be + the 'upstream'. This defaults to 'qemu-project'. Contributors + may choose to override this if they are modifying rules in + base.yml and need to validate how they will operate when in + an upstream context, as opposed to their fork context. + * nnn - other misc variables not falling into the above categories, or using different names for historical reasons and not yet converted.