-
Notifications
You must be signed in to change notification settings - Fork 1
146 lines (113 loc) · 3.49 KB
/
build-and-test.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
137
138
139
140
141
142
143
144
145
name: Build and Test
on:
push:
branches:
- dev
pull_request:
branches:
- dev
- beta
- "epic/**"
types: [opened, synchronize, reopened, ready_for_review]
# Why is this here?
jobs:
check:
name: "Check"
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
outputs:
worth_testing: ${{ steps.check.outputs.worth_testing }}
steps:
- name: "Checkout Branch"
uses: actions/checkout@v3
- name: "Check for changes worth testing"
id: check
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
changed_files=$(gh pr diff --name-only ${{ github.event.pull_request.number }})
test=false
for ( file in $changed_files ); do
if [[ $file == ".github/"* || $file == "doc/*" ]]; then
echo "file: $file"
else
test=true
break
fi
done
if [[ $test == true ]]; then
echo "worth_testing=true" >> "$GITHUB_OUTPUT"
else
echo "worth_testing=false" >> "$GITHUB_OUTPUT"
fi
outputs:
output1: ${{ steps.step1.outputs.test }}
output2: ${{ steps.step2.outputs.test }}
steps:
- id: step1
run: echo "test=hello" >> "$GITHUB_OUTPUT"
- id: step2
run: echo "test=world" >> "$GITHUB_OUTPUT"
build:
name: "Build"
timeout-minutes: 10
if: |
(github.event.pull_request.draft == false)
&& ${{ needs.check.outputs.worth_testing }} == true
runs-on: ubuntu-latest
steps:
- name: "Checkout Branch"
uses: actions/checkout@v3
- name: "Setup Java"
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
cache: 'gradle'
- name: Setup Gradle cache
uses: actions/cache@v3
with:
path: ~/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('versions.properties') }}-${{ github.sha }}
- name: "prepare libs for build"
run: ./prepare.sh
- name: "build backend"
run: ./gradlew --build-cache build -x test
- name: Upload build reports
uses: actions/upload-artifact@v3
if: ${{ failure() || contains(github.event.pull_request.labels.*.name, 'force reports') }}
with:
name: Build Reports
path: "**/build/reports"
test:
name: "Test"
timeout-minutes: 120
if: |
(github.event.pull_request.draft == false)
&& ${{ needs.check.outputs.worth_testing }} == true
needs: build
runs-on: ubuntu-latest
steps:
- name: "Checkout Branch"
uses: actions/checkout@v3
- name: "Setup Java"
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
cache: 'gradle'
- name: Setup Gradle cache
uses: actions/cache@v3
with:
path: ~/.gradle
key: ${{ runner.os }}-gradle-${{ hashFiles('versions.properties') }}-${{ github.sha }}
- name: "prepare libs for tests"
run: ./prepare.sh
- name: "test backend"
run: ./gradlew --build-cache check
- name: Upload test reports
uses: actions/upload-artifact@v3
if: ${{ failure() || contains(github.event.pull_request.labels.*.name, 'force reports') }}
with:
name: Test Reports
path: "**/build/reports"