|
29 | 29 | - name: Install dependencies |
30 | 30 | run: npm ci |
31 | 31 |
|
| 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 | + |
32 | 75 | - name: Generate ANTLR files |
33 | 76 | run: | |
34 | 77 | npm run antlr |
@@ -63,10 +106,8 @@ jobs: |
63 | 106 | # If triggered by a tag, use that tag |
64 | 107 | echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT |
65 | 108 | 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 |
70 | 111 | fi |
71 | 112 | |
72 | 113 | - name: Create pre-release |
|
83 | 124 | This is an automated pre-release build from branch `${{ github.ref_name }}`. |
84 | 125 | |
85 | 126 | **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 }} |
87 | 130 | - Commit: ${{ github.sha }} |
88 | 131 | - Branch: ${{ github.ref_name }} |
89 | 132 | - Build Time: ${{ github.run_id }} |
|
0 commit comments