Users expect images pulled from registry.gitlab.com/qemu-project/qemu/ to be stable. QEMU repository workflow pushes merge candidates to the /staging branch, and on success the same commit is pushed as /master. If /staging fails, we do not want to push the built images to the registry. Therefore limit the 'docker push' command to the /master branch on the mainstream CI. The fork behavior is unchanged.
Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- .gitlab-ci.d/container-template.yml | 11 ++++++++++- .gitlab-ci.d/edk2.yml | 11 ++++++++++- .gitlab-ci.d/opensbi.yml | 11 ++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.d/container-template.yml b/.gitlab-ci.d/container-template.yml index 1baecd94606..0a736644b22 100644 --- a/.gitlab-ci.d/container-template.yml +++ b/.gitlab-ci.d/container-template.yml @@ -16,6 +16,15 @@ -t "qemu/$NAME" -f "tests/docker/dockerfiles/$NAME.docker" -r $CI_REGISTRY/qemu-project/qemu - docker tag "qemu/$NAME" "$TAG" - - docker push "$TAG" + # On mainstream CI, we only want to push images on the master branch, + # so skip the other cases (tag or non-master branch). + - if test "$CI_PROJECT_NAMESPACE" = "qemu-project" && + test -n "$CI_COMMIT_TAG" + -o "$CI_COMMIT_BRANCH" != "$CI_DEFAULT_BRANCH"; + then + :; + else + docker push "$TAG"; + fi after_script: - docker logout diff --git a/.gitlab-ci.d/edk2.yml b/.gitlab-ci.d/edk2.yml index 13d0f8b019f..e15f80f4874 100644 --- a/.gitlab-ci.d/edk2.yml +++ b/.gitlab-ci.d/edk2.yml @@ -33,7 +33,16 @@ docker-edk2: - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $IMAGE_TAG .gitlab-ci.d/edk2 - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - - docker push $IMAGE_TAG + # On mainstream CI, we only want to push images on the master branch, + # so skip the other cases (tag or non-master branch). + - if test "$CI_PROJECT_NAMESPACE" = "qemu-project" && + test -n "$CI_COMMIT_TAG" + -o "$CI_COMMIT_BRANCH" != "$CI_DEFAULT_BRANCH"; + then + :; + else + docker push "$IMAGE_TAG"; + fi build-edk2: extends: .edk2_job_rules diff --git a/.gitlab-ci.d/opensbi.yml b/.gitlab-ci.d/opensbi.yml index 5e0a2477c5d..a38ccbe5baa 100644 --- a/.gitlab-ci.d/opensbi.yml +++ b/.gitlab-ci.d/opensbi.yml @@ -34,7 +34,16 @@ docker-opensbi: - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $IMAGE_TAG .gitlab-ci.d/opensbi - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - - docker push $IMAGE_TAG + # On mainstream CI, we only want to push images on the master branch, + # so skip the other cases (tag or non-master branch). + - if test "$CI_PROJECT_NAMESPACE" = "qemu-project" && + test -n "$CI_COMMIT_TAG" + -o "$CI_COMMIT_BRANCH" != "$CI_DEFAULT_BRANCH"; + then + :; + else + docker push "$IMAGE_TAG"; + fi build-opensbi: extends: .opensbi_job_rules -- 2.31.1