@@ -74,21 +74,18 @@ jobs:
7474 - name : Determine Version
7575 id : bump_version
7676 run : |
77- set -e
77+ set -euo pipefail
7878 BRANCH_NAME=${GITHUB_REF##*/}
7979 echo "Branch: $BRANCH_NAME"
8080
8181 if [ "$BRANCH_NAME" == "release" ]; then
82- # беремо тільки стабільні теги vX.Y.Z
83- LAST_TAG=$(git tag --list "v[0-9]*.[0-9]*.[0-9]*" --sort=-creatordate | tail -n1)
82+ LAST_TAG=$(git tag --list "v[0-9]*.[0-9]*.[0-9]*" --sort=-v:refname | head -n1 || true)
8483 else
85- # беремо тільки dev/pre-release теги
86- LAST_TAG=$(git tag --list "v*-dev.*" --sort=-creatordate | tail -n1)
84+ LAST_TAG=$(git tag --list "v*-dev.*" --sort=-v:refname | head -n1 || true)
8785 fi
8886
8987 echo "Last tag: $LAST_TAG"
9088
91- # Розбираємо версію
9289 if [ -n "$LAST_TAG" ]; then
9390 BASE_VERSION=$(echo "$LAST_TAG" | sed 's/^v//' | sed 's/-dev.*//')
9491 MAJOR=$(echo "$BASE_VERSION" | cut -d. -f1)
9996 fi
10097 echo "Parsed version: $MAJOR.$MINOR.$PATCH"
10198
102- # Беремо коміти після тегу
99+ # Коміти після останнього тега (або всі, якщо ще немає тегів)
103100 if [ -n "$LAST_TAG" ]; then
104101 COMMITS=$(git log "$LAST_TAG"..HEAD --pretty=format:"%s")
105102 else
@@ -108,14 +105,13 @@ jobs:
108105
109106 # Визначаємо bump
110107 BUMP="patch"
111- if echo "$COMMITS" | grep -qE "^ BREAKING CHANGE:"; then
108+ if echo "$COMMITS" | grep -q " BREAKING CHANGE:"; then
112109 BUMP="major"
113- elif echo "$COMMITS" | grep -qE " ^feat:" ; then
110+ elif echo "$COMMITS" | grep -qE ' ^feat(\(|:)' ; then
114111 BUMP="minor"
115112 fi
116113 echo "Determined bump type: $BUMP"
117114
118- # Збільшуємо версію
119115 case $BUMP in
120116 major)
121117 MAJOR=$((MAJOR+1))
@@ -131,31 +127,23 @@ jobs:
131127 ;;
132128 esac
133129
134- # ⚠️ Overflow патча на мінор
135- PATCH_MAX=10
136- if [ "$PATCH" -ge "$PATCH_MAX" ]; then
137- PATCH=0
138- MINOR=$((MINOR+1))
139- fi
140-
141- # ⚠️ Overflow мінору на мейджор
142- MINOR_MAX=10
143- if [ "$MINOR" -ge "$MINOR_MAX" ]; then
144- MINOR=0
145- MAJOR=$((MAJOR+1))
146- fi
147-
148130 NEW_VERSION="$MAJOR.$MINOR.$PATCH"
149131
150- # Для dev додаємо pre-release лічильник
132+ # Для dev додаємо dev.N, де N = останній номер + 1
151133 if [ "$BRANCH_NAME" == "dev" ]; then
152- COUNT=$(git tag --list "v${NEW_VERSION}-dev.*" | wc -l | xargs)
153- COUNT=${COUNT:-0}
154- NEW_VERSION="${NEW_VERSION}-dev.$((COUNT+1))"
134+ LAST_DEV_TAG=$(git tag --list "v${NEW_VERSION}-dev.*" --sort=-v:refname | head -n1 || true)
135+ if [ -n "$LAST_DEV_TAG" ]; then
136+ LAST_DEV_NUM=$(echo "$LAST_DEV_TAG" | sed -E 's/^v[0-9]+\.[0-9]+\.[0-9]+-dev\.([0-9]+)$/\1/')
137+ NEXT_DEV_NUM=$((LAST_DEV_NUM+1))
138+ else
139+ NEXT_DEV_NUM=1
140+ fi
141+ NEW_VERSION="${NEW_VERSION}-dev.${NEXT_DEV_NUM}"
155142 fi
156143
157144 echo "New version: $NEW_VERSION"
158145 echo "new=$NEW_VERSION" >> $GITHUB_OUTPUT
146+
159147
160148
161149 - name : Grant execute permission for gradlew
0 commit comments