From 96a176339277e77c1b2c2a16e18cb250a6f6d299 Mon Sep 17 00:00:00 2001 From: Codex Bot Date: Wed, 28 Oct 2026 20:18:48 +0800 Subject: [PATCH] ci: add guarded manual root disk expansion for the Lean runner --- .../workflows/runner-storage-maintenance.yml | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .gitea/workflows/runner-storage-maintenance.yml diff --git a/.gitea/workflows/runner-storage-maintenance.yml b/.gitea/workflows/runner-storage-maintenance.yml new file mode 100644 index 0000000..2fb786e --- /dev/null +++ b/.gitea/workflows/runner-storage-maintenance.yml @@ -0,0 +1,49 @@ +name: runner-storage-maintenance + +# Manual-only. Never runs on push or pull_request. +on: + workflow_dispatch: + inputs: + confirm: + description: Enter EXPAND_RUNNER_ROOT after owner approval + required: true + type: string + +jobs: + expand-root: + if: ${{ github.event_name == 'workflow_dispatch' && inputs.confirm == 'EXPAND_RUNNER_ROOT' }} + runs-on: ubuntu24.04-x64-lean4.35 + timeout-minutes: 20 + steps: + - name: Back up partition table and expand the authorized ext4 root + run: | + # Owner-authorized manual-only root partition/filesystem expansion. + set -euo pipefail + exec 9>/var/lock/lean-bench-root-maintenance.lock + flock -n 9 + [ "$(hostname)" = "iZ6we8b3jgd6nc2qehu06lZ" ] + [ "$(id -u)" = 0 ] + [ "$(blkid -s PARTUUID -o value /dev/nvme0n1p3 | tr A-Z a-z)" = 9b694bad-5bbb-4485-860f-e5544ae47410 ] + [ "$(findmnt -n -o SOURCE /)" = /dev/nvme0n1p3 ] + [ "$(findmnt -n -o FSTYPE /)" = ext4 ] + [ "$(lsblk -n -o START /dev/nvme0n1p3 | tr -d ' ')" = 413696 ] + [ "$(blockdev --getsize64 /dev/nvme0n1)" -ge 161061273600 ] + backup_dir="/root/lean-bench-maintenance/$(date -u +%Y%m%dT%H%M%SZ)" + install -d -m 700 "$backup_dir" + sfdisk --dump /dev/nvme0n1 > "$backup_dir/nvme0n1.sfdisk" + sync + printf 'Partition-table backup: %s\n' "$backup_dir/nvme0n1.sfdisk" + set +e + growpart -N /dev/nvme0n1 3 > "$backup_dir/growpart-dry-run.log" 2>&1 + probe_status=$? + set -e + if [ "$probe_status" = 0 ]; then + growpart /dev/nvme0n1 3 + elif ! grep -q '^NOCHANGE:' "$backup_dir/growpart-dry-run.log"; then + cat "$backup_dir/growpart-dry-run.log" + exit "$probe_status" + fi + resize2fs /dev/nvme0n1p3 + [ "$(lsblk -n -o START /dev/nvme0n1p3 | tr -d ' ')" = 413696 ] + lsblk -e 7 -o NAME,PATH,SIZE,FSTYPE,MOUNTPOINTS + df -hT / /var/lib/docker