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- # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created
5- # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path
6-
71name : Maven Package
82
93on :
104 push :
115 tags :
12- - ' **' # Trigger on tags like v1.0.0, v2.1.3, etc.
6+ - ' **'
137
148jobs :
159 build :
@@ -29,20 +23,39 @@ jobs:
2923 server-id : github
3024 settings-path : ${{ github.workspace }}
3125
32- - name : Set Maven Version
33- run : mvn versions:set -DnewVersion=${{ github.ref_name }}
34-
3526 - name : Build with Maven
36- run : mvn -B -U -DskipTests clean package --file pom.xml
27+ run : mvn versions:set -DnewVersion=${{ github.ref_name }} -B -U -DskipTests clean package --file pom.xml
3728
3829 - name : Create GitHub Release
3930 id : create_release
40- uses : actions/create-release@v1
31+ uses : actions/github-script@v6
4132 with :
42- tag_name : ${{ github.ref_name }}
43- release_name : Release ${{ github.ref_name }}
44- draft : false
45- prerelease : false
33+ script : |
34+ const tag = context.ref.replace('refs/tags/', '');
35+ let release;
36+ try {
37+ release = await github.rest.repos.getReleaseByTag({
38+ owner: context.repo.owner,
39+ repo: context.repo.repo,
40+ tag
41+ });
42+ core.setOutput('release_id', release.data.id);
43+ } catch (error) {
44+ if (error.status === 404) {
45+ const release = await github.rest.repos.createRelease({
46+ owner: context.repo.owner,
47+ repo: context.repo.repo,
48+ tag_name: context.ref.replace('refs/tags/', ''),
49+ name: `Release ${context.ref.replace('refs/tags/', '')}`,
50+ draft: false,
51+ prerelease: false
52+ });
53+ core.setOutput('release_id', release.data.id);
54+ } else {
55+ throw error;
56+ }
57+ }
58+ core.setOutput('upload_url', release.data.upload_url);
4659 env :
4760 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
4861
5669 env :
5770 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
5871
72+ - name : Create Source Code Zip
73+ run : git archive -o source-${{ github.ref_name }}.zip HEAD
74+
75+ - name : Upload Source Code Zip
76+ uses : actions/upload-release-asset@v1
77+ with :
78+ upload_url : ${{ steps.create_release.outputs.upload_url }}
79+ asset_path : source-${{ github.ref_name }}.zip
80+ asset_name : source-${{ github.ref_name }}.zip
81+ asset_content_type : application/zip
82+ env :
83+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
84+
85+ - name : Create Source Code Tar.gz
86+ run : git archive -o source-${{ github.ref_name }}.tar.gz --format=tar.gz HEAD
87+
88+ - name : Upload Source Code Tar.gz
89+ uses : actions/upload-release-asset@v1
90+ with :
91+ upload_url : ${{ steps.create_release.outputs.upload_url }}
92+ asset_path : source-${{ github.ref_name }}.tar.gz
93+ asset_name : source-${{ github.ref_name }}.tar.gz
94+ asset_content_type : application/gzip
95+ env :
96+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
97+
5998 - name : Reset POM
60- run : git checkout -- pom.xml
99+ run : git checkout -- pom.xml
0 commit comments