diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 500a311..416f13c 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -38,19 +38,28 @@ jobs: # 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 # of its own — a job with no `container:` here runs directly inside that - # minimal runner image and gets "docker: command not found". Using the - # official Docker CLI image instead gives this job the `docker` binary, - # and the runner auto-mounts the same host docker.sock into it (sibling - # containers — see container.docker_host in the runner's config.yaml), - # so `docker build`/`push` operate on the host's real Docker daemon. + # minimal runner image and gets "docker: command not found". + # + # A plain `docker:27-cli` image (Alpine, no Node.js) doesn't work either: + # actions/checkout@v4 is a JS action and needs a Node runtime in the job + # 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: - image: docker:27-cli + image: node:22-bookworm-slim steps: - name: Checkout uses: actions/checkout@v4 - - name: Install ssh client - run: apk add --no-cache openssh-client + - name: Install Docker CLI and ssh 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 id: image