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.
Reviewed-by: Willian Rampazzo <willi...@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> Message-Id: <20211026145509.1029274-1-phi...@redhat.com> --- .gitlab-ci.d/containers.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/containers.yml b/.gitlab-ci.d/containers.yml index 33e4046e233..57928e4fb11 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -17,7 +17,16 @@ -t "qemu/$NAME" -f "tests/docker/dockerfiles/$NAME.docker" -r $CI_REGISTRY_IMAGE - 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 ba7280605c4..b165cc95214 100644 --- a/.gitlab-ci.d/edk2.yml +++ b/.gitlab-ci.d/edk2.yml @@ -21,7 +21,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: stage: build diff --git a/.gitlab-ci.d/opensbi.yml b/.gitlab-ci.d/opensbi.yml index f66cd1d9089..908540daaf7 100644 --- a/.gitlab-ci.d/opensbi.yml +++ b/.gitlab-ci.d/opensbi.yml @@ -21,7 +21,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: stage: build -- 2.31.1