Skip to content

Commit b228182

Browse files
committed
ci: resolve release drafter version by branch
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent b6ec6a7 commit b228182

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

.github/workflows/release-drafter.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,47 @@ jobs:
3333
fetch-depth: 0
3434
fetch-tags: true
3535

36+
- name: Resolve release draft version
37+
id: resolve-version
38+
env:
39+
EVENT_NAME: ${{ github.event_name }}
40+
PUSH_REF_NAME: ${{ github.ref_name }}
41+
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
42+
run: |
43+
set -eu
44+
45+
branch="$PUSH_REF_NAME"
46+
if [ "$EVENT_NAME" = "pull_request_target" ]; then
47+
branch="$PR_BASE_REF"
48+
fi
49+
50+
previous_tag=$(git describe --tags --abbrev=0 "origin/$branch")
51+
current_version=${previous_tag#v}
52+
major=${current_version%%.*}
53+
version_tail=${current_version#*.}
54+
minor=${version_tail%%.*}
55+
patch=${version_tail##*.}
56+
57+
release_messages=$(git log --format='%s%n%b' "${previous_tag}..origin/${branch}")
58+
if printf '%s\n' "$release_messages" | grep -Eiq '(^|\])\s*feat:|vue3 phase|migration to vue3|script setup ts|typescript'; then
59+
minor=$((minor + 1))
60+
patch=0
61+
else
62+
patch=$((patch + 1))
63+
fi
64+
65+
version="${major}.${minor}.${patch}"
66+
echo "branch=${branch}" >> "$GITHUB_OUTPUT"
67+
echo "previous_tag=${previous_tag}" >> "$GITHUB_OUTPUT"
68+
echo "version=${version}" >> "$GITHUB_OUTPUT"
69+
3670
- name: Draft release for this branch
3771
uses: release-drafter/release-drafter@v7
3872
with:
3973
config-name: release-drafter.yml
74+
commitish: ${{ steps.resolve-version.outputs.branch }}
75+
version: ${{ steps.resolve-version.outputs.version }}
76+
name: v${{ steps.resolve-version.outputs.version }}
77+
tag: v${{ steps.resolve-version.outputs.version }}
4078
env:
4179
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)