7878 container_image : opensuse/leap:latest
7979
8080 steps :
81- - name : Validate inputs (prevent command injection)
82- shell : bash
83- env :
81+ - name : Validate inputs (prevent command injection)
82+ shell : bash
83+ env :
8484 GO_VERSION : ${{ inputs.go_version }}
8585 RUNC_VERSION : ${{ inputs.runc_version }}
8686 CONTAINERD_VERSION : ${{ inputs.containerd_version }}
9090 FIRECRACKER_VERSION : ${{ inputs.firecracker_version }}
9191 CLOUD_HYPERVISOR_VERSION : ${{ inputs.cloud_hypervisor_version }}
9292 SOLO5_VERSION : ${{ inputs.solo5_version }}
93- run : |
93+ run : |
9494 SAFE_GO_VERSION="$GO_VERSION"
9595 SAFE_RUNC_VERSION="$RUNC_VERSION"
9696 SAFE_CONTAINERD_VERSION="$CONTAINERD_VERSION"
@@ -108,13 +108,10 @@ jobs:
108108 exit 1
109109 fi
110110 done
111-
112-
113- - name : Harden the runner (Audit all outbound calls)
114- uses : step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
115- with :
111+ - name : Harden the runner (Audit all outbound calls)
112+ uses : step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
113+ with :
116114 egress-policy : audit
117-
118115 - name : Pre-checkout dependencies
119116 run : |
120117 if command -v zypper >/dev/null; then
@@ -124,12 +121,11 @@ jobs:
124121 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
125122
126123 - uses : actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
127- with :
124+ with :
128125 go-version : ${{ inputs.go_version }}
129126 cache : false
130-
131- - name : Install base dependencies
132- run : |
127+ - name : Install base dependencies
128+ run : |
133129 # Fallback for missing sudo in minimal containers
134130 if ! command -v sudo >/dev/null; then
135131 sudo() { "$@"; }
@@ -150,11 +146,10 @@ jobs:
150146 wget https://s3.nbfc.io/nbfc-assets/github/urunc/bin/virtiofsd
151147 sudo chmod +x virtiofsd
152148 sudo mv virtiofsd /usr/libexec/virtiofsd
153-
154- - name : Install runc
155- env :
149+ - name : Install runc
150+ env :
156151 RUNC_VERSION : ${{ inputs.runc_version }}
157- run : |
152+ run : |
158153 SAFE_RUNC="${RUNC_VERSION}"
159154 ARCH=$(uname -m)
160155 case $ARCH in
@@ -165,11 +160,10 @@ jobs:
165160 wget -q "https://github.com/opencontainers/runc/releases/download/v${SAFE_RUNC}/runc.${BIN_ARCH}"
166161 sudo install -m 755 runc.${BIN_ARCH} /usr/local/sbin/runc
167162 rm -f ./runc.${BIN_ARCH}
168-
169- - name : Install containerd
170- env :
163+ - name : Install containerd
164+ env :
171165 CONTAINERD_VERSION : ${{ inputs.containerd_version }}
172- run : |
166+ run : |
173167 SAFE_CONTAINERD="${CONTAINERD_VERSION}"
174168 ARCH=$(uname -m)
175169 case $ARCH in
@@ -180,11 +174,10 @@ jobs:
180174 wget -q "https://github.com/containerd/containerd/releases/download/v${SAFE_CONTAINERD}/containerd-${SAFE_CONTAINERD}-linux-${BIN_ARCH}.tar.gz"
181175 sudo tar Cxzvf /usr/local "containerd-${SAFE_CONTAINERD}-linux-${BIN_ARCH}.tar.gz"
182176 rm -f "containerd-${SAFE_CONTAINERD}-linux-${BIN_ARCH}.tar.gz"
183-
184- - name : Set up containerd service
185- env :
177+ - name : Set up containerd service
178+ env :
186179 CONTAINERD_VERSION : ${{ inputs.containerd_version }}
187- run : |
180+ run : |
188181 SAFE_CONTAINERD="$CONTAINERD_VERSION"
189182 wget -q "https://raw.githubusercontent.com/containerd/containerd/v${SAFE_CONTAINERD}/containerd.service"
190183 sudo rm -f /lib/systemd/system/containerd.service
@@ -197,25 +190,22 @@ jobs:
197190 sudo containerd > /tmp/containerd.log 2>&1 &
198191 sleep 5
199192 fi
200-
201- - name : Configure containerd
202- run : |
193+ - name : Configure containerd
194+ run : |
203195 sudo mkdir -p /etc/containerd/
204196 sudo mv /etc/containerd/config.toml /etc/containerd/config.toml.bak || true
205197 sudo containerd config default | sudo tee /etc/containerd/config.toml
206-
207- - name : Restart containerd
208- run : |
198+ - name : Restart containerd
199+ run : |
209200 if command -v systemctl >/dev/null && systemctl is-system-running >/dev/null 2>&1; then
210201 sudo systemctl restart containerd
211202 else
212203 sudo pkill containerd || true
213204 sudo containerd > /tmp/containerd.log 2>&1 &
214205 sleep 5
215206 fi
216-
217- - name : Setup devmapper
218- run : |
207+ - name : Setup devmapper
208+ run : |
219209 sudo mkdir -p /usr/local/bin/scripts
220210 sudo cp script/dm_create.sh /usr/local/bin/scripts/dm_create.sh
221211 sudo chmod 755 /usr/local/bin/scripts/dm_create.sh
@@ -242,18 +232,16 @@ jobs:
242232 sudo containerd &
243233 sleep 5
244234 fi
245-
246- - name : Setup block-based mountpoint
247- run : |
235+ - name : Setup block-based mountpoint
236+ run : |
248237 mkdir /tmp/test_mountpoint
249238 dd if=/dev/zero of=/tmp/fake_block bs=1M count=200
250239 mkfs.ext2 /tmp/fake_block
251240 sudo mount /tmp/fake_block /tmp/test_mountpoint
252-
253- - name : Install CNI plugins
254- env :
241+ - name : Install CNI plugins
242+ env :
255243 CNI_VERSION : ${{ inputs.cni_version }}
256- run : |
244+ run : |
257245 SAFE_CNI="${CNI_VERSION}"
258246 ARCH=$(uname -m)
259247 case $ARCH in
@@ -265,11 +253,10 @@ jobs:
265253 sudo mkdir -p /opt/cni/bin
266254 sudo tar Cxzvf /opt/cni/bin "cni-plugins-linux-${BIN_ARCH}-v${SAFE_CNI}.tgz"
267255 rm -f "cni-plugins-linux-${BIN_ARCH}-v${SAFE_CNI}.tgz"
268-
269- - name : Install nerdctl
270- env :
256+ - name : Install nerdctl
257+ env :
271258 NERDCTL_VERSION : ${{ inputs.nerdctl_version }}
272- run : |
259+ run : |
273260 SAFE_NERDCTL="${NERDCTL_VERSION}"
274261 ARCH=$(uname -m)
275262 case $ARCH in
@@ -280,11 +267,10 @@ jobs:
280267 wget -q "https://github.com/containerd/nerdctl/releases/download/v${SAFE_NERDCTL}/nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
281268 sudo tar Cxzvf /usr/local/bin "nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
282269 rm -f "nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
283-
284- - name : Install crictl
285- env :
270+ - name : Install crictl
271+ env :
286272 CRICTL_VERSION : ${{ inputs.crictl_version }}
287- run : |
273+ run : |
288274 SAFE_CRI="${CRICTL_VERSION}"
289275 wget "https://github.com/kubernetes-sigs/cri-tools/releases/download/${SAFE_CRI}/crictl-${SAFE_CRI}-linux-${{ matrix.arch }}.tar.gz"
290276 sudo tar zxvf "crictl-${SAFE_CRI}-linux-${{ matrix.arch }}.tar.gz" -C /usr/local/bin
@@ -294,31 +280,28 @@ jobs:
294280 image-endpoint : unix:///run/containerd/containerd.sock
295281 timeout : 20
296282 EOT
297-
298- - name : Install Firecracker
299- env :
283+ - name : Install Firecracker
284+ env :
300285 FC_VERSION : ${{ inputs.firecracker_version }}
301- run : |
286+ run : |
302287 SAFE_FC="${FC_VERSION}"
303288 ARCH="$(uname -m)"
304289 release_url="https://github.com/firecracker-microvm/firecracker/releases"
305290 curl -L "${release_url}/download/${SAFE_FC}/firecracker-${SAFE_FC}-${ARCH}.tgz" | tar -xz
306291 sudo mv "release-${SAFE_FC}-${ARCH}/firecracker-${SAFE_FC}-${ARCH}" /usr/local/bin/firecracker
307292 rm -fr "release-${SAFE_FC}-${ARCH}"
308-
309- - name : Install Cloud Hypervisor
310- env :
293+ - name : Install Cloud Hypervisor
294+ env :
311295 CLOUD_HYPERVISOR_VERSION : ${{ inputs.cloud_hypervisor_version }}
312- run : |
296+ run : |
313297 SAFE_CLOUD_HYPERVISOR="${CLOUD_HYPERVISOR_VERSION}"
314298 curl -sL "https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/${SAFE_CLOUD_HYPERVISOR}/cloud-hypervisor-static" -o cloud-hypervisor
315299 chmod +x cloud-hypervisor
316300 sudo mv cloud-hypervisor /usr/local/bin/cloud-hypervisor
317-
318- - name : Install solo5
319- env :
301+ - name : Install solo5
302+ env :
320303 SOLO5_VERSION : ${{ inputs.solo5_version }}
321- run : |
304+ run : |
322305 SAFE_SOLO5="${SOLO5_VERSION}"
323306 git clone -b "${SAFE_SOLO5}" https://github.com/Solo5/solo5.git
324307 cd solo5
@@ -328,41 +311,36 @@ jobs:
328311 make -j$(nproc)
329312 sudo cp tenders/hvt/solo5-hvt /usr/local/bin
330313 sudo cp tenders/spt/solo5-spt /usr/local/bin
331-
332- - name : Download urunc artifact
333- uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
334- with :
314+ - name : Download urunc artifact
315+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
316+ with :
335317 name : urunc_static_${{ matrix.arch }}-${{ github.run_id }}
336318 path : ./
337-
338- - name : Download containerd-shim-urunc-v2 artifact
339- uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
340- with :
319+ - name : Download containerd-shim-urunc-v2 artifact
320+ uses : actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
321+ with :
341322 name : containerd-shim-urunc-v2_static_${{ matrix.arch }}-${{ github.run_id }}
342323 path : ./
343-
344- - name : Install urunc
324+ - name : Install urunc
345325 id : install-urunc
346- run : |
326+ run : |
347327 chmod +x urunc_static_${{ matrix.arch }}
348328 chmod +x containerd-shim-urunc-v2_static_${{ matrix.arch }}
349329 sudo mv urunc_static_${{ matrix.arch }} /usr/local/bin/urunc
350330 sudo mv containerd-shim-urunc-v2_static_${{ matrix.arch }} /usr/local/bin/containerd-shim-urunc-v2
351331 urunc --version
352-
353- - name : Configure urunc with debug logging
354- run : |
332+ - name : Configure urunc with debug logging
333+ run : |
355334 sudo mkdir -p /etc/urunc
356335 sudo tee /etc/urunc/config.toml > /dev/null <<'EOF'
357336 [log]
358337 level = "debug"
359338 syslog = true
360339 EOF
361-
362- - name : Add runner user to KVM group
340+ - name : Add runner user to KVM group
363341 if : ${{ matrix.arch == 'amd64' }}
364342 id : kvm-setup
365- run : |
343+ run : |
366344 if [ -c /dev/kvm ]; then
367345 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules || true
368346 if command -v udevadm >/dev/null; then
@@ -375,19 +353,17 @@ jobs:
375353 else
376354 echo "/dev/kvm not found, skipping KVM setup"
377355 fi
378-
379- - name : Prepare urunc folder
356+ - name : Prepare urunc folder
380357 id : prepare
381- run : |
358+ run : |
382359 export GOROOT=$(go env GOROOT)
383360 export PATH="$GOROOT/bin:$PATH"
384361 go version
385362 go env GOROOT
386363 make prepare
387-
388- - name : Run ${{ matrix.test }}
364+ - name : Run ${{ matrix.test }}
389365 id : test
390- run : |
366+ run : |
391367 # Set up Go environment properly
392368 export GOROOT=$(go env GOROOT)
393369 export PATH="$GOROOT/bin:$PATH"
@@ -398,10 +374,9 @@ jobs:
398374 else
399375 sudo -E env "PATH=$PATH" "GOROOT=$GOROOT" make ${{ matrix.test }}
400376 fi
401-
402- - name : Dump urunc logs on failure
377+ - name : Dump urunc logs on failure
403378 if : failure()
404- run : |
379+ run : |
405380 echo "=== urunc debug logs ==="
406381 if command -v journalctl >/dev/null; then
407382 sudo journalctl --identifier=urunc --no-pager || true
0 commit comments