1+ name : Release Gradle Plugin
2+
3+ on :
4+ workflow_dispatch :
5+
6+ jobs :
7+ test :
8+ runs-on : ubuntu-latest
9+ steps :
10+ - uses : actions/checkout@v4
11+ - uses : actions/setup-java@v4
12+ with :
13+ distribution : temurin
14+ java-version : 21
15+ - uses : gradle/actions/wrapper-validation@v4
16+ - uses : gradle/actions/setup-gradle@v4
17+ - run : ./gradlew test
18+
19+ determine-version :
20+ runs-on : ubuntu-latest
21+ steps :
22+ - uses : actions/checkout@v4
23+ with :
24+ fetch-depth : 0
25+
26+ - id : semantic_version
27+ uses : paulhatch/semantic-version@v5.4.0
28+ outputs :
29+ version : ${{ steps.semantic_version.outputs.version }}
30+ previous_version : ${{ steps.semantic_version.outputs.previous_version }}
31+ version_type : ${{ steps.semantic_version.outputs.version_type }}
32+
33+ release :
34+ runs-on : ubuntu-latest
35+ needs : [ test, determine-version ]
36+ if : needs.determine-version.outputs.version_type != 'none'
37+ permissions :
38+ contents : write
39+ steps :
40+ - uses : actions/checkout@v4
41+ with :
42+ fetch-depth : 0
43+
44+ - name : Create new tagged release
45+ run : |
46+ # Set up Git user
47+ git config --global user.name "github-actions[bot]"
48+ git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
49+
50+ # Update version in build.gradle.kts
51+ sed -i 's/version = ".*"/version = "${{ needs.determine-version.outputs.version }}"/' plugin/build.gradle.kts
52+ git add plugin/build.gradle.kts
53+ git commit -m "chore: bump version to ${{ needs.determine-version.outputs.version }}"
54+ git push origin main
55+
56+ # Create a new tag
57+ git tag v${{ needs.determine-version.outputs.version }}
58+ git push origin v${{ needs.determine-version.outputs.version }}
59+
60+ - name : Update CHANGELOG
61+ id : changelog
62+ uses : requarks/changelog-action@v1
63+ with :
64+ token : ${{ secrets.GITHUB_TOKEN }}
65+ fromTag : v${{ needs.determine-version.outputs.version }}
66+ toTag : v${{ needs.determine-version.outputs.previous_version }}
67+ writeToFile : false
68+
69+ - name : Generate GitHub Release Notes
70+ uses : ncipollo/release-action@v1
71+ with :
72+ generateReleaseNotes : true
73+ tag : v${{ needs.determine-version.outputs.version }}
74+ body : ${{ steps.changelog.outputs.changes }}
75+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments