Add CI builder image and use it in the pipeline

builder.Dockerfile bakes the build step's dependencies into
git.teletype.hu/internal/* so the pipeline no longer installs
packages on every run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 19:17:14 +02:00
co-authored by Claude Fable 5
parent 395f761870
commit c52dce6702
3 changed files with 30 additions and 5 deletions
+14 -3
View File
@@ -10,9 +10,12 @@ projects, in the same spirit as
Woodpecker pipeline targets (`ci-version`, `ci-export`, `ci-upload`, Woodpecker pipeline targets (`ci-version`, `ci-export`, `ci-upload`,
`ci-update`). `ci-update`).
- `example-woodpecker.yaml` — Woodpecker pipeline: version → build - `example-woodpecker.yaml` — Woodpecker pipeline: version → build
(`node:22-alpine`, syntax check + web bundle) → upload (scp to the (syntax check + web bundle in the
droparea) → update (calls the teletypegames `/update` endpoint with `git.teletype.hu/internal/phaser-builder` image) → upload (scp to
`platform=phaser`). the droparea) → update (calls the teletypegames `/update` endpoint
with `platform=phaser`).
- `builder.Dockerfile` — the CI builder image: `node:22-alpine` with
make/zip/curl baked in.
- `example-tasks.json` — VS Code `.vscode/tasks.json` with the common - `example-tasks.json` — VS Code `.vscode/tasks.json` with the common
dev tasks: **Serve** (`make serve`, default build task, dev tasks: **Serve** (`make serve`, default build task,
`Cmd+Shift+B`), **Build Web** and **Make build**. `Cmd+Shift+B`), **Build Web** and **Make build**.
@@ -42,4 +45,12 @@ The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea,
then triggers then triggers
`/update?platform=phaser&name=$(PROJECT)&version=$(VERSION)`. `/update?platform=phaser&name=$(PROJECT)&version=$(VERSION)`.
## Builder image
```sh
docker build --platform linux/amd64 -f builder.Dockerfile \
-t git.teletype.hu/internal/phaser-builder:latest .
docker push git.teletype.hu/internal/phaser-builder:latest
```
Detailed documentation lives on the wiki: `/development/phaser`. Detailed documentation lives on the wiki: `/development/phaser`.
+15
View File
@@ -0,0 +1,15 @@
# CI builder image for Phaser projects: Node (syntax check) + packaging
# tools, so the pipeline's build step does not run apk on every run.
#
# Build & push (the CI runner is linux/amd64):
# docker build --platform linux/amd64 -f builder.Dockerfile \
# -t git.teletype.hu/internal/phaser-builder:latest .
# docker push git.teletype.hu/internal/phaser-builder:latest
FROM node:22-alpine
RUN apk add --no-cache make zip curl git
WORKDIR /workspace
CMD ["/bin/sh"]
+1 -2
View File
@@ -6,9 +6,8 @@ steps:
- make ci-version - make ci-version
- name: build - name: build
image: node:22-alpine image: git.teletype.hu/internal/phaser-builder:latest
commands: commands:
- apk add --no-cache zip make curl
- make ci-export - make ci-export
- name: upload - name: upload