-
Notifications
You must be signed in to change notification settings - Fork 14
135 lines (129 loc) · 3.76 KB
/
gradle.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
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
name: Gradle CI
on:
push:
branches:
- main
tags:
- v*
pull_request:
branches:
- main
jobs:
# Basic Gradle wrapper validation. This step is run first, due to security
# concerns. Running our whole pipeline with Gradle with a corrupt wrapper,
# could expose our secrets, and we definitely want to prevent this.
validation:
runs-on: ubuntu-latest
timeout-minutes: 15
name: Gradle wrapper validation
steps:
- name: Check out repo
uses: actions/checkout@v3
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
# Basic Compliance check. Checks if codeStyle is correct and if reuse
# is applied correctly
compliance:
runs-on: ubuntu-latest
name: Compliance check
needs: validation
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: REUSE Compliance Check
uses: fsfe/reuse-action@v5
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'sapmachine'
cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Check code style
run: ./gradlew spotlessCheck
# One Basic check, for all kind of OS - to check if we have some kind of
# issue with any kind of OS
basic:
strategy:
matrix:
os: [ ubuntu, macos, windows ]
runs-on: ${{ matrix.os }}-latest
name: on ${{ matrix.os }}
needs: validation
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'sapmachine'
cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Build and Test
run: ./gradlew check -x spotlessCheck
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: ${{ matrix.os }}-test-result
path: |
build/reports
build/test-results
# Check supported Gradle releases
# https://gradle.org/releases/
# https://docs.gradle.org/current/userguide/feature_lifecycle.html#eol_support
verify:
strategy:
matrix:
GRADLE_VERSION:
- "7.6.3"
- "8.12"
runs-on: ubuntu-latest
needs: [basic, compliance]
name: with Gradle ${{ matrix.GRADLE_VERSION }}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'sapmachine'
cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Build and Test
run: ./gradlew check -x spotlessCheck
env:
GRADLE_VERSION: "${{ matrix.GRADLE_VERSION }}"
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: ${{ matrix.GRADLE_VERSION }}-test-result
path: |
*/build/reports
*/build/test-results
publish:
runs-on: ubuntu-latest
needs: verify
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'sapmachine'
cache: 'gradle'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Publish Plugin
env:
ORG_GRADLE_PROJECT_gradle.publish.key: ${{secrets.PUBLISH_KEY}}
ORG_GRADLE_PROJECT_gradle.publish.secret: ${{secrets.PUBLISH_SECRET}}
run: ./gradlew publishPlugins