feat(builds): populate builds page with Linux and Android history (#94)
The builds page at /builds/ was empty because generate-build-history
only ran inside deploy-playstore; if that job failed early (e.g. Play
Store secrets not configured) the website was never updated, and the
build-linux job never triggered a website update at all.
Changes:
- generate_build_history.py: extend to cover Linux tarballs in addition
to Android APKs, capped at MAX_BUILDS_PER_PLATFORM (30) each
- Taskfile: add website-publish task (generate-build-history +
website-deploy), exclude *.tar.gz from rsync, update descriptions
- .forgejo/workflows/ci.yml: add publish-website job that waits for
both build-linux and deploy-playstore (using always() so it runs
even when deploy-playstore fails), then removes the duplicate
generate/deploy steps from deploy-playstore
- .github/workflows/ci.yml: add deploy job that deploys Linux build,
generates build history, builds Hugo site, and rsyncs to server
- .gitignore: ignore website/content/builds/_index.md (generated),
Python __pycache__, and widget test failure screenshots
- stalwart-dev/integration_ui_test.sh: use ${USER:-$(id -un)} for
robustness in environments where USER is unset
- scripts/test_generate_build_history.py: unit tests for parse_builds
and render_entries covering both platforms
Generated content (builds/_index.md and per-day pages) is not tracked
in git; it is produced at CI time and rsynced to the server.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
0620663630
commit
cf277064cc
@@ -46,7 +46,7 @@ command -v xvfb-run >/dev/null || {
|
||||
# but the leftover Xvfb's stale /tmp/.X11-unix/X<N> socket and lock file confuse
|
||||
# its cleanup, producing "kill: No such process" on exit and a non-zero status
|
||||
# even when the test itself passed.
|
||||
for _xvfb_pid in $(pgrep -u "$USER" -x Xvfb 2>/dev/null); do
|
||||
for _xvfb_pid in $(pgrep -u "${USER:-$(id -un)}" -x Xvfb 2>/dev/null); do
|
||||
_xvfb_display=$(tr '\0' ' ' < "/proc/${_xvfb_pid}/cmdline" 2>/dev/null \
|
||||
| grep -oE ':[0-9]+' | head -1)
|
||||
kill "$_xvfb_pid" 2>/dev/null || true
|
||||
@@ -109,8 +109,8 @@ ts "flutter test start"
|
||||
# Stale processes can hold onto the Xvfb display, causing the new Flutter app
|
||||
# to hang indefinitely during GTK initialisation without ever connecting back
|
||||
# to the flutter test runner.
|
||||
pkill -u "$USER" -f "sharedinbox" 2>/dev/null || true
|
||||
pkill -u "$USER" -f "flutter.*integration" 2>/dev/null || true
|
||||
pkill -u "${USER:-$(id -un)}" -f "sharedinbox" 2>/dev/null || true
|
||||
pkill -u "${USER:-$(id -un)}" -f "flutter.*integration" 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
# Find an unused display number.
|
||||
@@ -145,7 +145,7 @@ for _attempt in 1 2; do
|
||||
[ "$_e2e_exit" -eq 0 ] && break || true
|
||||
if [ $_attempt -lt 2 ]; then
|
||||
ts "E2E attempt $_attempt failed (exit $_e2e_exit), restarting Xvfb and retrying..."
|
||||
pkill -u "$USER" -f "sharedinbox" 2>/dev/null || true
|
||||
pkill -u "${USER:-$(id -un)}" -f "sharedinbox" 2>/dev/null || true
|
||||
# Kill the old Xvfb and start a fresh one on a new display number.
|
||||
kill "${XVFB_PID:-}" 2>/dev/null || true
|
||||
wait "${XVFB_PID:-}" 2>/dev/null || true
|
||||
|
||||
Reference in New Issue
Block a user