feat(ci): unify CI and local integration test infrastructure

- Replace tests/infrastructure/Dockerfile with tests/Dockerfile.test
  (single multi-stage Dockerfile for both CI and local dev)
- CI container-image job now builds from Dockerfile.test target dev-infra
- Add ARM support: PowerShell installed via dotnet tool on arm64,
  APT package on amd64
- Replace tests/dev.sh (bash) with tests/dev.ps1 (PowerShell) for
  cross-platform support (Windows, macOS, Linux)
- Add -DockerHost parameter for running x86 containers on a remote
  Docker host from ARM Macs (rsyncs repo, uses SSH Docker transport)
- Add -NoCleanup switch to keep nested PVE VMs after integration tests
- integration command now provisions nested PVE VMs instead of testing
  against a pre-existing PVE directly
- Share /opt/pve-isos host path between CI and local dev (was separate
  Docker named volume)
- Delete tools/Invoke-Tests.ps1 (unused, overlapped with run-integration.sh)
- Add .gitignore entries for Terraform state/artifacts
- Update all documentation references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Clint Branham
2026-03-24 10:41:28 -05:00
parent c1e1442155
commit f21c7f84b7
13 changed files with 304 additions and 617 deletions
+10 -14
View File
@@ -1,21 +1,17 @@
# PSProxmoxVE integration test configuration.
# Copy to .env.test and fill in values. This file is gitignored.
#
# These credentials point to the PARENT PVE host where nested test VMs
# will be provisioned. Integration tests run against the nested VMs,
# not against this host directly.
# ── For testing against a pre-existing PVE (./tests/dev.sh integration) ──
PVETEST_HOST=pve.example.com
PVETEST_PORT=8006
PVETEST_APITOKEN=user@realm!tokenid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
PVETEST_NODE=pve1
PVETEST_STORAGE=local
PVETEST_PASSWORD=<your-test-password>
# ── Required: parent PVE for provisioning ─────────────────────────────
PVE_ENDPOINT=https://pve.example.com:8006
PVE_API_TOKEN=user@realm!tokenid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
PVE_TARGET_NODE=pve1
PVE_PASSWORD=<root-password-for-nested-pve>
# ── For full provisioning (./tests/dev.sh provision, x86 only) ───────────
# PVE_ENDPOINT=https://pve.example.com:8006
# PVE_API_TOKEN=user@realm!tokenid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# PVE_TARGET_NODE=pve1
# PVE_PASSWORD=<root-password-for-nested-pve>
# ── Optional overrides ──────────────────────────────────────────────────
# ── Optional overrides ────────────────────────────────────────────────
# CACHE_DIR=/opt/pve-isos
# WORK_DIR=/tmp/pve-integration
# PVE_VERSIONS=9 8