Fix release deploy: use a Node-based image so checkout's JS action runs
CI / test (push) Successful in 2m58s
Release / test (push) Successful in 3m0s
Release / build-and-deploy (push) Failing after 36s

docker:27-cli is Alpine with no Node.js, but actions/checkout@v4 is a
JS action that needs a Node runtime in the job container — it failed
at Checkout with exit 127. node:22-bookworm-slim already has Node
(same reason the test job's node:22-alpine works); Docker CLI and
openssh-client are added via apt instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-26 00:42:29 +02:00
co-authored by Claude Sonnet 5
parent 517f640666
commit eca8e24fd9
+17 -8
View File
@@ -38,19 +38,28 @@ jobs:
# The anouma-runner runs as a Docker container itself (gitea/runner:3), # The anouma-runner runs as a Docker container itself (gitea/runner:3),
# with the host's docker.sock bind-mounted in but no `docker` CLI binary # with the host's docker.sock bind-mounted in but no `docker` CLI binary
# of its own — a job with no `container:` here runs directly inside that # of its own — a job with no `container:` here runs directly inside that
# minimal runner image and gets "docker: command not found". Using the # minimal runner image and gets "docker: command not found".
# official Docker CLI image instead gives this job the `docker` binary, #
# and the runner auto-mounts the same host docker.sock into it (sibling # A plain `docker:27-cli` image (Alpine, no Node.js) doesn't work either:
# containers — see container.docker_host in the runner's config.yaml), # actions/checkout@v4 is a JS action and needs a Node runtime in the job
# so `docker build`/`push` operate on the host's real Docker daemon. # container, which that image doesn't have — it failed at Checkout with
# exit 127. Using a Node image as the base guarantees Node is already
# there (same reason the `test` job's node:22-alpine works), and the
# Docker CLI + ssh client are added via apt. The runner auto-mounts the
# same host docker.sock into this container (sibling containers — see
# container.docker_host in the runner's config.yaml), so `docker
# build`/`push` operate on the host's real Docker daemon.
container: container:
image: docker:27-cli image: node:22-bookworm-slim
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install ssh client - name: Install Docker CLI and ssh client
run: apk add --no-cache openssh-client run: |
apt-get update
apt-get install -y --no-install-recommends docker.io openssh-client
rm -rf /var/lib/apt/lists/*
- name: Determine image tags - name: Determine image tags
id: image id: image