-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (134 loc) · 4.61 KB
/
run-blktests.yml
File metadata and controls
156 lines (134 loc) · 4.61 KB
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
146
147
148
149
150
151
152
153
154
155
156
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (c) 2025 Western Digital Corporation or its affiliates.
#
# Authors: Dennis Maisenbacher ([email protected])
name: Run blktests
on:
pull_request:
concurrency:
group: ci-test-${{ github.ref_name }}
env:
KERNEL_REF: "${{ github.event.pull_request.head.sha }}"
KERNEL_TREE: "https://github.com/${{ github.repository }}"
#This workflow requires an actions-runner-controllers (ARC) to be active.
#The k8s cluster of this ARC needs KubeVirt to be installed.
jobs:
build-and-test-kernel:
#This step runs in a container in the k8s cluster
runs-on: arc-vm-linux-blktests
steps:
- name: Checkout blktests-ci
uses: actions/checkout@v4
with:
repository: linux-blktests/blktests-ci
path: blktests-ci
- name: Build kernel and package it into a containerimage
run: |
cd blktests-ci/playbooks/roles/kernel-builder-k8s-job/templates
docker build \
--build-arg KERNEL_TREE=${KERNEL_TREE} \
--build-arg KERNEL_REF=${KERNEL_REF} \
-t linux-kernel-containerdisk \
-f Dockerfile.linux-kernel-containerdisk . 2>&1 | tee build.log
#Setting KERNEL_VERSION var which is latern needed for notifying the VM what kernel to pick up
cat build.log | grep KERNEL_VERSION | awk '{print $3}' | grep KERNEL_VERSION >> $GITHUB_ENV
- name: Push the new Fedora containerimage with the freshly build kernel
run: |
docker tag linux-kernel-containerdisk registry-service.docker-registry.svc.cluster.local/linux-kernel-containerdisk:${KERNEL_VERSION}
docker push registry-service.docker-registry.svc.cluster.local/linux-kernel-containerdisk:${KERNEL_VERSION}
- name: Run in VM
uses: ./blktests-ci/.github/actions/kubevirt-action
with:
kernel_version: ${{ env.KERNEL_VERSION }}
vm_artifact_upload_dir: blktests/results
run_cmds: |
#Print VM debug info
uname -a
cat /etc/os-release
lsblk
#Install build dependencies for blktests
sudo dnf install -y gcc \
clang \
make \
util-linux \
llvm \
gawk \
fio \
udev \
kmod \
coreutils \
gcc \
gzip \
e2fsprogs \
xfsprogs \
f2fs-tools \
btrfs-progs \
device-mapper-multipath \
blktrace \
kernel-headers \
liburing \
liburing-devel \
nbd \
device-mapper \
ktls-utils \
dosfstools \
mdadm \
bc \
libnl3-cli \
cryptsetup \
sg3_utils \
pciutils \
unzip \
jq \
nvme-cli \
git \
wget
git clone https://github.com/linux-blktests/blktests.git
cd blktests
make
#ATTENTION! This section formats all available NVMe devices. Be careful when changing the `runs-on` tag!
#This step runs in a VM with the previously compiled kernel in the k8s cluster
failed=0
# Run blktests block group
cat > config << EOF
TEST_DEVS=(${BDEV0})
EOF
export RUN_ZONED_TESTS=1
sudo ./check block || failed=1
# Run blktests nvme group
cat > config << EOF
TEST_DEVS=(${BDEV0})
NVMET_TRTYPES="loop rdma tcp"
EOF
sudo ./check nvme || failed=1
# Run blktests scsi group
cat > config << EOF
TEST_DEVS=()
export RUN_ZONED_TESTS=1
EOF
sudo ./check scsi || failed=1
# Run blktests misc groups
cat > config << EOF
TEST_DEVS=()
EOF
sudo ./check dm loop md nbd throtl ublk || failed=1
# Run ZBD blktests without TEST_DEVS
cat > config << EOF
TEST_DEVS=()
EOF
export RUN_ZONED_TESTS=1
sudo ./check zbd || failed=1
# Run ZBD blktests with TEST_DEVS
cat > config << EOF
TEST_DEVS=(${ZBD0})
DEVICE_ONLY=1
EOF
export RUN_ZONED_TESTS=1
sudo ./check zbd || failed=1
# Run blktests srp group
cat > config << EOF
TEST_DEVS=()
EOF
sudo ./check srp || failed=1
exit $failed