@@ -19,64 +19,70 @@ jobs:
19
19
release :
20
20
name : Release
21
21
env :
22
- TEMP_BRANCH : release -${{ github.run_number }}
22
+ branch : temp -${{ github.run_number }}
23
23
outputs :
24
- tag : ${{ steps.changelog .outputs.tag }}
24
+ next : ${{ steps.semver .outputs.next }}
25
25
permissions :
26
26
contents : write
27
27
runs-on : ubuntu-latest
28
28
steps :
29
29
- uses : actions/checkout@v4
30
- with :
31
- fetch-depth : 0
32
-
33
- - name : Conventional Changelog Update
34
- uses : TriPSs/conventional-changelog-action@v5
35
- id : changelog
30
+ - name : Get Semver
31
+ id : semver
36
32
continue-on-error : true
33
+ uses : ietf-tools/semver-action@v1
37
34
with :
38
- git-branch : ${{ env.TEMP_BRANCH }}
39
- github-token : ${{ github.token }}
40
- skip-version-file : ' true'
41
- skip-commit : ' true'
42
- skip-on-empty : ' true'
43
- git-push : ' false'
35
+ token : ${{ github.token }}
44
36
45
- - name : Rebuild and push the dist/ directory
46
- if : ${{ steps.changelog .outputs.tag }}
37
+ - name : Git Setup
38
+ if : ${{ steps.semver .outputs.next }}
47
39
run : |
48
- npm run dist
49
- git diff ./dist
50
- git checkout -b ${{ env.TEMP_BRANCH }}
51
- git add ./dist --force
52
40
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
53
41
git config --global user.name "${GITHUB_ACTOR}"
54
- git add .
42
+ git checkout -b ${{ env.branch }}
43
+
44
+ - name : Rebuild ./dist
45
+ if : ${{ steps.semver.outputs.next }}
46
+ run : |
47
+ npm run dist
48
+ git add ./dist --force
55
49
git commit -m "Rebuild dist/ directory"
56
- git push -u origin HEAD:${{ env.TEMP_BRANCH }}
50
+ git push -u origin HEAD:${{ env.branch }}
57
51
58
- - name : Release
52
+ - name : Tag and Release (Major)
53
+ if : ${{ steps.semver.outputs.next }}
59
54
env :
60
55
GH_TOKEN : ${{ github.token }}
61
- if : ${{ steps.changelog .outputs.tag }}
56
+ tag : ${{ steps.semver .outputs.nextMajor }}
62
57
run : |
63
- echo "Creating release ${{ steps.changelog.outputs.tag }}"
64
- git push origin tag ${{ steps.changelog.outputs.tag }}
65
- gh release create ${{ steps.changelog.outputs.tag }} --title ${{ steps.changelog.outputs.tag }} --generate-notes
58
+ git tag -f ${{ env.tag }}
59
+ git push -f origin tag ${{ env.tag }}
66
60
67
- cleanup :
68
- name : Cleanup
69
- if : always() && ${{ needs.release.outputs.tag }}
70
- needs : release
71
- env :
72
- TEMP_BRANCH : release-${{ github.run_number }}
73
- permissions :
74
- contents : write
75
- runs-on : ubuntu-latest
76
- steps :
77
- - uses : actions/checkout@v4
78
- with :
79
- fetch-depth : 0
61
+ if [ $(gh release view ${{ env.tag }} --json name -q .name) ]; then
62
+ gh release edit ${{ env.tag }} --title ${{ env.tag }} --tag ${{ env.tag }}
63
+ else
64
+ gh release create ${{ env.tag }} --title ${{ env.tag }} --generate-notes
65
+ fi
66
+
67
+ - name : Tag and Release (Semver)
68
+ if : ${{ steps.semver.outputs.next }}
69
+ env :
70
+ GH_TOKEN : ${{ github.token }}
71
+ tag : ${{ steps.semver.outputs.next }}
72
+ run : |
73
+ git tag ${{ env.tag }}
74
+ git push origin tag ${{ env.tag }}
75
+
76
+ if [ $(gh release view ${{ env.tag }} --json name -q .name) ]; then
77
+ gh release delete ${{ env.tag }} --yes
78
+ fi
79
+ gh release create ${{ env.tag }} --title ${{ env.tag }} --generate-notes
80
80
81
81
- name : Cleanup
82
- run : git push --delete origin ${{ env.TEMP_BRANCH }}
82
+ if : always()
83
+ run : |
84
+ if [ "$(git ls-remote origin ${{ env.branch }})" ]; then
85
+ git push --delete origin ${{ env.branch }}
86
+ else
87
+ echo "Cleanup not required"
88
+ fi
0 commit comments