Skip to content

Commit 968f97e

Browse files
committed
macos13: add support for image in create-runner.sh (#3)
1 parent 2ff7a6e commit 968f97e

File tree

7 files changed

+57
-3
lines changed

7 files changed

+57
-3
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ To build the base vm, first build a clean image:
152152
- Create zvol and libvirt guest with random UUID and MAC address
153153
- `zfs create -V 90G tank/base/servo-macos13.clean`
154154
- `virsh define macos13/guest.xml`
155-
- `virt-clone --preserve-data --check path_in_use=off -o servo-macos13.init -n servo-macos13.clean --nvram /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.servo-macos13.clean.fd -f /var/lib/libvirt/images/OSX-KVM/OpenCore/OpenCore.qcow2 -f /dev/zvol/tank/base/servo-macos13.clean -f /var/lib/libvirt/images/OSX-KVM/BaseSystem.img`
155+
- `virt-clone --preserve-data --check path_in_use=off -o servo-macos13.init -n servo-macos13.clean --nvram /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.servo-macos13.clean.fd --skip-copy sda -f /dev/zvol/tank/base/servo-macos13.clean --skip-copy sdc`
156156
- `cp /var/lib/libvirt/images/OSX-KVM/{OVMF_VARS-1920x1080.fd,OVMF_VARS.servo-macos13.clean.fd}`
157157
- `virsh undefine --keep-nvram servo-macos13.init`
158158
- TODO: improve per-vm nvram management
@@ -199,7 +199,7 @@ To build the base vm, first build a clean image:
199199
- Take another snapshot: `zfs snapshot tank/base/servo-macos13.clean@automated`
200200
- Clone the clean zvol/guest to create the base zvol/guest:
201201
- `zfs clone tank/base/servo-macos13{.clean@automated,}`
202-
- `virt-clone --preserve-data --check path_in_use=off -o servo-macos13.clean -n servo-macos13 --nvram /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.servo-macos13.fd -f /var/lib/libvirt/images/OSX-KVM/OpenCore/OpenCore.qcow2 -f /dev/zvol/tank/base/servo-macos13 -f /var/lib/libvirt/images/OSX-KVM/BaseSystem.img`
202+
- `virt-clone --preserve-data --check path_in_use=off -o servo-macos13.clean -n servo-macos13 --nvram /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.servo-macos13.fd --skip-copy sda -f /dev/zvol/tank/base/servo-macos13 --skip-copy sdc`
203203
- `cp /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.servo-macos13{.clean,}.fd`
204204

205205
Baking new images after deployment

create-runner.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ configuration_name=$1; shift
99
github_runner_label=$1; shift
1010
configure_runner=$script_dir/$configuration_name/configure-runner.sh
1111
register_runner=$script_dir/$configuration_name/register-runner.sh
12+
virt_clone=$script_dir/$configuration_name/virt-clone.sh
1213

1314
vm=$base_vm.$id
1415
>&2 printf '[*] Creating runner: %s\n' $vm
@@ -39,5 +40,5 @@ fi
3940
"$script_dir/mount-runner.sh" $vm $configure_runner "$runner_jitconfig"
4041

4142
libvirt_vm=$SERVO_CI_LIBVIRT_PREFIX-$vm
42-
virt-clone --preserve-data --check path_in_use=off -o $base_vm -n $libvirt_vm -f /dev/zvol/$SERVO_CI_ZFS_PREFIX/$vm
43+
$virt_clone $base_vm $vm
4344
virsh start $libvirt_vm

macos13/configure-runner.sh

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env zsh
2+
# usage: configure-runner.sh <runner_jitconfig> <vm>
3+
script_dir=${0:a:h}/..
4+
. "$script_dir/common.sh"
5+
cache_dir=$script_dir/cache
6+
runner_jitconfig=$1; shift
7+
vm=$1; shift
8+
9+
>&2 echo '[*] Unpacking GitHub Actions runner'
10+
mount_dir=$(pwd)
11+
mkdir -p ~/actions-runner
12+
cd ~/actions-runner
13+
tar xf "$mount_dir/init/actions-runner-osx-x64.tar.gz"
14+
15+
>&2 echo '[*] Injecting GitHub Actions config'
16+
# Register the runner as both ephemeral (one job only) and just-in-time (no token required)
17+
# See also: <https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-just-in-time-runners>
18+
> "$mount_dir/init/runner.sh" echo '~/actions-runner/run.sh --jitconfig '"$runner_jitconfig"

macos13/register-runner.sh

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env zsh
2+
# usage: register-runner.sh <github_runner_label> <vm>
3+
script_dir=${0:a:h}/..
4+
. "$script_dir/common.sh"
5+
github_runner_label=$1; shift
6+
vm=$1; shift
7+
$script_dir/register-runner.sh /Volumes/a/a "$github_runner_label" $vm

macos13/virt-clone.sh

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env zsh
2+
# usage: virt-clone.sh <base_vm> <vm>
3+
script_dir=${0:a:h}/..
4+
. "$script_dir/common.sh"
5+
base_vm=$1; shift
6+
vm=$1; shift
7+
8+
libvirt_vm=$SERVO_CI_LIBVIRT_PREFIX-$vm
9+
virt-clone --preserve-data --check path_in_use=off -o $base_vm -n $libvirt_vm --nvram /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.$vm.fd --skip-copy sda -f /dev/zvol/$SERVO_CI_ZFS_PREFIX/$vm --skip-copy sdc
10+
cp /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.$base_vm.fd /var/lib/libvirt/images/OSX-KVM/OVMF_VARS.$vm.fd

ubuntu2204/virt-clone.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env zsh
2+
# usage: virt-clone.sh <base_vm> <vm>
3+
script_dir=${0:a:h}/..
4+
. "$script_dir/common.sh"
5+
base_vm=$1; shift
6+
vm=$1; shift
7+
8+
libvirt_vm=$SERVO_CI_LIBVIRT_PREFIX-$vm
9+
virt-clone --preserve-data --check path_in_use=off -o $base_vm -n $libvirt_vm -f /dev/zvol/$SERVO_CI_ZFS_PREFIX/$vm

windows10/virt-clone.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env zsh
2+
# usage: virt-clone.sh <base_vm> <vm>
3+
script_dir=${0:a:h}/..
4+
. "$script_dir/common.sh"
5+
base_vm=$1; shift
6+
vm=$1; shift
7+
8+
libvirt_vm=$SERVO_CI_LIBVIRT_PREFIX-$vm
9+
virt-clone --preserve-data --check path_in_use=off -o $base_vm -n $libvirt_vm -f /dev/zvol/$SERVO_CI_ZFS_PREFIX/$vm

0 commit comments

Comments
 (0)