@@ -52,24 +52,50 @@ jobs:
5252 node-version : 22
5353 cache : " pnpm"
5454
55- - name : Bump minor version
55+ - name : Compute version from git tags
5656 id : version
5757 run : |
58- CURRENT_VERSION=$(jq -r .version apps/array/package.json)
59- MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
60- MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2)
61- NEW_VERSION="${MAJOR}.$((MINOR + 1)).0"
62- echo "Bumping version from $CURRENT_VERSION to $NEW_VERSION"
58+ # Find the latest minor version tag (vX.Y format - exactly 2 parts)
59+ # These are manually created to mark new minor releases
60+ # Release tags (vX.Y.Z) are ignored for base version calculation
61+ LATEST_TAG=$(git tag --list 'v[0-9]*.[0-9]*' --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+$' | head -1)
62+
63+ # Fall back to vX.Y.0 format if no vX.Y tags exist (backward compat)
64+ if [ -z "$LATEST_TAG" ]; then
65+ LATEST_TAG=$(git tag --list 'v[0-9]*.[0-9]*.0' --sort=-v:refname | head -1)
66+ fi
67+
68+ if [ -z "$LATEST_TAG" ]; then
69+ echo "No version tag found. Create one with: git tag v0.15 && git push origin v0.15"
70+ exit 1
71+ fi
72+
73+ # Extract major.minor from tag
74+ VERSION_PART=${LATEST_TAG#v}
75+ MAJOR=$(echo "$VERSION_PART" | cut -d. -f1)
76+ MINOR=$(echo "$VERSION_PART" | cut -d. -f2)
77+
78+ # Count commits since the base tag
79+ PATCH=$(git rev-list "$LATEST_TAG"..HEAD --count)
6380
64- jq --arg v "$NEW_VERSION" '.version = $v' apps/array/package.json > tmp.json && mv tmp.json apps/array/package.json
81+ if [ "$PATCH" -eq 0 ]; then
82+ echo "No commits since $LATEST_TAG. Nothing to release."
83+ exit 1
84+ fi
6585
66- git config user.name "posthog-bot"
67- git config user.email "[email protected] " 68- git add apps/array/package.json
69- git commit -m "chore: bump version to $NEW_VERSION [skip ci]"
70- git push
86+ NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
87+ echo "Version: $NEW_VERSION (from base tag $LATEST_TAG + $PATCH commits)"
7188
7289 echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
90+ echo "base_tag=$LATEST_TAG" >> "$GITHUB_OUTPUT"
91+
92+ - name : Set version in package.json
93+ env :
94+ APP_VERSION : ${{ steps.version.outputs.version }}
95+ run : |
96+ # Update package.json for the build (not committed)
97+ jq --arg v "$APP_VERSION" '.version = $v' apps/array/package.json > tmp.json && mv tmp.json apps/array/package.json
98+ echo "Set apps/array/package.json version to $APP_VERSION"
7399
74100 - name : Install dependencies
75101 run : pnpm install --frozen-lockfile
0 commit comments