@@ -24,11 +24,17 @@ jobs:
24
24
runs-on : ubuntu-latest
25
25
outputs :
26
26
runjobs : ${{ steps.continue.outputs.runjobs }}
27
+ project_version : ${{ steps.continue.outputs.project_version }}
27
28
steps :
29
+ - uses : actions/checkout@v2
28
30
- id : continue
29
31
name : Determine if should continue
30
32
if : env.RUN_JOBS == 'true'
31
- run : echo "::set-output name=runjobs::true"
33
+ run : |
34
+ echo "::set-output name=runjobs::true"
35
+ # Extract version from gradle.properties
36
+ version=$(cat gradle.properties | grep "version=" | awk -F'=' '{print $2}')
37
+ echo "::set-output name=project_version::$version"
32
38
build_jdk_11 :
33
39
name : Build JDK 11
34
40
needs : [prerequisites]
@@ -47,11 +53,10 @@ jobs:
47
53
run : |
48
54
mkdir -p ~/.gradle
49
55
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
50
- - name : Cache Gradle packages
51
- uses : actions/cache@v2
52
- with :
53
- path : ~/.gradle/caches
54
- key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
56
+ - name : Setup Gradle
57
+ uses : gradle/gradle-build-action@v2
58
+ env :
59
+ GRADLE_USER_HOME : ~/.gradle
55
60
- name : Build with Gradle
56
61
env :
57
62
GRADLE_ENTERPRISE_CACHE_USERNAME : ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
73
78
run : |
74
79
mkdir -p ~/.gradle
75
80
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
81
+ - name : Setup Gradle
82
+ uses : gradle/gradle-build-action@v2
83
+ env :
84
+ GRADLE_USER_HOME : ~/.gradle
76
85
- name : Snapshot Tests
77
86
run : |
78
87
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
@@ -94,6 +103,10 @@ jobs:
94
103
run : |
95
104
mkdir -p ~/.gradle
96
105
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
106
+ - name : Setup Gradle
107
+ uses : gradle/gradle-build-action@v2
108
+ env :
109
+ GRADLE_USER_HOME : ~/.gradle
97
110
- name : Check samples project
98
111
env :
99
112
LOCAL_REPOSITORY_PATH : ${{ github.workspace }}/build/publications/repos
@@ -119,6 +132,10 @@ jobs:
119
132
run : |
120
133
mkdir -p ~/.gradle
121
134
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
135
+ - name : Setup Gradle
136
+ uses : gradle/gradle-build-action@v2
137
+ env :
138
+ GRADLE_USER_HOME : ~/.gradle
122
139
- name : Check for package tangles
123
140
run : |
124
141
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
@@ -139,6 +156,10 @@ jobs:
139
156
run : |
140
157
mkdir -p ~/.gradle
141
158
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
159
+ - name : Setup Gradle
160
+ uses : gradle/gradle-build-action@v2
161
+ env :
162
+ GRADLE_USER_HOME : ~/.gradle
142
163
- name : Deploy artifacts
143
164
run : |
144
165
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
@@ -166,6 +187,10 @@ jobs:
166
187
run : |
167
188
mkdir -p ~/.gradle
168
189
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
190
+ - name : Setup Gradle
191
+ uses : gradle/gradle-build-action@v2
192
+ env :
193
+ GRADLE_USER_HOME : ~/.gradle
169
194
- name : Deploy Docs
170
195
run : |
171
196
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
@@ -190,6 +215,10 @@ jobs:
190
215
run : |
191
216
mkdir -p ~/.gradle
192
217
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
218
+ - name : Setup Gradle
219
+ uses : gradle/gradle-build-action@v2
220
+ env :
221
+ GRADLE_USER_HOME : ~/.gradle
193
222
- name : Deploy Schema
194
223
run : |
195
224
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
@@ -200,14 +229,121 @@ jobs:
200
229
DOCS_USERNAME : ${{ secrets.DOCS_USERNAME }}
201
230
DOCS_SSH_KEY : ${{ secrets.DOCS_SSH_KEY }}
202
231
DOCS_HOST : ${{ secrets.DOCS_HOST }}
232
+ perform_release :
233
+ name : Perform release
234
+ needs : [prerequisites, deploy_artifacts, deploy_docs, deploy_schema]
235
+ runs-on : ubuntu-latest
236
+ timeout-minutes : 90
237
+ if : ${{ !endsWith(needs.prerequisites.outputs.project_version, '-SNAPSHOT') }}
238
+ env :
239
+ REPO : ${{ github.repository }}
240
+ BRANCH : ${{ github.ref_name }}
241
+ TOKEN : ${{ github.token }}
242
+ VERSION : ${{ needs.prerequisites.outputs.project_version }}
243
+ steps :
244
+ - uses : actions/checkout@v2
245
+ with :
246
+ token : ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
247
+ - name : Set up JDK
248
+ uses : actions/setup-java@v1
249
+ with :
250
+ java-version : ' 11'
251
+ - name : Setup gradle user name
252
+ run : |
253
+ mkdir -p ~/.gradle
254
+ echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
255
+ - name : Setup Gradle
256
+ uses : gradle/gradle-build-action@v2
257
+ env :
258
+ GRADLE_USER_HOME : ~/.gradle
259
+ - name : Wait for Artifactory Artifacts
260
+ if : ${{ contains(needs.prerequisites.outputs.project_version, '-RC') || contains(needs.prerequisites.outputs.project_version, '-M') }}
261
+ run : |
262
+ echo "Wait for artifacts of $REPO@$VERSION to appear on Artifactory."
263
+ until curl -f -s https://repo.spring.io/artifactory/milestone/org/springframework/security/spring-security-core/$VERSION/ > /dev/null
264
+ do
265
+ sleep 30
266
+ echo "."
267
+ done
268
+ echo "Artifacts for $REPO@$VERSION have been released to Artifactory."
269
+ - name : Wait for Maven Central Artifacts
270
+ if : ${{ !contains(needs.prerequisites.outputs.project_version, '-RC') && !contains(needs.prerequisites.outputs.project_version, '-M') }}
271
+ run : |
272
+ echo "Wait for artifacts of $REPO@$VERSION to appear on Maven Central."
273
+ until curl -f -s https://repo1.maven.org/maven2/org/springframework/security/spring-security-core/$VERSION/ > /dev/null
274
+ do
275
+ sleep 30
276
+ echo "."
277
+ done
278
+ echo "Artifacts for $REPO@$VERSION have been released to Maven Central."
279
+ - name : Create GitHub Release
280
+ run : |
281
+ export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
282
+ export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
283
+ export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
284
+ echo "Tagging and publishing $REPO@$VERSION release on GitHub."
285
+ ./gradlew createGitHubRelease -PnextVersion=$VERSION -Pbranch=$BRANCH -PcreateRelease=true -PgitHubAccessToken=$TOKEN
286
+ - name : Announce Release on Slack
287
+ id : spring-security-announcing
288
+
289
+ with :
290
+ payload : |
291
+ {
292
+ "text": "spring-security-announcing `${{ env.VERSION }}` is available now",
293
+ "blocks": [
294
+ {
295
+ "type": "section",
296
+ "text": {
297
+ "type": "mrkdwn",
298
+ "text": "spring-security-announcing `${{ env.VERSION }}` is available now"
299
+ }
300
+ }
301
+ ]
302
+ }
303
+ env :
304
+ SLACK_WEBHOOK_URL : ${{ secrets.SPRING_RELEASE_SLACK_WEBHOOK_URL }}
305
+ SLACK_WEBHOOK_TYPE : INCOMING_WEBHOOK
306
+ - name : Setup git config
307
+ run : |
308
+ git config user.name 'github-actions[bot]'
309
+ git config user.email 'github-actions[bot]@users.noreply.github.com'
310
+ - name : Update to next Snapshot Version
311
+ run : |
312
+ export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
313
+ export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
314
+ export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
315
+ echo "Updating $REPO@$VERSION to next snapshot version."
316
+ ./gradlew :updateToSnapshotVersion
317
+ ./gradlew :spring-security-docs:antoraUpdateVersion
318
+ git commit -am "Next development version"
319
+ git push
320
+ perform_post_release :
321
+ name : Perform post-release
322
+ needs : [prerequisites, deploy_artifacts, deploy_docs, deploy_schema]
323
+ runs-on : ubuntu-latest
324
+ timeout-minutes : 90
325
+ if : ${{ endsWith(needs.prerequisites.outputs.project_version, '-SNAPSHOT') }}
326
+ env :
327
+ TOKEN : ${{ github.token }}
328
+ VERSION : ${{ needs.prerequisites.outputs.project_version }}
329
+ steps :
330
+ - uses : actions/checkout@v2
331
+ - uses : spring-io/spring-gradle-build-action@v1
332
+ with :
333
+ java-version : ' 11'
334
+ distribution : ' adopt'
335
+ - name : Schedule next release (if not already scheduled)
336
+ run : ./gradlew scheduleNextRelease -PnextVersion=$VERSION -PgitHubAccessToken=$TOKEN
203
337
notify_result :
204
338
name : Check for failures
205
- needs : [build_jdk_11, snapshot_tests, check_samples, check_tangles, deploy_artifacts, deploy_docs, deploy_schema]
339
+ needs : [build_jdk_11, snapshot_tests, check_samples, check_tangles, deploy_artifacts, deploy_docs, deploy_schema, perform_release, perform_post_release ]
206
340
if : failure()
207
341
runs-on : ubuntu-latest
208
342
steps :
209
343
- name : Send Slack message
210
-
344
+ # Workaround while waiting for Gamesight/slack-workflow-status#38 to be fixed
345
+ # See https://github.com/Gamesight/slack-workflow-status/issues/38
346
+ uses : sjohnr/slack-workflow-status@v1-beta
211
347
with :
212
348
repo_token : ${{ secrets.GITHUB_TOKEN }}
213
349
slack_webhook_url : ${{ secrets.SLACK_WEBHOOK_URL }}
0 commit comments