The act runner's Docker volume mount path doesn't resolve to a
valid host path, causing 403 Forbidden from nginx. Copy files
directly into the container instead.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The nginx:alpine image runs as UID 101 which can't read
root-owned files from the CI build. chmod o+rX allows the
nginx user to serve the static files.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
act runner post-step runs in isolated context that can't find node
regardless of symlinks. Revert to container approach but switch to
Aliyun mirror for faster apk downloads (~2min → ~10s).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Node is installed via nvm at /root/.nvm which isn't in the runner's
shell PATH. Symlink node, npm, npx to /usr/bin so they're available
in all contexts including post-step cleanup.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
GITHUB_PATH doesn't apply to post-step cleanup context. Symlink
node to /usr/bin so the runner can find it during cleanup.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The host has node installed but act runner shell steps don't include
it in PATH. Add it via GITHUB_PATH before checkout.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The host runner already has git and docker-cli installed, so running
inside node:22-alpine container and installing tools is unnecessary.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The self-hosted Aliyun runner drops connections to github.com mid-clone
(GFW), causing unexpected EOF errors. Switch to a locally mirrored
actions/checkout and point it at the Gitea server for repo cloning.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
act runner cannot find node in PATH during post-step cleanup. Running
all steps inside a node:22-alpine container ensures node is always
available. Removes actions/setup-node as it's no longer needed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
v4 actions require Node 20 in PATH during post-step cleanup, which act
does not provide. v3 uses Node 16 that act bundles by default.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>