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 f5bd3e4a30
commit 463cce6a52
3 changed files with 38 additions and 5 deletions
+17 -3
View File
@@ -29,13 +29,27 @@ and [tic80-tools](../tic80-tools).
in sync with `EXPORT_PRESET` in the Makefile. in sync with `EXPORT_PRESET` in the Makefile.
3. Copy `example-woodpecker.yaml` to `.woodpecker.yaml` and add the 3. Copy `example-woodpecker.yaml` to `.woodpecker.yaml` and add the
`droparea_ssh_password` / `update_secret_key` secrets in Woodpecker. `droparea_ssh_password` / `update_secret_key` secrets in Woodpecker.
Match the `barichello/godot-ci` image tag to the Godot version the Match the `godot-builder` image tag to the Godot version the
project is made with (e.g. `4.6`) — the image ships the matching project is made with (e.g. `4.6`) — the underlying
export templates. `barichello/godot-ci` image ships the matching export templates.
4. Copy `example-tasks.json` to `.vscode/tasks.json`. 4. Copy `example-tasks.json` to `.vscode/tasks.json`.
The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea, The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea,
then triggers then triggers
`/update?platform=godot&name=$(PROJECT)&version=$(VERSION)`. `/update?platform=godot&name=$(PROJECT)&version=$(VERSION)`.
## Builder image
`builder.Dockerfile` wraps `barichello/godot-ci` (editor + web export
templates) with make/zip preinstalled as
`git.teletype.hu/internal/godot-builder`, so the build step no longer
runs `apt-get` on every run. The tag tracks the Godot version:
```sh
docker build --platform linux/amd64 -f builder.Dockerfile \
--build-arg GODOT_VERSION=4.6 \
-t git.teletype.hu/internal/godot-builder:4.6 .
docker push git.teletype.hu/internal/godot-builder:4.6
```
Detailed documentation lives on the wiki: `/development/godot`. Detailed documentation lives on the wiki: `/development/godot`.
+20
View File
@@ -0,0 +1,20 @@
# CI builder image for Godot projects: barichello/godot-ci (editor + web
# export templates) with make/zip preinstalled, so the pipeline's build step
# does not run apt-get on every run.
#
# Keep the tag in sync with the Godot version the projects use.
#
# Build & push (the CI runner is linux/amd64):
# docker build --platform linux/amd64 -f builder.Dockerfile \
# --build-arg GODOT_VERSION=4.6 \
# -t git.teletype.hu/internal/godot-builder:4.6 .
# docker push git.teletype.hu/internal/godot-builder:4.6
ARG GODOT_VERSION=4.6
FROM barichello/godot-ci:${GODOT_VERSION}
RUN apt-get update \
&& apt-get install -y --no-install-recommends make zip jq \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
+1 -2
View File
@@ -6,9 +6,8 @@ steps:
- make ci-version - make ci-version
- name: build - name: build
image: barichello/godot-ci:4.6 image: git.teletype.hu/internal/godot-builder:4.6
commands: commands:
- apt-get update && apt-get install -y --no-install-recommends make zip
- make ci-export - make ci-export
- name: artifact - name: artifact