Skip to content

Commit 231aa45

Browse files
committed
Fix BASE_IMAGE param
The tests in GitHub and Azure DevOps have been modified to run using the latest Fedora by default, but it can be changed using the BASE_IMAGE param. The GitHub tests have also been updated to reuse the images created by the build workflow. The build workflow has also been modified to store the images in a single cache instead of separate caches. The runner-init.sh has been modified to use a positional argument to specify the container name and use jss-runner image by default. https://github.com/dogtagpki/pki/wiki/Configuring-Test-OS
1 parent 864fb43 commit 231aa45

13 files changed

+260
-162
lines changed

.github/workflows/build-tests.yml

+151-54
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,36 @@ name: Build Tests
33
on: [push, pull_request]
44

55
jobs:
6+
wait-for-build:
7+
name: Waiting for build
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Wait for build
11+
uses: lewagon/[email protected]
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+
uses: lewagon/[email protected]
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+
628
build-test:
729
name: Build Test
830
runs-on: ubuntu-latest
9-
continue-on-error: true
1031
strategy:
1132
matrix:
1233
os:
13-
- 'fedora:latest'
1434
- 'debian:testing'
1535
- 'ubuntu:rolling'
16-
# Disable CentOS due to missing dependencies
17-
# - 'centos:7'
18-
# - 'centos:8'
1936
container: ${{ matrix.os }}
2037
steps:
2138
- name: Clone repository
@@ -27,14 +44,7 @@ jobs:
2744
java-version: '17'
2845
distribution: 'adopt'
2946

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
3848
run: |
3949
apt-get update
4050
apt-get install -y \
@@ -51,10 +61,67 @@ jobs:
5161

5262
- name: Compare jss.jar
5363
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 \
55119
| grep -v '/$' \
56120
| 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 \
58125
| grep -v '/$' \
59126
| grep -v '^META-INF/maven/' \
60127
| tee maven.out
@@ -91,108 +158,138 @@ jobs:
91158
92159
rpm-test:
93160
name: RPM Test
161+
needs: wait-for-build
94162
runs-on: ubuntu-latest
95-
container: 'fedora:latest'
163+
env:
164+
SHARED: /tmp/workdir/pki
96165
steps:
97166
- name: Clone repository
98167
uses: actions/checkout@v3
99168

100-
- name: Set up Java
101-
uses: actions/setup-java@v3
169+
- name: Retrieve JSS images
170+
uses: actions/cache@v3
102171
with:
103-
java-version: '17'
104-
distribution: 'adopt'
172+
key: jss-images-${{ github.sha }}
173+
path: jss-images.tar
105174

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
110177

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
113184

114185
- name: Install RPMInspect
115186
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
119189
120190
- name: Run RPMInspect on SRPM and RPMs
121-
run: ./tests/bin/rpminspect.sh
191+
run: |
192+
docker exec jss ./tests/bin/rpminspect.sh
122193
123194
- 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"
125197
126198
- 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
128201
129202
- name: Compare jss.jar
130203
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 \
132207
| grep -v '/$' \
133208
| 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 \
135212
| grep -v '/$' \
136213
| tee jss.jar.maven
137214
diff jss.jar.rpm jss.jar.maven
138215
139216
- name: Compare jss-tomcat.jar
140217
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 \
142221
| grep -v '/$' \
143222
| 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 \
145226
| grep -v '/$' \
146227
| tee jss-tomcat.jar.maven
147228
diff jss-tomcat.jar.rpm jss-tomcat.jar.maven
148229
149230
- name: Compare jss-tomcat-9.0.jar
150231
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 \
152235
| grep -v '/$' \
153236
| 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 \
155240
| grep -v '/$' \
156241
| tee jss-tomcat-9.0.jar.maven
157242
diff jss-tomcat-9.0.jar.rpm jss-tomcat-9.0.jar.maven
158243
159244
sandbox-test:
160245
name: Sandbox Test
246+
needs: wait-for-build
161247
runs-on: ubuntu-latest
162-
container:
163-
image: quay.io/fedora/fedora:rawhide
248+
env:
249+
SHARED: /tmp/workdir/jss
164250
steps:
165251
- name: Clone repository
166252
uses: actions/checkout@v3
167253

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+
168270
- name: Install build dependencies
169271
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 \
174274
python-unversioned-command \
175275
gyp \
176276
ninja-build
177277
178278
- name: Build NSPR and NSS
179279
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
185284
186285
- name: Build JSS
187286
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
191289
env:
192290
SANDBOX: 1
193291
CFLAGS: -Wall -Wextra -Werror -Og -ggdb
194292

195293
- name: Run JSS tests
196294
run: |
197-
cd build
198-
ctest --output-on-failure
295+
docker exec -w /root/jss/build jss ctest --output-on-failure

.github/workflows/build.yml

+11-18
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,7 @@ jobs:
5858
tags: jss-builder
5959
target: jss-builder
6060
cache-from: type=local,src=/tmp/.buildx-cache
61-
outputs: type=docker,dest=jss-builder.tar
62-
63-
- name: Store jss-builder image
64-
uses: actions/cache@v3
65-
with:
66-
key: jss-builder-${{ github.sha }}
67-
path: jss-builder.tar
61+
outputs: type=docker
6862

6963
- name: Build jss-dist image
7064
uses: docker/build-push-action@v3
@@ -76,13 +70,7 @@ jobs:
7670
tags: jss-dist
7771
target: jss-dist
7872
cache-from: type=local,src=/tmp/.buildx-cache
79-
outputs: type=docker,dest=jss-dist.tar
80-
81-
- name: Store jss-dist image
82-
uses: actions/cache@v3
83-
with:
84-
key: jss-dist-${{ github.sha }}
85-
path: jss-dist.tar
73+
outputs: type=docker
8674

8775
- name: Build jss-runner image
8876
uses: docker/build-push-action@v3
@@ -94,10 +82,15 @@ jobs:
9482
tags: jss-runner
9583
target: jss-runner
9684
cache-from: type=local,src=/tmp/.buildx-cache
97-
outputs: type=docker,dest=jss-runner.tar
85+
outputs: type=docker
86+
87+
- name: Save JSS images
88+
run: |
89+
docker images
90+
docker save -o jss-images.tar jss-builder jss-dist jss-runner
9891
99-
- name: Store jss-runner image
92+
- name: Store JSS images
10093
uses: actions/cache@v3
10194
with:
102-
key: jss-runner-${{ github.sha }}
103-
path: jss-runner.tar
95+
key: jss-images-${{ github.sha }}
96+
path: jss-images.tar

.github/workflows/external-application-connection-tests.yml

+7-8
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,23 @@ jobs:
3636
- name: Clone repository
3737
uses: actions/checkout@v3
3838

39-
- name: Retrieve jss-builder image
39+
- name: Retrieve JSS images
4040
uses: actions/cache@v3
4141
with:
42-
key: jss-builder-${{ github.sha }}
43-
path: jss-builder.tar
42+
key: jss-images-${{ github.sha }}
43+
path: jss-images.tar
4444

45-
- name: Load jss-builder image
46-
run: docker load --input jss-builder.tar
45+
- name: Load JSS images
46+
run: docker load --input jss-images.tar
4747

4848
- name: Create network
4949
run: docker network create example
5050

51-
- name: Run container
51+
- name: Set up JSS container
5252
run: |
53-
tests/bin/runner-init.sh
53+
tests/bin/runner-init.sh jss
5454
env:
5555
IMAGE: jss-builder
56-
NAME: jss
5756
HOSTNAME: jss.example.com
5857

5958
- name: Connect JSS container to network

0 commit comments

Comments
 (0)