From 463cce6a52eea171594bf4b572849cdb18070d2c Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Fri, 31 Jul 2026 19:17:14 +0200 Subject: [PATCH] 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 --- README.md | 20 +++++++++++++++++--- builder.Dockerfile | 20 ++++++++++++++++++++ example-woodpecker.yaml | 3 +-- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 builder.Dockerfile diff --git a/README.md b/README.md index 927085f..cedeb71 100644 --- a/README.md +++ b/README.md @@ -29,13 +29,27 @@ and [tic80-tools](../tic80-tools). in sync with `EXPORT_PRESET` in the Makefile. 3. Copy `example-woodpecker.yaml` to `.woodpecker.yaml` and add the `droparea_ssh_password` / `update_secret_key` secrets in Woodpecker. - Match the `barichello/godot-ci` image tag to the Godot version the - project is made with (e.g. `4.6`) — the image ships the matching - export templates. + Match the `godot-builder` image tag to the Godot version the + project is made with (e.g. `4.6`) — the underlying + `barichello/godot-ci` image ships the matching export templates. 4. Copy `example-tasks.json` to `.vscode/tasks.json`. The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea, then triggers `/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`. diff --git a/builder.Dockerfile b/builder.Dockerfile new file mode 100644 index 0000000..dbca6c7 --- /dev/null +++ b/builder.Dockerfile @@ -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 diff --git a/example-woodpecker.yaml b/example-woodpecker.yaml index e2b959d..68c9fcf 100644 --- a/example-woodpecker.yaml +++ b/example-woodpecker.yaml @@ -6,9 +6,8 @@ steps: - make ci-version - name: build - image: barichello/godot-ci:4.6 + image: git.teletype.hu/internal/godot-builder:4.6 commands: - - apt-get update && apt-get install -y --no-install-recommends make zip - make ci-export - name: artifact