1- # This workflow will build a package using Maven and then publish it to GitHub Packages when a release is created
2- # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
3-
4- name : Maven Package
1+ name : Build and Publish to GitHub Releases
52
63on :
7- release :
8- types : [ created ]
4+ push :
5+ branches :
6+ - main # Publishes BETA on pushes to main
7+ tags :
8+ - ' v*' # Publishes RELEASE on tagged pushes like v1.0, v2.0, etc.
99
1010jobs :
11- build :
11+ build-and-release :
1212 runs-on : ubuntu-latest
13- permissions :
14- contents : read
15- packages : write
1613
1714 steps :
18- - uses : actions/checkout@v4
15+ - name : Checkout code
16+ uses : actions/checkout@v4
1917
2018 - name : Set up JDK 21
2119 uses : actions/setup-java@v4
2220 with :
21+ distribution : ' temurin'
2322 java-version : ' 21'
24- distribution : ' oracle'
25- server-id : github
26- settings-path : ${{ github.workspace }}
2723
28- - name : Build with Maven
29- run : mvn -B package --file pom.xml
24+ - name : Cache Maven packages
25+ uses : actions/cache@v4
26+ with :
27+ path : ~/.m2/repository
28+ key : maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
29+ restore-keys : |
30+ maven-${{ runner.os }}-
31+
32+ - name : Build project
33+ run : mvn clean package
3034
31- - name : Publish to GitHub Packages
32- run : mvn deploy -s $GITHUB_WORKSPACE/settings.xml
35+ - name : Rename JAR for Release Type
36+ run : |
37+ if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
38+ mv target/ChainedTogether-1.0-SNAPSHOT.jar target/ChainedTogether-RELEASE-${{ github.ref_name }}.jar
39+ else
40+ mv target/ChainedTogether-1.0-SNAPSHOT.jar target/ChainedTogether-BETA.jar
41+ fi
42+
43+ - name : Create or Update GitHub Release
44+ uses : softprops/action-gh-release@v2.0.8
45+ with :
46+ tag_name : ${{ github.ref_name }}
47+ files : target/*.jar
48+ draft : false
49+ prerelease : ${{ github.ref != 'refs/tags/v*' }}
3350 env :
34- GITHUB_TOKEN : ${{ github.token }}
51+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments