Skip to content

Commit b5fffaa

Browse files
authored
feat: semver and major releases on merge (#300)
1 parent 7c5bb59 commit b5fffaa

File tree

1 file changed

+47
-41
lines changed

1 file changed

+47
-41
lines changed

.github/workflows/merge.yml

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,64 +19,70 @@ jobs:
1919
release:
2020
name: Release
2121
env:
22-
TEMP_BRANCH: release-${{ github.run_number }}
22+
branch: temp-${{ github.run_number }}
2323
outputs:
24-
tag: ${{ steps.changelog.outputs.tag }}
24+
next: ${{ steps.semver.outputs.next }}
2525
permissions:
2626
contents: write
2727
runs-on: ubuntu-latest
2828
steps:
2929
- 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
3632
continue-on-error: true
33+
uses: ietf-tools/semver-action@v1
3734
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 }}
4436

45-
- name: Rebuild and push the dist/ directory
46-
if: ${{ steps.changelog.outputs.tag }}
37+
- name: Git Setup
38+
if: ${{ steps.semver.outputs.next }}
4739
run: |
48-
npm run dist
49-
git diff ./dist
50-
git checkout -b ${{ env.TEMP_BRANCH }}
51-
git add ./dist --force
5240
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
5341
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
5549
git commit -m "Rebuild dist/ directory"
56-
git push -u origin HEAD:${{ env.TEMP_BRANCH }}
50+
git push -u origin HEAD:${{ env.branch }}
5751
58-
- name: Release
52+
- name: Tag and Release (Major)
53+
if: ${{ steps.semver.outputs.next }}
5954
env:
6055
GH_TOKEN: ${{ github.token }}
61-
if: ${{ steps.changelog.outputs.tag }}
56+
tag: ${{ steps.semver.outputs.nextMajor }}
6257
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 }}
6660
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
8080
8181
- 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

Comments
 (0)