Warpgate answers 401 on its root, a login wall, and the check failed it
(DevScripts issue 2537). Any answer now counts as the app being up,
except no answer, 404/410, a 5xx or a redirect loop. Same rule for VMs.
Version files were set back to 0.0.0-ci for the update test. Shopware's
update_script reads ~/.shopware to pin composer to the installed series
(~6.7.0), so it got ~0.0.0 and failed. Append -dev instead (6.7.16.0-dev):
the engine ranks it below the release, so the update still runs. Commit
hashes keep 0.0.0-ci.
The ARM runner's resolver cannot resolve ports.ubuntu.com since this
afternoon; apt then hangs. The name is now looked up over DNS-over-HTTPS
when needed, and a failing apt prints the runner's network state.
- ARM runs on GitHub's ubuntu-24.04-arm runner (free for public repos), set
up by arm-runner-setup.sh: Incus 6.0 LTS from Zabbly (key pinned, APT
pin), screenshots through Playwright. ARM rows are shown but never count:
not in the headline, the check, the review or the approval, and the job
runs with continue-on-error.
- var_arm64=no is not built on ARM; unset is built with var_arm64=yes.
- arm-script-test.yml builds one script on ARM by hand, posting nothing.
- Update test: only the versions update_script checks are set back.
- The screenshot browser gets a writable HOME.
- vm/ scripts run unattended (VM_UNATTENDED=1) on the Proxmox hosts, IDs
9100-9199, one VM per host at a time. Checks: success line, the VM keeps
running, a DHCP lease, and a ${VM_IP} URL answering 200. Console
screenshot from QEMU when there is no web UI. ARM64-only scripts are
listed as not built.
- Every ct/ script now builds on pve and incus (new incus-test runners,
incus-ci-host-setup.sh); the comment gets a Platform column.
- Spinner frames are dropped from logs and live output.
- The sweeper ignores and removes locks of killed jobs (older than 3h).
Update test: after a passing install, every version file the install
wrote (~/.<app>) is set back to 0.0.0-ci and the container's own
`update` runs unattended, pulling the PR's ct/ script, so
update_script's real path is exercised. It must report "Updated
successfully" without errors, and services and URL are checked again.
Apps without a version file get "nothing to update", a GitHub rate
limit counts as not tested. Separate Install and Update columns in the
report; a failed update requests changes like a failed install.
The job's read-only token is passed to the build so release lookups are
not rate limited (all test containers share one public IP).
/test <app> in an issue builds that app from main, install and update,
and answers in the issue; no check run, review or approval.
A second test host (pve-ci-2) now serves both repositories. The setup
script registered runners as pve-ci-<repo> with --replace, which would
have made it take over the first host's registration; they are now
named <host>-<repo>.
OpenCloud reads var_opencloud_${server}_fqdn for each server in
servers=("opencloud" "collabora" "wopi"), so the scan for literal
var_ names found nothing and the build stopped at the first prompt
(#18586). Templates of the form var_...${x}... are now expanded with
the words of `for x in ...`, or of the array that loop walks; nothing
is executed. Hostname-like answers are derived from the variable name
(ci-opencloud-collabora.example.test), so several cannot collide.
A maintainer comments `/test` on a pull request and a self-hosted
runner on a disposable Proxmox VE host builds every ct/ script the PR
touches (and the ct/ entry point of every changed install/ script),
checks the result and reports back on the PR.
- Gate: only users with write access; builds the latest commit only if
nothing was pushed to the fork after the comment, or a pinned
`/test <full sha>`.
- Build: the PR tree at that commit is served from the test host with
every raw.githubusercontent.com/community-scripts/ProxmoxVE/main URL
rewritten to it, so engine changes in the PR are tested too.
Unattended (mode=default); prompts declared the AGENTS.md way are
pre-answered with CI values.
- Checks: build and install succeed, container running, no failed
units, the URL the script prints answers 200. Screenshot of that URL.
- Report: check run, one comment (results, screenshot, install log,
mentions of the PR author and whoever asked), changes requested on a
real failure, dismissed again on a pass. CPU-feature failures (no
AVX2 on the test host) are marked untestable, not failed.
- The test job has a read-only token and no secrets; its runner carries
only the proxmox-test label. Container IDs 9050-9099.
Same file as in DevScripts; github.repository selects the URLs and the
container ID range.
generate-app-headers.sh read APP with a plain grep -oP, so a script that
sets APP twice yielded both lines and the filename became
"almalinux
almalinux${var_version}vm". Three of those are in the tree
and they make main impossible to check out on Windows.
Nothing reads vm/headers: get_header fetches banners from the core
repo, which already carries clean almalinux, debian and ubuntu.
* Remove unwanted output from workflow
* Remove unwanted output from workflow
* update .yml so it supports external repos
* update .yml so it supports external repos