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>
2.5 KiB
2.5 KiB
godot-tools
CI/CD templates for Godot (4.x) game projects, in the same spirit as ebitengine-tools and tic80-tools.
example-makefile.make— project Makefile: local dev targets (build,run,web,export,watch,clean) plus the Woodpecker pipeline targets (ci-version,ci-export,ci-upload,ci-update).example-woodpecker.yaml— Woodpecker pipeline: version → build (headless web export in thebarichello/godot-ciimage) → upload (scp to the droparea) → update (calls the teletypegames/updateendpoint withplatform=godot).example-export_presets.cfg— minimalexport_presets.cfgwith the Web preset the Makefile exports. Threads are disabled (variant/thread_support=false, Godot 4.3+) so the build runs without COOP/COEP (cross-origin isolation) headers.example-tasks.json— VS Code.vscode/tasks.jsonwith the common dev tasks: Run (godot --path ., default build task,Cmd+Shift+B), Edit, Export Web and Make build.
Usage in a game repo
- Copy
example-makefile.maketoMakefileand setPROJECT(the web build is packaged as$(PROJECT)-$(VERSION).html.zip). - Copy
example-export_presets.cfgtoexport_presets.cfg(or merge theWebpreset into your existing presets). Keep the preset name in sync withEXPORT_PRESETin the Makefile. - Copy
example-woodpecker.yamlto.woodpecker.yamland add thedroparea_ssh_password/update_secret_keysecrets in Woodpecker. Match thegodot-builderimage tag to the Godot version the project is made with (e.g.4.6) — the underlyingbarichello/godot-ciimage ships the matching export templates. - Copy
example-tasks.jsonto.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:
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.