build: handle cases where there is no tag
Build / build (push) Successful in 3m42s

This commit is contained in:
2026-03-20 23:20:29 -03:00
parent f01cf70179
commit 6d0fcc4204
+15 -4
View File
@@ -22,19 +22,31 @@ jobs:
if: ${{ github.event_name == 'push' }} if: ${{ github.event_name == 'push' }}
shell: bash shell: bash
run: | run: |
git fetch --tags --unshallow || true git fetch --tags || true
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.2.0")
# Determine last tag and log range
if git describe --tags --abbrev=0 >/dev/null 2>&1; then
LAST_TAG=$(git describe --tags --abbrev=0)
RANGE="${LAST_TAG}..HEAD"
else
LAST_TAG="v0.1.9"
RANGE="HEAD"
fi
# Calculate next version
IFS='.' read -r major minor patch <<< "${LAST_TAG#v}" IFS='.' read -r major minor patch <<< "${LAST_TAG#v}"
NEW_VERSION="$major.$minor.$((patch + 1))" NEW_VERSION="$major.$minor.$((patch + 1))"
NEW_TAG="v$NEW_VERSION" NEW_TAG="v$NEW_VERSION"
CHANGELOG=$(git log ${LAST_TAG}..HEAD --oneline | sed 's/^/* /') # Log commits
CHANGELOG=$(git log $RANGE --oneline | sed 's/^/* /')
[ -z "$CHANGELOG" ] && CHANGELOG="Maintenance build." [ -z "$CHANGELOG" ] && CHANGELOG="Maintenance build."
# Tag and push back to Gitea
git tag $NEW_TAG git tag $NEW_TAG
git push origin $NEW_TAG git push origin $NEW_TAG
# Set outputs for next steps
echo "version-string=$NEW_VERSION" >> $GITHUB_OUTPUT echo "version-string=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "changelog<<EOF" >> $GITHUB_OUTPUT echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "## What's Changed" >> $GITHUB_OUTPUT echo "## What's Changed" >> $GITHUB_OUTPUT
@@ -99,7 +111,6 @@ jobs:
- name: Package Build - name: Package Build
run: | run: |
# Use -not -path "*/CMakeFiles/*" to exclude the temporary "a.exe" files
EXE=$(find build -name "*.exe" -not -path "*/CMakeFiles/*" | head -1) EXE=$(find build -name "*.exe" -not -path "*/CMakeFiles/*" | head -1)
echo "Found EXE: $EXE" echo "Found EXE: $EXE"
mkdir -p release mkdir -p release