-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease.yaml
273 lines (268 loc) · 9.16 KB
/
release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
name: create-release
on:
workflow_dispatch:
inputs:
tag:
description: 'Tag'
required: true
default: 'v*.*'
snapshot:
description: 'The next snapshot'
required: true
default: 'v*.*-SNAPSHOT'
installer_version:
description: 'Installer version'
required: false
default: '*.*.*'
jobs:
# RUN TESTS
run-tests:
runs-on: ubuntu-latest
# limit to owners
if: contains('["joshuajeschek, weichbot10"]', github.actor)
steps:
- uses: actions/checkout@v2
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
- run: mvn -B test --file pom.xml
# COMPILE INSTALLERS
linux-installer:
runs-on: ubuntu-latest
needs: run-tests
if: "!contains(github.repository, 'util')" # do not try to build installer for non-gui-app
steps:
- name: checkout the repository
uses: actions/checkout@v2
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# increase /project/version of pom.xml
- name: increase version in pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.tag }}"
# echo environment variables
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
# generate installer
- run: mvn '-Dapp.version="${{ github.event.inputs.installer_version }}"' clean install
if: "!startsWith(github.event.inputs.installer_version, '0')"
# prerelease
- run: mvn clean install
if: "startsWith(github.event.inputs.installer_version, '0')"
- uses: actions/upload-artifact@v2
with:
name: linux-installer
path: target/*.deb
windows-installer:
runs-on: windows-latest
needs: run-tests
if: "!contains(github.repository, 'util')" # do not try to build installer for non-gui-app
steps:
- name: checkout the repository
uses: actions/checkout@v2
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# increase /project/version of pom.xml
- name: increase version in pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.tag }}"
# echo environment variables
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
# generate installer
- run: mvn '-Dapp.version="${{ github.event.inputs.installer_version }}"' clean install
if: "!startsWith(github.event.inputs.installer_version, '0')"
# prerelease
- run: mvn clean install
if: "startsWith(github.event.inputs.installer_version, '0')"
- uses: actions/upload-artifact@v2
with:
name: windows-installer
path: target/*.msi
macos-installer:
runs-on: macos-latest
needs: run-tests
if: "!contains(github.repository, 'util')" # do not try to build installer for non-gui-app
steps:
- name: checkout the repository
uses: actions/checkout@v2
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
# increase /project/version of pom.xml
- name: increase version in pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.tag }}"
# echo environment variables
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
# generate installer
- run: mvn '-Dapp.version="${{ github.event.inputs.installer_version }}"' clean install
if: "!startsWith(github.event.inputs.installer_version, '0')"
# prerelease
- run: mvn clean install
if: "startsWith(github.event.inputs.installer_version, '0')"
- uses: actions/upload-artifact@v2
with:
name: macos-installer
path: target/*.dmg
jar:
runs-on: ubuntu-latest
needs: run-tests
if: "contains(github.repository, 'util')" # only package jar in util
steps:
# checkout
- name: checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.WEICHBOT }}
# increase /project/version of pom.xml
- name: increase version in pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.tag }}"
# setup java (default is not 17)
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
# package to jar
- name: package project
run: mvn package
- uses: actions/upload-artifact@v2
with:
name: jar
path: target/*.jar
# CREATE TAG AND UPDATE POM.XML
create-tag:
runs-on: ubuntu-latest
# do not release on failing tests
needs: [run-tests, linux-installer, windows-installer, macos-installer, jar]
# only continue if builds where successful
if: always() && ((needs.jar.result == 'success') || ((needs.linux-installer.result == 'success') && (needs.windows-installer.result == 'success') && (needs.macos-installer.result == 'success')))
outputs:
changes_detected: ${{ steps.auto-commit-action.outputs.changes_detected }}
steps:
# checkout
- name: checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.WEICHBOT }}
# setup java (default is not 17)
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- run: 'echo "$ENV" > src/main/resources/.env'
shell: bash
env:
ENV: ${{secrets.ENV}}
# increase /project/version of pom.xml
- name: increase version in pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.tag }}"
# signed commits
- name: import GPG
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.WEICHBOT_GPG_PRIVATE }}
passphrase: ${{ secrets.WEICHBOT_GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
# commit changed pom file
- name: auto commit
id: auto-commit-action
uses: stefanzweifel/git-auto-commit-action@v4
with:
file_pattern: pom.xml
commit_message: '[chore] bump version to ${{ github.event.inputs.tag }}'
commit_user_name: 'weichbot10'
commit_user_email: '[email protected]'
tagging_message: ${{ github.event.inputs.tag }}
# CREATE THE ACTUAL RELEASE
create-release:
runs-on: ubuntu-latest
needs: create-tag
# always needed for execution
if: always() && (needs.create-tag.result == 'success' && needs.create-tag.outputs.changes_detected == 'true')
steps:
- uses: actions/download-artifact@v2 # download all artifacts
- run: tree
- name: release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.tag }}
token: ${{ secrets.WEICHBOT }}
generate_release_notes: true
fail_on_unmatched_files: false
files: |
linux-installer/*.deb
macos-installer/*.dmg
windows-installer/*.msi
jar/*.jar
# SET NEXT SNAPSHOT VERSION
bump-version:
runs-on: ubuntu-latest
needs: create-release
if: always() && (needs.create-release.result == 'success') # do not bump if no release
steps:
# checkout
- name: checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.WEICHBOT }}
# setup java (default is not 17)
- name: setup java 17
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
- run: git pull
# set version number to snapshot version
- name: bump pom.xml
run: mvn versions:set -DnewVersion="${{ github.event.inputs.snapshot }}"
# signed commits
- name: import GPG
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.WEICHBOT_GPG_PRIVATE }}
passphrase: ${{ secrets.WEICHBOT_GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
# commit changed pom file
- name: auto commit
uses: stefanzweifel/git-auto-commit-action@v4
with:
file_pattern: pom.xml
commit_message: '[chore] set snapshot version (${{ github.event.inputs.snapshot }})'
commit_user_name: 'weichbot10'
commit_user_email: '[email protected]'