diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index cd87e6d..e80879e 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -153,6 +153,8 @@ jobs: - name: Get latest tag id: get-latest-tag run: | + git fetch --tags --force + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo 'v0.0.0') echo $LATEST_TAG @@ -171,9 +173,23 @@ jobs: NEW_PATCH=$((PATCH + 1)) NEW_TAG="v${MAJOR}.${MINOR}.${NEW_PATCH}" - echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_OUTPUT + if git ls-remote --tags origin "refs/tags/$NEW_TAG" | grep -q "$NEW_TAG"; then + echo "Tag $NEW_TAG already exists remotely, skipping tag creation" + echo "NEW_TAG=" >> $GITHUB_OUTPUT + echo "TAG_EXISTS=true" >> $GITHUB_OUTPUT + else + echo "NEW_TAG=$NEW_TAG" >> $GITHUB_OUTPUT + echo "TAG_EXISTS=false" >> $GITHUB_OUTPUT + fi - - name: Push tag + - name: Push tag (if it doesn't exist) + if: steps.get-latest-tag.outputs.TAG_EXISTS == 'false' run: | git tag ${{ steps.get-latest-tag.outputs.NEW_TAG }} git push origin ${{ steps.get-latest-tag.outputs.NEW_TAG }} + echo "Successfully pushed tag: ${{ steps.get-latest-tag.outputs.NEW_TAG }}" + + - name: Skip tag push (tag already exists) + if: steps.get-latest-tag.outputs.TAG_EXISTS == 'true' + run: | + echo "Skipping tag push - tag ${{ steps.get-latest-tag.outputs.NEW_TAG }} already exists remotely"