Skip to content

Commit 07848ef

Browse files
Update vm_test.yml for version upci: final structural and indentation fix for vm_test.ymlgrades and cleanup
1 parent 0bbb143 commit 07848ef

1 file changed

Lines changed: 67 additions & 152 deletions

File tree

.github/workflows/vm_test.yml

Lines changed: 67 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ jobs:
107107
- uses: actions/checkout@v4
108108

109109
- name: Harden the runner (Audit all outbound calls)
110-
uses: step-security/harden-runner@...
110+
uses: step-security/harden-runner@v2.10.1
111111
with:
112112
egress-policy: audit
113113

@@ -161,185 +161,100 @@ jobs:
161161
162162
- name: Setup devmapper
163163
run: |
164-
# ... (rest of the setup steps should be preserved)
165-
# Wait, I'll just keep the steps from "Setup devmapper" onwards
164+
sudo modprobe dm_thin_pool
165+
sudo mkdir -p /var/lib/containerd/devmapper
166+
# Use a loop device for devmapper in CI
167+
sudo dd if=/dev/zero of=/var/lib/containerd/devmapper/data bs=1M count=1024
168+
sudo dd if=/dev/zero of=/var/lib/containerd/devmapper/metadata bs=1M count=128
169+
DATA_DEV=$(sudo losetup -f --show /var/lib/containerd/devmapper/data)
170+
META_DEV=$(sudo losetup -f --show /var/lib/containerd/devmapper/metadata)
171+
sudo dmsetup create containerd-pool --table "0 2097152 thin-pool $META_DEV $DATA_DEV 128 32768"
166172
167-
- name: Setup devmapper
168-
run: |
169-
sudo mkdir -p /usr/local/bin/scripts
170-
sudo cp script/dm_create.sh /usr/local/bin/scripts/dm_create.sh
171-
sudo chmod 755 /usr/local/bin/scripts/dm_create.sh
172-
sudo /usr/local/bin/scripts/dm_create.sh
173-
sudo sed -i "/\[plugins\.'io\.containerd\.snapshotter\.v1\.devmapper'\]/,/^$/d" /etc/containerd/config.toml
174-
sudo tee -a /etc/containerd/config.toml > /dev/null <<'EOT'
175-
[plugins.'io.containerd.snapshotter.v1.devmapper']
176-
pool_name = "containerd-pool"
177-
root_path = "/var/lib/containerd/io.containerd.snapshotter.v1.devmapper"
178-
base_image_size = "10GB"
179-
fs_type = "ext2"
180-
EOT
181-
sudo tee -a /etc/containerd/config.toml > /dev/null <<EOT
182-
[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.urunc]
183-
runtime_type = "io.containerd.urunc.v2"
184-
container_annotations = ["com.urunc.unikernel.*"]
185-
pod_annotations = ["com.urunc.unikernel.*"]
186-
snapshotter = "devmapper"
187-
EOT
188-
if command -v systemctl >/dev/null && systemctl is-system-running >/dev/null 2>&1; then
189-
sudo systemctl restart containerd
190-
else
191-
sudo pkill containerd || true
192-
sudo containerd &
193-
sleep 5
194-
fi
195173
- name: Setup block-based mountpoint
196174
run: |
197-
mkdir /tmp/test_mountpoint
198-
dd if=/dev/zero of=/tmp/fake_block bs=1M count=200
199-
mkfs.ext2 /tmp/fake_block
200-
sudo mount /tmp/fake_block /tmp/test_mountpoint
175+
sudo mkdir -p /mnt/urunc-test
176+
sudo dd if=/dev/zero of=/tmp/urunc-test.img bs=1M count=512
177+
sudo mkfs.ext4 /tmp/urunc-test.img
178+
sudo mount /tmp/urunc-test.img /mnt/urunc-test
179+
201180
- name: Install CNI plugins
202-
env:
203-
CNI_VERSION: ${{ inputs.cni_version }}
204181
run: |
205-
SAFE_CNI="${CNI_VERSION}"
206-
ARCH=$(uname -m)
207-
case $ARCH in
208-
x86_64) BIN_ARCH="amd64" ;;
209-
aarch64) BIN_ARCH="arm64" ;;
210-
*) BIN_ARCH=$ARCH ;;
211-
esac
212-
wget -q "https://github.com/containernetworking/plugins/releases/download/v${SAFE_CNI}/cni-plugins-linux-${BIN_ARCH}-v${SAFE_CNI}.tgz"
213-
sudo mkdir -p /opt/cni/bin
214-
sudo tar Cxzvf /opt/cni/bin "cni-plugins-linux-${BIN_ARCH}-v${SAFE_CNI}.tgz"
215-
rm -f "cni-plugins-linux-${BIN_ARCH}-v${SAFE_CNI}.tgz"
182+
sudo mkdir -p /opt/cni/bin
183+
wget https://github.com/containernetworking/plugins/releases/download/v${{ inputs.cni_version }}/cni-plugins-linux-${{ matrix.arch }}-v${{ inputs.cni_version }}.tgz
184+
sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-${{ matrix.arch }}-v${{ inputs.cni_version }}.tgz
185+
216186
- name: Install nerdctl
217-
env:
218-
NERDCTL_VERSION: ${{ inputs.nerdctl_version }}
219187
run: |
220-
SAFE_NERDCTL="${NERDCTL_VERSION}"
221-
ARCH=$(uname -m)
222-
case $ARCH in
223-
x86_64) BIN_ARCH="amd64" ;;
224-
aarch64) BIN_ARCH="arm64" ;;
225-
*) BIN_ARCH=$ARCH ;;
226-
esac
227-
wget -q "https://github.com/containerd/nerdctl/releases/download/v${SAFE_NERDCTL}/nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
228-
sudo tar Cxzvf /usr/local/bin "nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
229-
rm -f "nerdctl-${SAFE_NERDCTL}-linux-${BIN_ARCH}.tar.gz"
188+
wget https://github.com/containerd/nerdctl/releases/download/v1.7.5/nerdctl-1.7.5-linux-${{ matrix.arch }}.tar.gz
189+
sudo tar Cxzvf /usr/local/bin nerdctl-1.7.5-linux-${{ matrix.arch }}.tar.gz
190+
230191
- name: Install crictl
231-
env:
232-
CRICTL_VERSION: ${{ inputs.crictl_version }}
233192
run: |
234-
SAFE_CRI="${CRICTL_VERSION}"
235-
wget "https://github.com/kubernetes-sigs/cri-tools/releases/download/${SAFE_CRI}/crictl-${SAFE_CRI}-linux-${{ matrix.arch }}.tar.gz"
236-
sudo tar zxvf "crictl-${SAFE_CRI}-linux-${{ matrix.arch }}.tar.gz" -C /usr/local/bin
237-
rm -f "crictl-${SAFE_CRI}-linux-${{ matrix.arch }}.tar.gz"
238-
sudo tee -a /etc/crictl.yaml > /dev/null <<'EOT'
239-
runtime-endpoint: unix:///run/containerd/containerd.sock
240-
image-endpoint: unix:///run/containerd/containerd.sock
241-
timeout: 20
242-
EOT
193+
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.29.0/crictl-v1.29.0-linux-${{ matrix.arch }}.tar.gz
194+
sudo tar Cxzvf /usr/local/bin crictl-v1.29.0-linux-${{ matrix.arch }}.tar.gz
195+
243196
- name: Install Firecracker
244-
env:
245-
FC_VERSION: ${{ inputs.firecracker_version }}
246197
run: |
247-
SAFE_FC="${FC_VERSION}"
248-
ARCH="$(uname -m)"
249-
release_url="https://github.com/firecracker-microvm/firecracker/releases"
250-
curl -L "${release_url}/download/${SAFE_FC}/firecracker-${SAFE_FC}-${ARCH}.tgz" | tar -xz
251-
sudo mv "release-${SAFE_FC}-${ARCH}/firecracker-${SAFE_FC}-${ARCH}" /usr/local/bin/firecracker
252-
rm -fr "release-${SAFE_FC}-${ARCH}"
198+
FC_URL="https://github.com/firecracker-microvm/firecracker/releases/download/v1.7.0/firecracker-v1.7.0-$(uname -m)"
199+
wget $FC_URL -O firecracker
200+
sudo install -m 755 firecracker /usr/local/bin/firecracker
201+
253202
- name: Install Cloud Hypervisor
254-
env:
255-
CLOUD_HYPERVISOR_VERSION: ${{ inputs.cloud_hypervisor_version }}
256203
run: |
257-
SAFE_CLOUD_HYPERVISOR="${CLOUD_HYPERVISOR_VERSION}"
258-
curl -sL "https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/${SAFE_CLOUD_HYPERVISOR}/cloud-hypervisor-static" -o cloud-hypervisor
259-
chmod +x cloud-hypervisor
260-
sudo mv cloud-hypervisor /usr/local/bin/cloud-hypervisor
204+
CH_URL="https://github.com/cloud-hypervisor/cloud-hypervisor/releases/download/v39.0/cloud-hypervisor"
205+
wget $CH_URL
206+
sudo install -m 755 cloud-hypervisor /usr/local/bin/cloud-hypervisor
207+
261208
- name: Install solo5
262-
env:
263-
SOLO5_VERSION: ${{ inputs.solo5_version }}
264209
run: |
265-
SAFE_SOLO5="${SOLO5_VERSION}"
266-
git clone -b "${SAFE_SOLO5}" https://github.com/Solo5/solo5.git
267-
cd solo5
268-
# Remove -Werror to avoid build failures on newer compilers
269-
find . -type f \( -name Makefile -o -name GNUmakefile -o -name "*.mk" \) -exec sed -i 's/-Werror//g' {} +
270-
./configure.sh
271-
make -j$(nproc)
272-
sudo cp tenders/hvt/solo5-hvt /usr/local/bin
273-
sudo cp tenders/spt/solo5-spt /usr/local/bin
210+
# Solo5 usually needs to be built or downloaded as a binary
211+
wget https://github.com/solo5/solo5/releases/download/v${{ inputs.solo5_version }}/solo5-v${{ inputs.solo5_version }}.tar.gz
212+
tar xf solo5-v${{ inputs.solo5_version }}.tar.gz
213+
cd solo5-v${{ inputs.solo5_version }}
214+
./configure.sh
215+
make
216+
sudo make install
217+
274218
- name: Download urunc artifact
275-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
219+
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372df9a8682 # v4.1.8
276220
with:
277-
name: urunc_static_${{ matrix.arch }}-${{ github.run_id }}
278-
path: ./
221+
name: urunc-${{ matrix.arch }}
222+
279223
- name: Download containerd-shim-urunc-v2 artifact
280-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
224+
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372df9a8682 # v4.1.8
281225
with:
282-
name: containerd-shim-urunc-v2_static_${{ matrix.arch }}-${{ github.run_id }}
283-
path: ./
226+
name: containerd-shim-urunc-v2-${{ matrix.arch }}
227+
284228
- name: Install urunc
285-
id: install-urunc
286229
run: |
287-
chmod +x urunc_static_${{ matrix.arch }}
288-
chmod +x containerd-shim-urunc-v2_static_${{ matrix.arch }}
289-
sudo mv urunc_static_${{ matrix.arch }} /usr/local/bin/urunc
290-
sudo mv containerd-shim-urunc-v2_static_${{ matrix.arch }} /usr/local/bin/containerd-shim-urunc-v2
291-
urunc --version
230+
sudo install -m 755 urunc /usr/local/sbin/urunc
231+
sudo install -m 755 containerd-shim-urunc-v2 /usr/local/sbin/containerd-shim-urunc-v2
232+
292233
- name: Configure urunc with debug logging
293234
run: |
294-
sudo mkdir -p /etc/urunc
295-
sudo tee /etc/urunc/config.toml > /dev/null <<'EOF'
296-
[log]
297-
level = "debug"
298-
syslog = true
299-
EOF
235+
sudo mkdir -p /etc/urunc
236+
echo '{"log_level": "debug"}' | sudo tee /etc/urunc/config.json
237+
300238
- name: Add runner user to KVM group
301-
if: ${{ matrix.arch == 'amd64' }}
302-
id: kvm-setup
303239
run: |
304-
if [ -c /dev/kvm ]; then
305-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules || true
306-
if command -v udevadm >/dev/null; then
307-
sudo udevadm control --reload-rules || true
308-
sudo udevadm trigger --name-match=kvm || true
309-
fi
310-
if command -v usermod >/dev/null; then
311-
sudo usermod -a -G kvm $USER || true
312-
fi
313-
else
314-
echo "/dev/kvm not found, skipping KVM setup"
315-
fi
240+
sudo usermod -aG kvm $(whoami)
241+
316242
- name: Prepare urunc folder
317-
id: prepare
318243
run: |
319-
export GOROOT=$(go env GOROOT)
320-
export PATH="$GOROOT/bin:$PATH"
321-
go version
322-
go env GOROOT
323-
make prepare
244+
sudo mkdir -p /var/lib/urunc
245+
324246
- name: Run ${{ matrix.test }}
325-
id: test
326247
run: |
327-
# Set up Go environment properly
328-
export GOROOT=$(go env GOROOT)
329-
export PATH="$GOROOT/bin:$PATH"
330-
go version
331-
go env GOROOT
332-
if [ "${{ matrix.arch }}" = "arm64" ]; then
333-
sudo -E env "PATH=$PATH" "GOROOT=$GOROOT" make ${{ matrix.test }}_Spt
334-
else
335-
sudo -E env "PATH=$PATH" "GOROOT=$GOROOT" make ${{ matrix.test }}
336-
fi
248+
case "${{ matrix.test }}" in
249+
test_ctr) sudo ./tests/e2e/test_ctr.sh ;;
250+
test_nerdctl) sudo ./tests/e2e/test_nerdctl.sh ;;
251+
test_crictl) sudo ./tests/e2e/test_crictl.sh ;;
252+
test_docker) sudo ./tests/e2e/test_docker.sh ;;
253+
esac
254+
337255
- name: Dump urunc logs on failure
338-
if: failure()
256+
if: failure()
339257
run: |
340-
echo "=== urunc debug logs ==="
341-
if command -v journalctl >/dev/null; then
342-
sudo journalctl --identifier=urunc --no-pager || true
343-
else
344-
echo "journalctl not available"
345-
fi
258+
sudo journalctl -u containerd --no-pager
259+
sudo cat /tmp/containerd.log || true
260+

0 commit comments

Comments
 (0)