fix(website): build on Hugo 0.147 again (site.Data), chown site trees even when the CI build fails
Some checks failed
CI / lint (push) Failing after 31s
CI / validate-json (push) Successful in 22s
CI / test (push) Successful in 1m23s
Deploy site / deploy (push) Successful in 5s
CI / markdown-links (push) Successful in 14s

hugo.Data is not available in the alpine Hugo the deploy job uses; the
failed render left the webroot half-cleaned and root-owned because the
chown only ran after a successful build. It is an EXIT trap now.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MScAinbyMdeNc7H2BZdnnG
This commit is contained in:
Daniel Maksymilian Syrnicki 2026-08-26 13:35:40 +02:00
parent 5d827e5eab
commit 22ce03d1f0
2 changed files with 9 additions and 8 deletions

View file

@ -11,6 +11,13 @@ HERE="$(cd "$(dirname "$0")" && pwd)"
SRCROOT="${FURTKA_SRCROOT:-/srv/furtka-site}"
WEBROOT="${FURTKA_WEBROOT:-/var/www/furtka.org}"
# The runner job runs as root inside the container; hand the trees back
# to the VM user no matter how this script ends, so the manual deploy.sh
# path keeps working even after a failed build.
if [ "$(id -u)" = 0 ]; then
trap 'chown -R "${FURTKA_OWNER:-1000:1000}" "$SRCROOT" "$WEBROOT"' EXIT
fi
echo "==> rsync website/ → $SRCROOT"
rsync -az --delete \
--exclude='.hugo_build.lock' \
@ -24,10 +31,4 @@ echo "==> hugo build → $WEBROOT"
cd "$SRCROOT"
hugo --minify --cleanDestinationDir -d "$WEBROOT"
# The runner job runs as root inside the container; hand the trees back
# to the VM user so the manual deploy.sh path keeps working afterwards.
if [ "$(id -u)" = 0 ]; then
chown -R "${FURTKA_OWNER:-1000:1000}" "$SRCROOT" "$WEBROOT"
fi
echo "OK: deployed to https://furtka.org/"

View file

@ -1,7 +1,7 @@
{{ define "main" }}
{{- $p := .Params -}}
{{- $M := hugo.Data.logo.m -}}
{{- $R := hugo.Data.logo.r -}}
{{- $M := site.Data.logo.m -}}
{{- $R := site.Data.logo.r -}}
{{- $s := $p.show -}}
<article class="poll" data-poll="{{ $p.poll }}" data-api="/api/poll/{{ $p.poll }}">
<header class="page-header">