Skip to content

Commit d0a498c

Browse files
authored
Merge pull request #56 from raresgoidescu/main
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io> Approved-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
2 parents 3c8ca01 + 53f2550 commit d0a498c

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: catalog-core/test-all
2+
3+
on:
4+
schedule:
5+
- cron: '0 1 * * *' # 1 AM UTC daily
6+
workflow_dispatch: # Manual trigger
7+
8+
jobs:
9+
test-all:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout test branch
13+
uses: actions/checkout@v4
14+
with:
15+
ref: test
16+
17+
- name: Set up Docker Buildx
18+
uses: docker/setup-buildx-action@v3
19+
- name: Enable Docker BuildKit
20+
run: echo "DOCKER_BUILDKIT=1" >> $GITHUB_ENV
21+
22+
- name: Install base dependencies
23+
run: |
24+
sudo apt -y update
25+
sudo apt install -y --no-install-recommends \
26+
build-essential \
27+
sudo \
28+
gcc-aarch64-linux-gnu \
29+
g++-aarch64-linux-gnu \
30+
libncurses-dev \
31+
libyaml-dev \
32+
flex \
33+
bison \
34+
git \
35+
wget \
36+
curl \
37+
uuid-runtime \
38+
qemu-kvm \
39+
qemu-system-x86 \
40+
qemu-system-arm \
41+
sgabios \
42+
libarchive-tools \
43+
clang \
44+
xen-utils \
45+
redis-tools
46+
47+
- name: Setup QEMU networking
48+
run: |
49+
test -d /etc/qemu || sudo mkdir -p /etc/qemu
50+
echo "allow all" | sudo tee /etc/qemu/bridge.conf
51+
52+
- name: Install Firecracker
53+
run: |
54+
release_url="https://github.com/firecracker-microvm/firecracker/releases"
55+
latest=v1.7.0
56+
curl -L ${release_url}/download/${latest}/firecracker-${latest}-$(uname -m).tgz | tar -xz
57+
sudo cp release-${latest}-$(uname -m)/firecracker-${latest}-$(uname -m) /usr/local/bin/firecracker-${latest}-$(uname -m)
58+
sudo ln -sfn /usr/local/bin/firecracker-${latest}-$(uname -m) /usr/local/bin/firecracker-$(uname -m)
59+
sudo usermod -a -G kvm $USER
60+
61+
- name: Run tests
62+
id: run-tests
63+
run: |
64+
sudo -E ./test.overall.sh 2>&1 | tee -a output.log
65+
echo "result=$(grep -q 'FAILED' output.log && echo 'failed' || echo 'passed')" >> $GITHUB_OUTPUT
66+
67+
- name: Generate test report
68+
if: always()
69+
run: |
70+
echo "## Unikraft Catalog Core Test Results" >> $GITHUB_STEP_SUMMARY
71+
echo "### $(date -u)" >> $GITHUB_STEP_SUMMARY
72+
73+
# Application test results
74+
75+
grep -E '\[.*\]|PASSED|FAILED' output.log | awk '
76+
BEGIN {
77+
print "| Test Suite | Test Name | Status |"
78+
print "|------------|-----------|--------|"
79+
}
80+
/\[.*\]/ {
81+
app=$0
82+
gsub(/\[|\]/, "", app)
83+
next
84+
}
85+
/PASSED|FAILED/ {
86+
split($0, parts, /\.\.\. /)
87+
test_name = $1
88+
status = ($NF == "PASSED") ? "✅ PASSED" : "❌ FAILED"
89+
printf "| %s | %s | %s |\n", app, test_name, status
90+
}' >> $GITHUB_STEP_SUMMARY
91+
92+
echo "### System Configuration" >> $GITHUB_STEP_SUMMARY
93+
echo "- QEMU Version: $(qemu-system-x86_64 --version | head -n1)" >> $GITHUB_STEP_SUMMARY
94+
echo "- Firecracker Version: $(firecracker-$(uname -m) --version 2>&1 | head -n1)" >> $GITHUB_STEP_SUMMARY
95+
echo "- Docker Version: $(docker --version)" >> $GITHUB_STEP_SUMMARY
96+
97+
- name: Archive test artifacts
98+
if: always()
99+
uses: actions/upload-artifact@v4
100+
with:
101+
name: catalog-core-test-logs-${{ github.run_id }}
102+
path: |
103+
output.log
104+
*/scripts/test/log/*
105+
retention-days: 7

0 commit comments

Comments
 (0)