From 7f2d230012f1dd51156d256270d56edda63e140e Mon Sep 17 00:00:00 2001 From: Timo Furrer <tfurrer@gitlab.com> Date: Wed, 27 Mar 2024 09:31:43 +0100 Subject: [PATCH] Check tag for semantic version early --- .gitlab-ci.yml | 10 +++++++++- .gitlab/scripts/check-semantic-version.sh | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100755 .gitlab/scripts/check-semantic-version.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7a59d54..f9ee486 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,6 +70,14 @@ variables: GITLAB_OPENTOFU_IMAGE_BASE: "$CI_REGISTRY_IMAGE/internal" GITLAB_OPENTOFU_IMAGE_NAME: "$GITLAB_OPENTOFU_IMAGE_BASE/gitlab-opentofu:$CI_COMMIT_SHA-opentofu$OPENTOFU_VERSION" +check-semantic-version: + stage: .pre + rules: + - if: $CI_COMMIT_TAG + image: alpine:latest + script: + - echo -n "$CI_COMMIT_TAG" | ./.gitlab/scripts/check-semantic-version.sh + gitlab-opentofu-image:build: extends: .opentofu-versions stage: build @@ -223,7 +231,7 @@ create-release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - - if: $CI_COMMIT_TAG =~ /\d+/ + - if: $CI_COMMIT_TAG before_script: - apk add --update yq envsubst script: diff --git a/.gitlab/scripts/check-semantic-version.sh b/.gitlab/scripts/check-semantic-version.sh new file mode 100755 index 0000000..5cfd501 --- /dev/null +++ b/.gitlab/scripts/check-semantic-version.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + +# Regex from https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +SEMANTIC_VERSION_REGEX='^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' + +cat - | grep -qE "$SEMANTIC_VERSION_REGEX" -- GitLab