Files
ebitengine-tools/builder.Dockerfile
T
mr.zeroandClaude Opus 5 f94698c123 Teach the Ebitengine build about our own module namespace
inkwell is now a published module (engines/inkwell v0.1.0) rather than a
sibling checkout, so a project that depends on it needs GOPRIVATE — our
forge is not proxy.golang.org and not in the public checksum database.
Set in both the builder image and the Makefile template, so it holds
whether or not the image has been rebuilt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 10:35:28 +02:00

34 lines
1.4 KiB
Docker

# CI builder image for Ebitengine projects: Go toolchain + packaging tools
# + the X11/GL/ALSA dev libraries needed for the native linux-x64 (cgo) build.
# Used by the `build` and `binaries` steps in example-woodpecker.yaml instead
# of installing everything on every pipeline run.
#
# Debian-based (not alpine): the linux-x64 game binary must link against
# glibc, otherwise it won't run on regular desktop distros.
#
# Build & push (the CI runner is linux/amd64):
# docker build --platform linux/amd64 -f builder.Dockerfile \
# -t git.teletypegames.org/internal/ebitengine-builder:latest .
# docker push git.teletypegames.org/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-bookworm
# Ebitengine linux build dependencies:
# https://ebitengine.org/en/documents/install.html (Debian/Ubuntu section)
RUN apt-get update && apt-get install -y --no-install-recommends \
git make zip curl jq pkg-config \
libc6-dev libgl1-mesa-dev libglu1-mesa-dev \
libx11-dev libxcursor-dev libxi-dev libxinerama-dev \
libxrandr-dev libxxf86vm-dev \
libasound2-dev \
&& rm -rf /var/lib/apt/lists/*
# Our own Go modules (engines/inkwell, engines/gorpg) are served by the forge,
# not by proxy.golang.org, and are absent from the public checksum database.
ENV GOPRIVATE=git.teletypegames.org
WORKDIR /workspace
CMD ["/bin/bash"]