@@ -3,19 +3,36 @@ name: Build Tests
3
3
on : [push, pull_request]
4
4
5
5
jobs :
6
+ wait-for-build :
7
+ name : Waiting for build
8
+ runs-on : ubuntu-latest
9
+ steps :
10
+ - name : Wait for build
11
+
12
+ with :
13
+ ref : ${{ github.ref }}
14
+ check-name : ' Building JSS'
15
+ repo-token : ${{ secrets.GITHUB_TOKEN }}
16
+ wait-interval : 30
17
+ if : github.event_name == 'push'
18
+
19
+ - name : Wait for build
20
+
21
+ with :
22
+ ref : ${{ github.event.pull_request.head.sha }}
23
+ check-name : ' Building JSS'
24
+ repo-token : ${{ secrets.GITHUB_TOKEN }}
25
+ wait-interval : 30
26
+ if : github.event_name == 'pull_request'
27
+
6
28
build-test :
7
29
name : Build Test
8
30
runs-on : ubuntu-latest
9
- continue-on-error : true
10
31
strategy :
11
32
matrix :
12
33
os :
13
- - ' fedora:latest'
14
34
- ' debian:testing'
15
35
- ' ubuntu:rolling'
16
- # Disable CentOS due to missing dependencies
17
- # - 'centos:7'
18
- # - 'centos:8'
19
36
container : ${{ matrix.os }}
20
37
steps :
21
38
- name : Clone repository
27
44
java-version : ' 17'
28
45
distribution : ' adopt'
29
46
30
- - name : Install Fedora/CentOS dependencies
31
- if : ${{ startsWith(matrix.os, 'fedora:') || startsWith(matrix.os, 'centos:') }}
32
- run : |
33
- dnf install -y dnf-plugins-core rpm-build maven
34
- dnf builddep -y --spec jss.spec
35
-
36
- - name : Install Debian/Ubuntu dependencies
37
- if : ${{ startsWith(matrix.os, 'debian:') || startsWith(matrix.os, 'ubuntu:') }}
47
+ - name : Install build dependencies
38
48
run : |
39
49
apt-get update
40
50
apt-get install -y \
@@ -51,10 +61,67 @@ jobs:
51
61
52
62
- name : Compare jss.jar
53
63
run : |
54
- jar tvf ~/build/jss/jss.jar | awk '{print $8;}' | sort \
64
+ jar tvf ~/build/jss/jss.jar \
65
+ | awk '{print $8;}' \
66
+ | sort \
67
+ | grep -v '/$' \
68
+ | tee cmake.out
69
+ jar tvf base/target/jss.jar \
70
+ | awk '{print $8;}' \
71
+ | sort \
72
+ | grep -v '/$' \
73
+ | grep -v '^META-INF/maven/' \
74
+ | tee maven.out
75
+ diff cmake.out maven.out
76
+
77
+ # TODO: Run examples
78
+
79
+ fedora-test :
80
+ name : Fedora Build Test
81
+ needs : wait-for-build
82
+ runs-on : ubuntu-latest
83
+ env :
84
+ SHARED : /tmp/workdir/pki
85
+ steps :
86
+ - name : Clone repository
87
+ uses : actions/checkout@v3
88
+
89
+ - name : Retrieve JSS images
90
+ uses : actions/cache@v3
91
+ with :
92
+ key : jss-images-${{ github.sha }}
93
+ path : jss-images.tar
94
+
95
+ - name : Load JSS images
96
+ run : docker load --input jss-images.tar
97
+
98
+ - name : Set up JSS container
99
+ run : |
100
+ tests/bin/runner-init.sh jss
101
+ env :
102
+ IMAGE : jss-builder
103
+ HOSTNAME : jss.example.com
104
+
105
+ - name : Build JSS with CMake
106
+ run : |
107
+ docker exec jss ./build.sh
108
+
109
+ - name : Build JSS with Maven
110
+ run : |
111
+ docker exec jss mvn package
112
+
113
+ - name : Compare jss.jar
114
+ run : |
115
+ docker exec jss \
116
+ jar tvf /root/build/jss/jss.jar \
117
+ | awk '{print $8;}' \
118
+ | sort \
55
119
| grep -v '/$' \
56
120
| tee cmake.out
57
- jar tvf base/target/jss.jar | awk '{print $8;}' | sort \
121
+ docker exec jss \
122
+ jar tvf base/target/jss.jar \
123
+ | awk '{print $8;}' \
124
+ | sort \
58
125
| grep -v '/$' \
59
126
| grep -v '^META-INF/maven/' \
60
127
| tee maven.out
@@ -91,108 +158,138 @@ jobs:
91
158
92
159
rpm-test :
93
160
name : RPM Test
161
+ needs : wait-for-build
94
162
runs-on : ubuntu-latest
95
- container : ' fedora:latest'
163
+ env :
164
+ SHARED : /tmp/workdir/pki
96
165
steps :
97
166
- name : Clone repository
98
167
uses : actions/checkout@v3
99
168
100
- - name : Set up Java
101
- uses : actions/setup-java @v3
169
+ - name : Retrieve JSS images
170
+ uses : actions/cache @v3
102
171
with :
103
- java-version : ' 17 '
104
- distribution : ' adopt '
172
+ key : jss-images-${{ github.sha }}
173
+ path : jss-images.tar
105
174
106
- - name : Install Fedora dependencies
107
- run : |
108
- dnf install -y dnf-plugins-core rpm-build maven
109
- dnf builddep -y --spec jss.spec
175
+ - name : Load jss-images image
176
+ run : docker load --input jss-images.tar
110
177
111
- - name : Build JSS RPMs with XMvn and CMake
112
- run : ./build.sh --work-dir=build rpm
178
+ - name : Set up JSS container
179
+ run : |
180
+ tests/bin/runner-init.sh jss
181
+ env :
182
+ IMAGE : jss-builder
183
+ HOSTNAME : jss.example.com
113
184
114
185
- name : Install RPMInspect
115
186
run : |
116
- dnf install -y dnf-plugins-core
117
- dnf copr enable -y copr.fedorainfracloud.org/dcantrell/rpminspect
118
- dnf install -y rpminspect rpminspect-data-fedora
187
+ docker exec jss dnf copr enable -y copr.fedorainfracloud.org/dcantrell/rpminspect
188
+ docker exec jss dnf install -y rpminspect rpminspect-data-fedora
119
189
120
190
- name : Run RPMInspect on SRPM and RPMs
121
- run : ./tests/bin/rpminspect.sh
191
+ run : |
192
+ docker exec jss ./tests/bin/rpminspect.sh
122
193
123
194
- name : Install RPMs
124
- run : dnf localinstall -y build/RPMS/*.rpm
195
+ run : |
196
+ docker exec jss bash -c "dnf localinstall -y build/RPMS/*.rpm"
125
197
126
198
- name : Build JSS with Maven
127
- run : mvn -pl '!native,!symkey,!examples' package
199
+ run : |
200
+ docker exec jss mvn -pl '!native,!symkey,!examples' package
128
201
129
202
- name : Compare jss.jar
130
203
run : |
131
- jar tvf /usr/share/java/jss/jss.jar | awk '{print $8;}' | sort \
204
+ docker exec jss jar tvf /usr/share/java/jss/jss.jar \
205
+ | awk '{print $8;}' \
206
+ | sort \
132
207
| grep -v '/$' \
133
208
| tee jss.jar.rpm
134
- jar tvf base/target/jss.jar | awk '{print $8;}' | sort \
209
+ docker exec jss jar tvf base/target/jss.jar \
210
+ | awk '{print $8;}' \
211
+ | sort \
135
212
| grep -v '/$' \
136
213
| tee jss.jar.maven
137
214
diff jss.jar.rpm jss.jar.maven
138
215
139
216
- name : Compare jss-tomcat.jar
140
217
run : |
141
- jar tvf /usr/share/java/jss/jss-tomcat.jar | awk '{print $8;}' | sort \
218
+ docker exec jss jar tvf /usr/share/java/jss/jss-tomcat.jar \
219
+ | awk '{print $8;}' \
220
+ | sort \
142
221
| grep -v '/$' \
143
222
| tee jss-tomcat.jar.rpm
144
- jar tvf tomcat/target/jss-tomcat.jar | awk '{print $8;}' | sort \
223
+ docker exec jss jar tvf tomcat/target/jss-tomcat.jar \
224
+ | awk '{print $8;}' \
225
+ | sort \
145
226
| grep -v '/$' \
146
227
| tee jss-tomcat.jar.maven
147
228
diff jss-tomcat.jar.rpm jss-tomcat.jar.maven
148
229
149
230
- name : Compare jss-tomcat-9.0.jar
150
231
run : |
151
- jar tvf /usr/share/java/jss/jss-tomcat-9.0.jar | awk '{print $8;}' | sort \
232
+ docker exec jss jar tvf /usr/share/java/jss/jss-tomcat-9.0.jar \
233
+ | awk '{print $8;}' \
234
+ | sort \
152
235
| grep -v '/$' \
153
236
| tee jss-tomcat-9.0.jar.rpm
154
- jar tvf tomcat-9.0/target/jss-tomcat-9.0.jar | awk '{print $8;}' | sort \
237
+ docker exec jss jar tvf tomcat-9.0/target/jss-tomcat-9.0.jar \
238
+ | awk '{print $8;}' \
239
+ | sort \
155
240
| grep -v '/$' \
156
241
| tee jss-tomcat-9.0.jar.maven
157
242
diff jss-tomcat-9.0.jar.rpm jss-tomcat-9.0.jar.maven
158
243
159
244
sandbox-test :
160
245
name : Sandbox Test
246
+ needs : wait-for-build
161
247
runs-on : ubuntu-latest
162
- container :
163
- image : quay.io/fedora/fedora:rawhide
248
+ env :
249
+ SHARED : /tmp/workdir/jss
164
250
steps :
165
251
- name : Clone repository
166
252
uses : actions/checkout@v3
167
253
254
+ - name : Retrieve JSS images
255
+ uses : actions/cache@v3
256
+ with :
257
+ key : jss-images-${{ github.sha }}
258
+ path : jss-images.tar
259
+
260
+ - name : Load jss-images image
261
+ run : docker load --input jss-images.tar
262
+
263
+ - name : Set up JSS container
264
+ run : |
265
+ tests/bin/runner-init.sh jss
266
+ env :
267
+ IMAGE : jss-builder
268
+ HOSTNAME : jss.example.com
269
+
168
270
- name : Install build dependencies
169
271
run : |
170
- dnf install -y dnf-plugins-core
171
- dnf builddep -y nspr nss jss
172
- dnf builddep -y jss.spec
173
- dnf install -y mercurial \
272
+ docker exec jss dnf builddep -y nspr nss
273
+ docker exec jss dnf install -y mercurial \
174
274
python-unversioned-command \
175
275
gyp \
176
276
ninja-build
177
277
178
278
- name : Build NSPR and NSS
179
279
run : |
180
- cd ..
181
- hg clone https://hg.mozilla.org/projects/nspr
182
- hg clone https://hg.mozilla.org/projects/nss
183
- cd nss
184
- ./build.sh --enable-fips --enable-libpkix
280
+ docker exec jss hg clone https://hg.mozilla.org/projects/nspr
281
+ docker exec jss hg clone https://hg.mozilla.org/projects/nss
282
+ docker exec -w /root/jss/nss jss \
283
+ bash build.sh --enable-fips --enable-libpkix
185
284
186
285
- name : Build JSS
187
286
run : |
188
- cd build
189
- cmake -DCMAKE_BUILD_TYPE=Debug ..
190
- make all
287
+ docker exec -w /root/jss/build jss cmake -DCMAKE_BUILD_TYPE=Debug ..
288
+ docker exec -w /root/jss/build jss make all
191
289
env :
192
290
SANDBOX : 1
193
291
CFLAGS : -Wall -Wextra -Werror -Og -ggdb
194
292
195
293
- name : Run JSS tests
196
294
run : |
197
- cd build
198
- ctest --output-on-failure
295
+ docker exec -w /root/jss/build jss ctest --output-on-failure
0 commit comments