修复 LXC 内 microVM Runner 启动链路
test / python (pull_request) Successful in 10s
test / shell (pull_request) Successful in 16s

This commit is contained in:
2026-09-16 16:38:03 +00:00
parent 33cbd23861
commit 3641e6ffb3
5 changed files with 36 additions and 6 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ instance=${2:?Gitea instance is required}
runner_name=${3:?runner name is required}
runner_labels=${4:?runner labels are required}
token_file=/run/gitea-runner-registration-token
config_file=${GITEA_RUNNER_CONFIG_FILE:-/etc/gitea-runner/config-vm-bootstrap.yaml}
cleanup() {
rm -f -- "$token_file"
@@ -25,4 +26,4 @@ gitea-runner register \
--labels "$runner_labels" \
--token-file "$token_file"
rm -f -- "$token_file"
gitea-runner daemon
gitea-runner daemon --config "$config_file" --once
+7 -4
View File
@@ -39,7 +39,9 @@ trap cleanup EXIT INT TERM
test -r "$base_image"
test -r "$firmware"
install -d -m 0700 "$state_root/instances" "$vm_dir"
qemu-img create -q -f qcow2 -F qcow2 -b "$base_image" "$overlay"
# Cloud Hypervisor cannot open qcow2 backing chains. Keep each disposable
# root disk flat; reflink-capable storage still makes this copy cheap.
cp --reflink=auto --sparse=always "$base_image" "$overlay"
cat >"$vm_dir/meta-data" <<EOF
instance-id: $instance_id
@@ -48,7 +50,8 @@ EOF
cat >"$vm_dir/user-data" <<EOF
#cloud-config
runcmd:
- [ /usr/local/libexec/gitea-microvm-guest-runner, "$token_url/token/$nonce", "$gitea_instance", "gitea-${instance_id%%-*}", "$runner_labels" ]
- [ sh, -c, "curl --fail --silent --show-error --retry 10 --retry-all-errors $token_url/assets/guest-assets.tar.gz | tar -xz -C /" ]
- [ /usr/local/libexec/gitea-microvm-guest-runner, "$token_url/token/$nonce", "$gitea_instance", "gitea-vm-${instance_id%%-*}", "$runner_labels" ]
EOF
cloud-localds "$seed" "$vm_dir/user-data" "$vm_dir/meta-data"
@@ -67,8 +70,8 @@ timeout --signal=TERM --kill-after=30s "$vm_timeout" "$cloud_hypervisor" \
--firmware "$firmware" \
--cpus "boot=$cpus" \
--memory "size=$memory" \
--disk "path=$overlay" \
--disk "path=$seed,readonly=on" \
--disk "path=$overlay,image_type=qcow2" \
--disk "path=$seed,readonly=on,image_type=raw" \
--net "tap=$tap,mac=$mac" \
--serial "file=$serial" \
--console off