-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (134 loc) · 4.69 KB
/
hartshorn.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
136
name: Hartshorn
on: pull_request
# ┌───────────────┐ ┌──────────────┐ ┌───────────────┐
# │ License check │ → │ Build all │ → │ Build all │
# └───────────────┘ │ (JDK source) │ │ (JDK target) │
# └──────────────┘ └───────────────┘
# ↓ ↓
# ┌──────────────┐ ┌───────────────┐
# │ Test all │ → │ Test all │
# │ (JDK source) │ │ (JDK target) │
# └──────────────┘ └───────────────┘
# ↓
# ┌─────────────────┐
# │ Module coverage │
# │ (JDK source) │
# └─────────────────┘
jobs:
license:
name: License check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up source JDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Check license headers
run: ./gradlew checkLicenses
buildSource:
needs: [license]
name: Build all (source JDK)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up source JDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: "Build (source JDK)"
run: ./gradlew build -x test
buildTarget:
needs: [buildSource]
strategy:
fail-fast: false
matrix:
java: [18, 19]
name: Build all (target JDK ${{ matrix.java }})
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java }}
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: "Build (Java ${{ matrix.java }})"
run: ./gradlew build -x test
testSource:
needs: [buildSource]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
name: Unit tests (source JDK)
runs-on: "${{ matrix.os }}"
steps:
- uses: actions/checkout@v3
- name: Set up source JDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: "Unit testing (OS: ${{ matrix.os }}, source JDK)"
run: ./gradlew test
testTarget:
needs: [testSource, buildTarget]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
java: [18, 19]
name: Unit tests (target JDK ${{ matrix.java }})
runs-on: "${{ matrix.os }}"
steps:
- uses: actions/checkout@v3
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java }}
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: "Unit testing (OS: ${{ matrix.os }}, Java: ${{ matrix.java }})"
run: ./gradlew test
coverage:
needs: [testSource]
strategy:
fail-fast: false
name: Code coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up source JDK
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Run tests
run: ./gradlew test
- name: Add coverage to PR
id: jacoco
uses: madrapps/[email protected]
with:
title: Code coverage
update-comment: true
paths: |
${{ github.workspace }}/build/reports/jacoco/jacocoMergedReport/jacocoMergedReport.xml
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 80
min-coverage-changed-files: 80
- name: Verify coverage report
run: ./gradlew jacocoTestCoverageVerification