From 195190c213246d46bac6bd78d08bca07362bad42 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 | 13 +++++++++++++ builder.Dockerfile | 18 ++++++++++++++++++ example-woodpecker.yaml | 3 +-- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 builder.Dockerfile diff --git a/README.md b/README.md index 299560f..e7c3f13 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,19 @@ spirit as [tic80-tools](../tic80-tools). `droparea_ssh_password` / `update_secret_key` secrets in Woodpecker. 4. Copy `example-tasks.json` to `.vscode/tasks.json`. +## Builder image + +`builder.Dockerfile` bakes the pipeline's build-step dependencies +(ACME assembler + make) into `git.teletype.hu/internal/c64-builder`, +so the build step no longer runs `apt-get` on every run (VICE is a +local-dev tool only and is not included): + +```sh +docker build --platform linux/amd64 -f builder.Dockerfile \ + -t git.teletype.hu/internal/c64-builder:latest . +docker push git.teletype.hu/internal/c64-builder:latest +``` + The pipeline uploads `$(PROJECT)-$(VERSION).prg` and `$(PROJECT)-$(VERSION).metadata.json` to the droparea, then triggers `/update?platform=c64&name=$(PROJECT)&version=$(VERSION)`, which diff --git a/builder.Dockerfile b/builder.Dockerfile new file mode 100644 index 0000000..2f10640 --- /dev/null +++ b/builder.Dockerfile @@ -0,0 +1,18 @@ +# CI builder image for C64 projects: ACME assembler + make, so the +# pipeline's build step does not run apt-get on every run. The VICE +# emulator is a local-dev tool only and is intentionally not included. +# +# Build & push (the CI runner is linux/amd64): +# docker build --platform linux/amd64 -f builder.Dockerfile \ +# -t git.teletype.hu/internal/c64-builder:latest . +# docker push git.teletype.hu/internal/c64-builder:latest + +FROM debian:stable-slim + +RUN apt-get update \ + && apt-get install -y --no-install-recommends make acme zip curl ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /workspace + +CMD ["/bin/bash"] diff --git a/example-woodpecker.yaml b/example-woodpecker.yaml index 28f06e6..61c57fd 100644 --- a/example-woodpecker.yaml +++ b/example-woodpecker.yaml @@ -6,9 +6,8 @@ steps: - 'make ci-version' - name: build - image: debian:stable-slim + image: git.teletype.hu/internal/c64-builder:latest commands: - - 'apt-get update && apt-get install -y --no-install-recommends make acme' - 'make ci-build' - name: artifact