|
33 | 33 | fetch-depth: 0 |
34 | 34 | fetch-tags: true |
35 | 35 |
|
| 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 | +
|
36 | 70 | - name: Draft release for this branch |
37 | 71 | uses: release-drafter/release-drafter@v7 |
38 | 72 | with: |
39 | 73 | 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 }} |
40 | 78 | env: |
41 | 79 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
0 commit comments