diff --git a/README.md b/README.md index b2db0ea..1400609 100644 --- a/README.md +++ b/README.md @@ -30,4 +30,17 @@ The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea, then triggers `/update?platform=ebitengine&name=$(PROJECT)&version=$(VERSION)`. +## Builder image + +`builder.Dockerfile` bakes the pipeline's build-step dependencies +(Go + git/make/zip/curl) into +`git.teletype.hu/internal/ebitengine-builder`, so the build step +no longer runs `apk add` on every run: + +```sh +docker build --platform linux/amd64 -f builder.Dockerfile \ + -t git.teletype.hu/internal/ebitengine-builder:latest . +docker push git.teletype.hu/internal/ebitengine-builder:latest +``` + Detailed documentation lives on the wiki: `/development/ebitengine`. diff --git a/builder.Dockerfile b/builder.Dockerfile new file mode 100644 index 0000000..44fb9fa --- /dev/null +++ b/builder.Dockerfile @@ -0,0 +1,17 @@ +# CI builder image for Ebitengine projects: Go toolchain + packaging tools. +# Used by the `build` step in example-woodpecker.yaml instead of installing +# zip/make/curl on every pipeline run. +# +# Build & push (the CI runner is linux/amd64): +# docker build --platform linux/amd64 -f builder.Dockerfile \ +# -t git.teletype.hu/internal/ebitengine-builder:latest . +# docker push git.teletype.hu/internal/ebitengine-builder:latest + +# 1.26 covers every current game repo's go.mod directive (1.25.x, 1.26.x). +FROM golang:1.26-alpine + +RUN apk add --no-cache git make zip curl + +WORKDIR /workspace + +CMD ["/bin/sh"] diff --git a/example-woodpecker.yaml b/example-woodpecker.yaml index 72c4f02..ba4c8c9 100644 --- a/example-woodpecker.yaml +++ b/example-woodpecker.yaml @@ -6,9 +6,8 @@ steps: - make ci-version - name: build - image: golang:1.25.6-alpine + image: git.teletype.hu/internal/ebitengine-builder:latest commands: - - apk add --no-cache zip make curl - make ci-export - name: artifact