-
Notifications
You must be signed in to change notification settings - Fork 0
97 lines (81 loc) · 2.51 KB
/
ci.yml
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
name: CI
on:
- pull_request
- push
- workflow_dispatch
env:
JDK_VERSION: "21"
WORKSPACE_ARCHIVE: workspace.tar
WORKSPACE_ARTIFACT: build-results
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ env.JDK_VERSION }}
- name: Gradle Assemble
uses: gradle/gradle-build-action@v2
with:
arguments: assemble --info -S --show-version
gradle-home-cache-cleanup: true
- name: Tar files
run: tar -cvf ${{ env.WORKSPACE_ARCHIVE }} .
- uses: actions/upload-artifact@v4
with:
name: ${{ env.WORKSPACE_ARTIFACT }}
path: ${{ env.WORKSPACE_ARCHIVE }}
retention-days: 1
check:
name: Check
strategy:
matrix:
jdk: [ 8, 11, 17, 21 ]
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/download-artifact@v4
with:
name: ${{ env.WORKSPACE_ARTIFACT }}
path: .
- name: Untar
run: |
tar -xvf ${{ env.WORKSPACE_ARCHIVE }}
rm ${{ env.WORKSPACE_ARCHIVE }}
- uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ env.JDK_VERSION }}
- name: Gradle Check
uses: gradle/gradle-build-action@v2
with:
arguments: check --info -S --show-version -Ptoolchain.functionalTest.version=${{ matrix.jdk }}
gradle-home-cache-cleanup: true
# So, what's happening here?
#
# Basically, restoring the workspace state between jobs is incredibly annoying.
# We can get reasonable support by using the upload-/download-artifact
# actions, but they suffer from a severe limitation:
# GH Actions has a storage limit and the minimum retention is 24 hours...
#
# Since the storage quota is limited, we have to make sure that the artifact
# is removed. Unfortunately, there is no official way to do this, so we resort
# to a third party action for now.
#
# See also: https://github.com/actions/upload-artifact/issues/290
cleanup:
name: Cleanup
if: ${{ always() }}
needs: check
runs-on: ubuntu-latest
steps:
- name: Cleanup
uses: GeekyEggo/delete-artifact@9d15d164b1dcd538ff1b1a2984bc2c0240986c3b
with:
name: ${{ env.WORKSPACE_ARTIFACT }}