From 932cc0dcf507015374a383ed30cd7ad1dde63da9 Mon Sep 17 00:00:00 2001 From: "goodolclint-claude[bot]" <323206664+goodolclint-claude[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 20:13:33 +0000 Subject: [PATCH 1/2] ci: retire the PVE 8 integration leg PVE 8 reached EOL 2026-08-31. The full matrix needs 42GiB free on one parent node; no node has that after the fleet rebuild, so the headroom guard blocks every run. Dropping the 8a/8b pair brings the requirement to 26GiB. The module keeps PVE 8 runtime support and the script still accepts PVE_VERSIONS='9 8' for local runs; the PVE-8-only Pester contexts stay for SKIP_PROVISION runs against real PVE 8 hosts. Also counts the storage VM in the headroom error message. Co-Authored-By: Claude Fable 5 --- .github/workflows/integration-tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index b20f66a..b3b3ff7 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -61,6 +61,9 @@ env: SCRIPTS_DIR: tests/infrastructure/scripts TEST_IMAGE: ghcr.io/goodolclint/psproxmoxve-integration CACHE_DIR: /opt/pve-integration + # PVE 8 reached EOL 2026-08-31; CI provisions and tests PVE 9 only. + # run-integration.sh still accepts "8" for local runs against old targets. + PVE_VERSIONS: '9' jobs: # ── Build module artifact (GitHub-hosted) ──────────────────────── @@ -158,9 +161,8 @@ jobs: - /opt/pve-integration:/opt/pve-integration strategy: fail-fast: false - max-parallel: 2 matrix: - pve_version: ['9', '8'] + pve_version: ['9'] steps: - uses: actions/checkout@v7 From 77c65107881c1412c2cca995184499bc13a3270e Mon Sep 17 00:00:00 2001 From: "goodolclint-claude[bot]" <323206664+goodolclint-claude[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 20:15:50 +0000 Subject: [PATCH 2/2] ci: default PVE_VERSIONS to 9, count storage VM in headroom message Co-Authored-By: Claude Fable 5 --- tests/infrastructure/scripts/run-integration.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/infrastructure/scripts/run-integration.sh b/tests/infrastructure/scripts/run-integration.sh index aa238e5..3cef75d 100644 --- a/tests/infrastructure/scripts/run-integration.sh +++ b/tests/infrastructure/scripts/run-integration.sh @@ -41,7 +41,7 @@ # WORK_DIR Temp dir for build artifacts (default: $CACHE_DIR/work) # CONFIG_FILE Test config JSON path (default: $WORK_DIR/config.json) # MODULE_ARTIFACT Path to built module DLLs (default: ./publish/netstandard2.0) -# PVE_VERSIONS Space-separated versions to provision (default: "9 8") +# PVE_VERSIONS Space-separated versions to provision (default: "9"; "9 8" still works) # STORAGE_ISCSI_IQN iSCSI IQN for storage target (default: iqn.2024-01.local.test:storage) # STORAGE_VM_IP Static CIDR address for the storage VM on the CI VLAN, # outside the DHCP range (default: 172.16.60.60/24) @@ -63,7 +63,7 @@ CACHE_DIR="${CACHE_DIR:-/opt/pve-integration}" WORK_DIR="${WORK_DIR:-$CACHE_DIR/work}" CONFIG_FILE="${CONFIG_FILE:-$WORK_DIR/config.json}" MODULE_ARTIFACT="${MODULE_ARTIFACT:-$REPO_ROOT/publish/netstandard2.0}" -PVE_VERSIONS="${PVE_VERSIONS:-9 8}" +PVE_VERSIONS="${PVE_VERSIONS:-9}" SKIP_PROVISION="${SKIP_PROVISION:-false}" STORAGE_ISCSI_IQN="${STORAGE_ISCSI_IQN:-iqn.2024-01.local.test:storage}" STORAGE_VM_IP="${STORAGE_VM_IP:-172.16.60.60/24}" @@ -196,7 +196,7 @@ resolve_target_node() { if [[ -z "$free" ]]; then log "WARNING: no memory stats for $PVE_TARGET_NODE (token lacks PVEAuditor on /nodes?) — skipping the headroom check" elif (( free < need )); then - ci_error "Refusing to provision: $PVE_TARGET_NODE has ${free}GiB free, need ${need}GiB ($count VMs x ${PVE_VM_MEM_GB:-8}GiB + ${PVE_MEM_HEADROOM_GB:-8}GiB headroom)" + ci_error "Refusing to provision: $PVE_TARGET_NODE has ${free}GiB free, need ${need}GiB ($count VMs x ${PVE_VM_MEM_GB:-8}GiB + 2GiB storage VM + ${PVE_MEM_HEADROOM_GB:-8}GiB headroom)" exit 1 else log "Target node $PVE_TARGET_NODE: ${free}GiB free, need ${need}GiB" @@ -207,7 +207,7 @@ resolve_target_node() { export PVE_TARGET_NODE } -# ── Subcommands ─────────────────────────────────────────────────── +# ── Subcommands ───────────────────────────────────────────────────── cmd_provision() { local requested="${1:-all}" @@ -784,7 +784,7 @@ cmd_all() { return $test_exit } -# ── Main ─────────────────────────────────────────────────────────── +# ── Main ──────────────────────────────────────────────────────────── main() { local cmd="${1:-}" shift || true