diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b2467d137d1d358504829a6ceda4722ffaffb77..55f41c7d90aa0eab16da1d8a5e75912a96b5b936 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,77 +175,39 @@ shellcheck: # - if: $CI_COMMIT_TAG # - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH -gitlab-opentofu-image:deploy:with-opentofu-version: - extends: .opentofu-versions +gitlab-opentofu-image:deploy: stage: deploy image: name: gcr.io/go-containerregistry/crane:debug entrypoint: [""] - variables: - RELEASE_IMAGE_NAME: "$CI_REGISTRY_IMAGE/gitlab-opentofu" + before_script: + - crane auth login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" + script: # OCI image tags are not compatible with semver, specifically the build metadata part # indicated with a `+` sign, see https://github.com/distribution/distribution/issues/1201 # We use a dash `-` here, instead of the `+`. # This may be problematic, because it indicates a semver prerelease. - RELEASE_SEMVER: "${CI_COMMIT_TAG}-opentofu${OPENTOFU_VERSION}" - RELEASE_IMAGE: "$RELEASE_IMAGE_NAME:$RELEASE_SEMVER" - before_script: - - crane auth login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - script: - - crane copy "$GITLAB_OPENTOFU_IMAGE_NAME" "$RELEASE_IMAGE" + - export RELEASE_IMAGE_NAME="$CI_REGISTRY_IMAGE/gitlab-opentofu" + - export RELEASE_IMAGE="${RELEASE_IMAGE_NAME}:${RELEASE_VERSION}${RELEASE_OPENTOFU_VERSION:+-opentofu$RELEASE_OPENTOFU_VERSION}" + - echo "Deploying $GITLAB_OPENTOFU_IMAGE_NAME as $RELEASE_IMAGE" + # - crane copy "$GITLAB_OPENTOFU_IMAGE_NAME" "$RELEASE_IMAGE" - 'echo "- \`$RELEASE_IMAGE\` (digest: \`$(crane digest $RELEASE_IMAGE)\`)" > image$CI_JOB_ID.md' artifacts: paths: - 'image*.md' - rules: - - if: $CI_COMMIT_TAG - -gitlab-opentofu-image:deploy:latest-with-opentofu-version: - extends: .opentofu-versions - stage: deploy - image: - name: gcr.io/go-containerregistry/crane:debug - entrypoint: [""] - variables: - RELEASE_IMAGE_NAME: "$CI_REGISTRY_IMAGE/gitlab-opentofu" - RELEASE_SEMVER: "latest-opentofu${OPENTOFU_VERSION}" - RELEASE_IMAGE: "$RELEASE_IMAGE_NAME:$RELEASE_SEMVER" - before_script: - - crane auth login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - script: - - crane copy "$GITLAB_OPENTOFU_IMAGE_NAME" "$RELEASE_IMAGE" - - 'echo "- \`$RELEASE_IMAGE\` (digest: \`$(crane digest $RELEASE_IMAGE)\`)" > image$CI_JOB_ID.md' - artifacts: - paths: - - 'image*.md' - rules: - - if: $CI_COMMIT_TAG - -gitlab-opentofu-image:deploy:latest: - stage: deploy - image: - name: gcr.io/go-containerregistry/crane:debug - entrypoint: [""] - variables: - OPENTOFU_VERSION: $LATEST_OPENTOFU_VERSION - RELEASE_IMAGE_NAME: "$CI_REGISTRY_IMAGE/gitlab-opentofu" - RELEASE_IMAGE: "$RELEASE_IMAGE_NAME:$RELEASE_IMAGE_TAG" - before_script: - - crane auth login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - script: - - crane copy "$GITLAB_OPENTOFU_IMAGE_NAME" "$RELEASE_IMAGE" - - 'echo "- \`$RELEASE_IMAGE\` (digest: \`$(crane digest $RELEASE_IMAGE)\`)" > image$CI_JOB_ID.md' - artifacts: - paths: - - 'image*.md' - rules: - - if: $CI_COMMIT_TAG parallel: matrix: - - RELEASE_IMAGE_TAG: ${CI_COMMIT_TAG} - - RELEASE_IMAGE_TAG: ${CI_COMMIT_TAG}-opentofulatest - - RELEASE_IMAGE_TAG: latest-opentofulatest - - RELEASE_IMAGE_TAG: latest + - OPENTOFU_VERSION: !reference [.data, supported_versions] + RELEASE_VERSION: $CI_COMMIT_TAG + RELEASE_OPENTOFU_VERSION: $OPENTOFU_VERSION + - OPENTOFU_VERSION: !reference [.data, supported_versions] + RELEASE_VERSION: latest + RELEASE_OPENTOFU_VERSION: $OPENTOFU_VERSION + - OPENTOFU_VERSION: $LATEST_OPENTOFU_VERSION + RELEASE_VERSION: ["${CI_COMMIT_TAG}", latest] + RELEASE_OPENTOFU_VERSION: ["", latest] + # rules: + # - if: $CI_COMMIT_TAG # If the pipeline is for a new tag with a semantic version, and all previous jobs succeed, # create the release.