image: docker:dind variables: CONTAINER_TEST_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" CONTAINER_RELEASE_IMAGE: "$CI_REGISTRY_IMAGE:latest" CONTAINER_TAGGED_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" stages: - build - release before_script: - docker info - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" build: stage: build script: - docker build --pull -t "$CONTAINER_TEST_IMAGE" . - docker push "$CONTAINER_TEST_IMAGE" release-image: stage: release script: - docker pull "$CONTAINER_TEST_IMAGE" - docker tag "$CONTAINER_TEST_IMAGE" "$CONTAINER_RELEASE_IMAGE" - docker push "$CONTAINER_RELEASE_IMAGE" only: - master tagged-image: stage: release script: - docker pull "$CONTAINER_TEST_IMAGE" - docker tag "$CONTAINER_TEST_IMAGE" "$CONTAINER_TAGGED_IMAGE" - docker push "$CONTAINER_TAGGED_IMAGE" only: - tags