@@ -3,9 +3,6 @@ name: Qemu
3
3
4
4
on : workflow_call
5
5
6
- env :
7
- CI_BRANCH : " ${{ github.head_ref || github.ref_name }}"
8
-
9
6
permissions :
10
7
contents : read
11
8
@@ -15,38 +12,43 @@ jobs:
15
12
runs-on : ubuntu-22.04
16
13
17
14
steps :
18
- - name : Checkout
15
+ - name : Checkout UMF
19
16
uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
20
17
with :
21
18
fetch-depth : 0
19
+ path : umf
22
20
23
21
- name : Enable KVM
24
22
run : |
25
23
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
26
24
sudo udevadm control --reload-rules
27
25
sudo udevadm trigger --name-match=kvm
28
- - name : Install qemu
29
- run : |
30
- sudo apt update && sudo apt install -y qemu-system genisoimage qemu-utils
31
- - name : Install libvirt and script dependencies
26
+
27
+ - name : Install dependencies
32
28
run : |
33
- sudo apt-get install -y libvirt-clients libvirt-daemon-system libvirt-daemon virtinst bridge-utils
34
- pip install -r scripts/qemu/requirements.txt
35
- sudo usermod -a -G kvm,libvirt $USER
29
+ sudo apt-get update
30
+ sudo apt-get install -y qemu-system genisoimage qemu-utils \
31
+ libvirt-clients libvirt-daemon-system libvirt-daemon virtinst bridge-utils
32
+ pip install -r umf/scripts/qemu/requirements.txt
33
+
34
+ - name : Add user to kvm group
35
+ run : sudo usermod -a -G kvm,libvirt $USER
36
+
36
37
- name : Run ssh-keygen
37
38
run : ssh-keygen -b 4096 -N '' -f ~/.ssh/id_rsa
39
+
38
40
- name : Generate iso with user info
39
41
run : |
40
42
pub_key=$(cat ~/.ssh/id_rsa.pub)
41
43
42
44
cat > user-data << EOF
43
45
#cloud-config
44
46
45
- # Add a 'cxltest ' user to the system with a password
47
+ # Add a 'testuser ' user to the system with a password
46
48
users:
47
49
- default
48
- - name: cxltest
49
- gecos: CXL Test User
50
+ - name: testuser
51
+ gecos: Test User
50
52
primary_group: wheel
51
53
groups: users
52
54
sudo: ALL=(ALL) NOPASSWD:ALL
@@ -59,54 +61,47 @@ jobs:
59
61
chpasswd:
60
62
list: |
61
63
root:password
62
- cxltest :password
64
+ testuser :password
63
65
expire: False
64
66
EOF
65
67
66
68
cat > meta-data << EOF
67
- instance-id: cxl -test
68
- local-hostname: cxl -test
69
+ instance-id: qemu -test
70
+ local-hostname: qemu -test
69
71
EOF
70
72
71
73
sudo -Sk genisoimage -output ubuntu-cloud-init.iso -volid cidata -joliet -rock ./user-data ./meta-data
74
+
72
75
- name : Download ubuntu image
73
76
run : wget https://cloud-images.ubuntu.com/releases/lunar/release/ubuntu-23.04-server-cloudimg-amd64.img
77
+
74
78
- name : Resize image
75
79
run : qemu-img resize ./ubuntu-23.04-server-cloudimg-amd64.img +4G
76
- - name : Build
77
- run : |
78
- scripts/qemu/start_qemu.sh scripts/qemu/configs/default.xml
79
80
80
- if [ ${{ github.event_name }} = 'pull_request' ]; then
81
- CI_REPO="${{ github.event.pull_request.head.repo.full_name }}"
82
- else
83
- CI_REPO="$GITHUB_REPOSITORY"
84
- fi
81
+ - name : Build UMF in QEMU
82
+ run : |
83
+ umf/scripts/qemu/start_qemu.sh default.xml
85
84
86
- scp -P 2222 ${{github.workspace}}/scripts/qemu/run-build.sh [email protected] :/ home/cxltest
87
- scp -P 2222 ${{github.workspace}}/scripts/qemu/run-tests.sh cxltest @127.0.0.1:/home/cxltest
88
- ssh cxltest @127.0.0.1 -p 2222 -t "bash /home/cxltest/run-build.sh https://github.com/$CI_REPO ${{env.CI_BRANCH}} "
85
+ # Copy UMF repository's content into the home dir in QEMU
86
+ rsync -az -e "ssh -p 2222" ${{github.workspace}}/umf/ testuser @127.0.0.1:/home/testuser/
87
+ ssh testuser @127.0.0.1 -p 2222 -t "sudo chown -R testuser:users /home/testuser "
89
88
90
- ssh [email protected] -p 2222 -t "sudo shutdown -h now"
89
+ ssh [email protected] -p 2222 -t "bash /home/testuser/scripts/qemu/run-build.sh"
90
+ ssh [email protected] -p 2222 -t "sudo shutdown -h now"
91
91
92
- - name : Run tests
92
+ - name : Run tests in QEMU
93
93
run : |
94
- for config_file in scripts/qemu/configs/*.xml; do
95
- config_name=$(basename $config_file .xml )
94
+ for config_file in umf/ scripts/qemu/configs/*.xml; do
95
+ config_name=$(basename $config_file)
96
96
97
- echo testing $config_name
98
97
while ps -aux | grep qemu-system-x86_64 | grep -q -v grep; do
99
98
echo "Waiting for QEMU to shut down..."
100
99
sleep 5
101
100
done
102
- scripts/qemu/start_qemu.sh $config_file
103
-
104
- if [ ${{ github.event_name }} = 'pull_request' ]; then
105
- CI_REPO="${{ github.event.pull_request.head.repo.full_name }}"
106
- else
107
- CI_REPO="$GITHUB_REPOSITORY"
108
- fi
109
-
110
- ssh [email protected] -p 2222 -t "bash /home/cxltest/run-tests.sh"
111
- ssh [email protected] -p 2222 -t "sudo shutdown -h now"
101
+
102
+ echo "\n ### Testing ${config_name} ###"
103
+ umf/scripts/qemu/start_qemu.sh ${config_name}
104
+
105
+ ssh [email protected] -p 2222 -t "bash /home/testuser/scripts/qemu/run-tests.sh"
106
+ ssh [email protected] -p 2222 -t "sudo shutdown -h now"
112
107
done
0 commit comments