image: docker:latest stages: - Build Base - Push Images 0-build-base: stage: Build Base artifacts: expire_in: 1 week paths: - ./Artifacts/ tags: - docker before_script: - mkdir ./Artifacts script: - docker build --pull --build-arg "RELEASE_VERSION=$RELEASE_VERSION" -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" . - docker save --output "./Artifacts/$CI_COMMIT_SHORT_SHA.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" 1A-push-dev: stage: Push Images dependencies: - 0-build-base tags: - docker before_script: - docker load --input "./Artifacts/$CI_COMMIT_SHORT_SHA.tar" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin script: - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:dev-$RELEASE_VERSION-$CI_PIPELINE_ID" - docker push "$CI_REGISTRY_IMAGE:dev-$RELEASE_VERSION-$CI_PIPELINE_ID" 1B-push-version: stage: Push Images dependencies: - 0-build-base tags: - docker when: manual before_script: - docker load --input "./Artifacts/$CI_COMMIT_SHORT_SHA.tar" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin script: - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:$RELEASE_VERSION" - docker push "$CI_REGISTRY_IMAGE:$RELEASE_VERSION" 1C-push-latest: stage: Push Images dependencies: - 0-build-base tags: - docker when: manual before_script: - docker load --input "./Artifacts/$CI_COMMIT_SHORT_SHA.tar" - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin script: - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest" - docker push "$CI_REGISTRY_IMAGE:latest"