Skip to content

Commit cdac9e5

Browse files
Update workflow to use multi-stage build with test scripts
1 parent c80501e commit cdac9e5

File tree

1 file changed

+122
-14
lines changed

1 file changed

+122
-14
lines changed

.github/workflows/kernel-build-and-test-x86_64.yml

Lines changed: 122 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,27 @@ on: [push]
44
permissions:
55
contents: read
66
actions: read
7+
packages: read
78

89
jobs:
910
build:
10-
name: Build x86_64
11+
name: Build kernel
1112
runs-on: kernel-build
1213

1314
steps:
14-
- name: Checkout code
15+
- name: Checkout kernel source
1516
uses: actions/checkout@v4
1617
with:
1718
fetch-depth: 1
19+
path: kernel-src-tree
20+
21+
- name: Checkout kernel-container-build (test branch)
22+
uses: actions/checkout@v4
23+
with:
24+
repository: ctrliq/kernel-container-build
25+
ref: test-stage-separation
26+
path: kernel-container-build
27+
token: ${{ secrets.PRIVATE_REPO_ACCESS_TOKEN }}
1828

1929
# Host deps + KVM / FUSE validation
2030
- name: Install host dependencies & verify KVM/FUSE
@@ -30,7 +40,7 @@ jobs:
3040
sudo chmod 0666 /dev/kvm
3141
fi
3242
33-
# Kernel build inside CIQ builder
43+
# Kernel build inside CIQ builder (build only, no test)
3444
- name: Build kernel inside CIQ builder container
3545
run: |
3646
set -euxo pipefail
@@ -41,11 +51,12 @@ jobs:
4151
--privileged \
4252
--device=/dev/fuse \
4353
$([ -e /dev/kvm ] && echo "--device=/dev/kvm") \
44-
-v "$PWD":/src \
54+
-v "$PWD/kernel-src-tree":/src \
4555
-v "$PWD/output":/output \
56+
-v "$PWD/kernel-container-build/build-container":/usr/local/build-scripts:ro \
4657
--security-opt label=disable \
4758
pulp.prod.ciq.dev/ciq/cicd/lts-images/builder \
48-
build_kernel.sh -c lts-9.2-kernel-builder 2>&1 | tee output/kernel-build.log
59+
/usr/local/build-scripts/build_kernel.sh -c lts-9.2-kernel-builder 2>&1 | tee output/kernel-build.log
4960
sudo dmesg
5061
5162
# Upload kernel compilation logs
@@ -57,24 +68,121 @@ jobs:
5768
path: output/kernel-build.log
5869
retention-days: 7
5970

60-
# Upload kselftest logs
61-
- name: Upload kselftest logs
71+
# Upload qcow2 image for next stages
72+
- name: Upload qcow2 image
6273
uses: actions/upload-artifact@v4
6374
if: always()
6475
with:
65-
name: kselftest-logs-x86_64
76+
name: kernel-qcow2-image-x86_64
6677
path: |
67-
output/kselftests-*.log
68-
output/dmesg-*.log
78+
output/*.qcow2
79+
output/last_build_image.txt
6980
retention-days: 7
7081

71-
# Upload qcow2 image
72-
- name: Upload qcow2 image
82+
boot:
83+
name: Boot verification
84+
runs-on: kernel-build
85+
needs: build
86+
87+
steps:
88+
- name: Checkout kernel-container-build (test branch)
89+
uses: actions/checkout@v4
90+
with:
91+
repository: ctrliq/kernel-container-build
92+
ref: test-stage-separation
93+
path: kernel-container-build
94+
token: ${{ secrets.PRIVATE_REPO_ACCESS_TOKEN }}
95+
96+
- name: Install host dependencies
97+
run: |
98+
set -euxo pipefail
99+
sudo apt-get update
100+
sudo apt-get install -y fuse3 cpu-checker podman
101+
sudo modprobe fuse
102+
if [ -e /dev/kvm ]; then
103+
sudo chmod 0666 /dev/kvm
104+
fi
105+
106+
- name: Download qcow2 image
107+
uses: actions/download-artifact@v4
108+
with:
109+
name: kernel-qcow2-image-x86_64
110+
path: output
111+
112+
# Boot verification test
113+
- name: Boot kernel and verify
114+
run: |
115+
set -euxo pipefail
116+
podman run --rm --pull=always \
117+
--privileged \
118+
--device=/dev/fuse \
119+
$([ -e /dev/kvm ] && echo "--device=/dev/kvm") \
120+
-v "$PWD/output":/output \
121+
-v "$PWD/kernel-container-build/build-container":/usr/local/build-scripts:ro \
122+
--security-opt label=disable \
123+
pulp.prod.ciq.dev/ciq/cicd/lts-images/builder \
124+
/usr/local/build-scripts/boot_kernel.sh
125+
126+
# Upload boot logs
127+
- name: Upload boot logs
73128
uses: actions/upload-artifact@v4
74129
if: always()
130+
with:
131+
name: boot-logs-x86_64
132+
path: output/boot-*.log
133+
retention-days: 7
134+
135+
test-kselftest:
136+
name: Run kselftests
137+
runs-on: kernel-build
138+
needs: boot
139+
140+
steps:
141+
- name: Checkout kernel-container-build (test branch)
142+
uses: actions/checkout@v4
143+
with:
144+
repository: ctrliq/kernel-container-build
145+
ref: test-stage-separation
146+
path: kernel-container-build
147+
token: ${{ secrets.PRIVATE_REPO_ACCESS_TOKEN }}
148+
149+
- name: Install host dependencies
150+
run: |
151+
set -euxo pipefail
152+
sudo apt-get update
153+
sudo apt-get install -y fuse3 cpu-checker podman
154+
sudo modprobe fuse
155+
if [ -e /dev/kvm ]; then
156+
sudo chmod 0666 /dev/kvm
157+
fi
158+
159+
- name: Download qcow2 image
160+
uses: actions/download-artifact@v4
75161
with:
76162
name: kernel-qcow2-image-x86_64
163+
path: output
164+
165+
# Run kselftests
166+
- name: Execute kselftests
167+
run: |
168+
set -euxo pipefail
169+
podman run --rm --pull=always \
170+
--privileged \
171+
--device=/dev/fuse \
172+
$([ -e /dev/kvm ] && echo "--device=/dev/kvm") \
173+
-v "$PWD/output":/output \
174+
-v "$PWD/kernel-container-build/build-container":/usr/local/build-scripts:ro \
175+
--security-opt label=disable \
176+
pulp.prod.ciq.dev/ciq/cicd/lts-images/builder \
177+
/usr/local/build-scripts/test_kselftests.sh
178+
179+
# Upload kselftest logs
180+
- name: Upload kselftest logs
181+
uses: actions/upload-artifact@v4
182+
if: always()
183+
with:
184+
name: kselftest-logs-x86_64
77185
path: |
78-
output/*.qcow2
79-
output/last_build_image.txt
186+
output/kselftests-*.log
187+
output/dmesg-*.log
80188
retention-days: 7

0 commit comments

Comments
 (0)