Skip to content

Commit 57b0492

Browse files
authored
fix: update release workflow for POSIX compliance
1 parent 4782d10 commit 57b0492

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

.github/workflows/release.yml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,29 @@ jobs:
2525
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2626
run: |
2727
set -e
28+
2829
COMMIT_MESSAGE=$(git log -1 --pretty=%B)
29-
if ! echo "$COMMIT_MESSAGE" | grep -E '^(feat!|feat:|fix:)'; then
30+
if ! echo "$COMMIT_MESSAGE" | grep -E '^(feat!|feat:|fix:)' >/dev/null; then
3031
echo "No release needed"
3132
exit 0
3233
fi
33-
34-
LATEST_TAG=$(git tag -l '[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | head -n 1)
34+
35+
# Fetch latest semver tag
36+
LATEST_TAG=$(git tag -l '[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | head -n 1 || true)
37+
LATEST_TAG=$(echo "$LATEST_TAG" | tr -d '[:space:]')
3538
CURRENT_VERSION="${LATEST_TAG:-0.0.0}"
36-
# Use POSIX-compatible method instead of here-string
39+
3740
IFS='.'; set -- "$CURRENT_VERSION"; MAJOR=$1; MINOR=$2; PATCH=$3
38-
41+
3942
case "$COMMIT_MESSAGE" in
4043
feat!*) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
4144
feat:*) MINOR=$((MINOR + 1)); PATCH=0 ;;
4245
fix:*) PATCH=$((PATCH + 1)) ;;
4346
esac
44-
47+
4548
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
46-
# Use proper variable expansion
4749
BRANCH_NAME="${GITHUB_REF_NAME}"
48-
50+
4951
if [ "$BRANCH_NAME" = "main" ]; then
5052
RELEASE_TAG="$NEW_VERSION"
5153
RELEASE_TITLE="Release $NEW_VERSION"
@@ -55,21 +57,21 @@ jobs:
5557
RELEASE_TITLE="Pre-release next-$NEW_VERSION"
5658
IS_PRERELEASE=true
5759
fi
58-
60+
5961
echo "Bumping version to $RELEASE_TAG"
6062
git config user.name "GitHub Actions"
6163
git config user.email "actions@github.com"
62-
# Properly quote variables
6364
git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
65+
6466
git tag -a "$RELEASE_TAG" -m "$RELEASE_TAG"
6567
git push origin "$RELEASE_TAG"
66-
67-
if [ -z "$LATEST_TAG" ]; then
68-
RELEASE_NOTES=$(git log --pretty=format:"- %s")
69-
else
68+
69+
if [ -n "$LATEST_TAG" ]; then
7070
RELEASE_NOTES=$(git log "$LATEST_TAG"..HEAD --pretty=format:"- %s")
71+
else
72+
RELEASE_NOTES=$(git log --pretty=format:"- %s")
7173
fi
72-
74+
7375
gh release create "$RELEASE_TAG" \
7476
--title "$RELEASE_TITLE" \
7577
--notes "$RELEASE_NOTES" \

0 commit comments

Comments
 (0)