gitlab: stable staging branches publish containers in a separate tag

If the stable staging branches publish containers under the 'latest' tag
they will clash with containers published on the primary staging branch,
as well  as with each other. This introduces logic that overrides the
container tag when jobs run against the stable staging branches.

The CI_COMMIT_REF_SLUG variable we use expands to the git branch name,
but with most special characters removed, such that it is valid as a
docker tag name. eg 'staging-8.0' will get a slug of 'staging-8-0'

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>
Message-Id: <20230608164018.2520330-4-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2023-06-08 17:40:16 +01:00 committed by Thomas Huth
parent 1ddd2ff9cd
commit e28112d007

View File

@ -1,7 +1,7 @@
variables: variables:
# On stable branches this needs changing. Should also be # On stable branches this is changed by later rules. Should also
# overridden per pipeline if running pipelines concurrently # be overridden per pipeline if running pipelines concurrently
# for different branches in contributor forks. # for different branches in contributor forks.
QEMU_CI_CONTAINER_TAG: latest QEMU_CI_CONTAINER_TAG: latest
@ -16,6 +16,9 @@ variables:
# Thus we group them into a number of stages, ordered from # Thus we group them into a number of stages, ordered from
# most restrictive to least restrictive # most restrictive to least restrictive
# #
# For pipelines running for stable "staging-X.Y" branches
# we must override QEMU_CI_CONTAINER_TAG
#
.base_job_template: .base_job_template:
variables: variables:
# Each script line from will be in a collapsible section in the job output # Each script line from will be in a collapsible section in the job output
@ -61,11 +64,23 @@ variables:
############################################################# #############################################################
# Optional jobs should not be run unless manually triggered # Optional jobs should not be run unless manually triggered
- if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: manual
allow_failure: true
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
- if: '$QEMU_JOB_OPTIONAL' - if: '$QEMU_JOB_OPTIONAL'
when: manual when: manual
allow_failure: true allow_failure: true
# Skipped jobs should not be run unless manually triggered # Skipped jobs should not be run unless manually triggered
- if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: manual
allow_failure: true
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
- if: '$QEMU_JOB_SKIPPED' - if: '$QEMU_JOB_SKIPPED'
when: manual when: manual
allow_failure: true allow_failure: true
@ -87,4 +102,9 @@ variables:
when: manual when: manual
# Jobs can run if any jobs they depend on were successful # Jobs can run if any jobs they depend on were successful
- if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
when: on_success
variables:
QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
- when: on_success - when: on_success