Skip to content

Commit cc82ea3

Browse files
committed
Update pre-release workflow to update package version with pre-release suffix
1 parent 1335027 commit cc82ea3

File tree

1 file changed

+48
-5
lines changed

1 file changed

+48
-5
lines changed

.github/workflows/pre-release.yml

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,49 @@ jobs:
2929
- name: Install dependencies
3030
run: npm ci
3131

32+
- name: Update package version with pre-release suffix
33+
id: version
34+
run: |
35+
# Get current version from package.json
36+
BASE_VERSION=$(node -p "require('./package.json').version")
37+
BRANCH_NAME="${{ github.ref_name }}"
38+
39+
# Find the latest pre-release tag for this branch pattern
40+
LATEST_TAG=$(git tag -l "*-${BRANCH_NAME}.*" --sort=-version:refname | head -n1)
41+
42+
if [ -z "$LATEST_TAG" ]; then
43+
# No previous pre-release found, start with 1
44+
PRE_RELEASE_NUMBER="1"
45+
else
46+
# Extract number from tag (format: something-alt.X)
47+
CURRENT_NUMBER=$(echo "$LATEST_TAG" | grep -o "\-${BRANCH_NAME}\.[0-9]\+" | sed "s/-${BRANCH_NAME}\.//")
48+
if [ -z "$CURRENT_NUMBER" ]; then
49+
# Fallback if pattern doesn't match
50+
PRE_RELEASE_NUMBER="1"
51+
else
52+
# Increment the number
53+
PRE_RELEASE_NUMBER=$((CURRENT_NUMBER + 1))
54+
fi
55+
fi
56+
57+
# Create new version with pre-release suffix
58+
NEW_VERSION="${BASE_VERSION}-${BRANCH_NAME}.${PRE_RELEASE_NUMBER}"
59+
60+
# Update package.json
61+
node -e "
62+
const fs = require('fs');
63+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
64+
pkg.version = '$NEW_VERSION';
65+
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
66+
"
67+
68+
echo "base_version=$BASE_VERSION" >> $GITHUB_OUTPUT
69+
echo "pre_release_number=$PRE_RELEASE_NUMBER" >> $GITHUB_OUTPUT
70+
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
71+
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
72+
73+
echo "✅ Updated version from $BASE_VERSION to $NEW_VERSION"
74+
3275
- name: Generate ANTLR files
3376
run: |
3477
npm run antlr
@@ -63,10 +106,8 @@ jobs:
63106
# If triggered by a tag, use that tag
64107
echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
65108
else
66-
# Generate a pre-release tag with timestamp
67-
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
68-
BRANCH_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9.-]/-/g')
69-
echo "tag=pre-${{ steps.package.outputs.version }}-$BRANCH_NAME-$TIMESTAMP" >> $GITHUB_OUTPUT
109+
# Use the updated version as the tag
110+
echo "tag=v${{ steps.version.outputs.new_version }}" >> $GITHUB_OUTPUT
70111
fi
71112
72113
- name: Create pre-release
@@ -83,7 +124,9 @@ jobs:
83124
This is an automated pre-release build from branch `${{ github.ref_name }}`.
84125
85126
**Package Info:**
86-
- Version: ${{ steps.package.outputs.version }}
127+
- Base Version: ${{ steps.version.outputs.base_version }}
128+
- Pre-release Version: ${{ steps.package.outputs.version }}
129+
- Pre-release Number: ${{ steps.version.outputs.pre_release_number }}
87130
- Commit: ${{ github.sha }}
88131
- Branch: ${{ github.ref_name }}
89132
- Build Time: ${{ github.run_id }}

0 commit comments

Comments
 (0)