From ac83fe6c41521e5e29525f316939d782122cf1a1 Mon Sep 17 00:00:00 2001 From: Patrick Mahnke-Hartmann Date: Fri, 19 Sep 2025 15:07:02 +0200 Subject: [PATCH] added auto incremental tagging --- .github/workflows/build.yml | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2efe50..f9b4762 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,19 +100,35 @@ jobs: outputs: tag_name: ${{ steps.set_tag.outputs.tag_name }} steps: - - name: Determine tag name + - name: Determine next semantic version tag id: set_tag run: | - if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then - TAG_NAME="${GITHUB_REF_NAME}" - elif [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then - TAG_NAME="latest" - elif [[ "${GITHUB_REF}" == "refs/heads/development" ]]; then - TAG_NAME="development" + git fetch --tags + + # Find latest tag matching vX.Y.Z + latest_tag=$(git tag --list 'v*.*.*' --sort=-v:refname | head -n 1) + if [[ -z "$latest_tag" ]]; then + major=0 + minor=0 + patch=0 else - TAG_NAME="pr-$(echo "${GITHUB_REF}" | sed 's/refs\/heads\///' | tr '/' '-')" + version="${latest_tag#v}" + IFS='.' read -r major minor patch <<< "$version" fi - echo "tag_name=${TAG_NAME}" >> $GITHUB_OUTPUT + + if [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then + major=$((major + 1)) + minor=0 + patch=0 + elif [[ "${GITHUB_REF}" == "refs/heads/development" ]]; then + minor=$((minor + 1)) + patch=0 + else + patch=$((patch + 1)) + fi + + new_tag="v${major}.${minor}.${patch}" + echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT # audit: # name: Security Audit