2.0 KiB
love-tools
CI/CD templates for LÖVE (Love2D/Lua) game projects, in the same spirit as tic80-tools.
example-makefile.make— project Makefile: local dev targets (build,love,web,export,watch,clean) plus the Woodpecker pipeline targets (ci-version,ci-export,ci-upload,ci-update).example-woodpecker.yaml— Woodpecker pipeline: version → export (.lovepackage + love.js web build) → upload (scp to the droparea) → update (calls the teletypegames/updateendpoint withplatform=love).example-tasks.json— VS Code.vscode/tasks.jsonwith the common dev tasks: Run Löve (love ., default build task,Cmd+Shift+B), Build & Run Löve, Build .love package and Make build.
Usage in a game repo
- Copy
example-makefile.maketoMakefileand setPROJECT(the package is built asdist/$(PROJECT).love). - Copy
example-woodpecker.yamlto.woodpecker.yamland add thedroparea_ssh_password/update_secret_keysecrets in Woodpecker. - Copy
example-tasks.jsonto.vscode/tasks.json.
The pipeline uploads $(PROJECT)-$(VERSION).love.zip,
$(PROJECT)-$(VERSION).html.zip and the versioned metadata.json to
the droparea, then triggers /update twice: once with platform=love
(desktop package) and once with platform=love-web (web build).
Builder image
builder.Dockerfile bakes the pipeline's export-step dependencies
(zip/unzip/curl/make + luac for the syntax check) into
git.teletypegames.org/internal/love-builder, and pre-fetches love.js to
/opt/lovejs.zip — the Makefile uses the cached copy when present
and only falls back to downloading from GitHub outside the image:
docker build --platform linux/amd64 -f builder.Dockerfile \
-t git.teletypegames.org/internal/love-builder:latest .
docker push git.teletypegames.org/internal/love-builder:latest
Rebuild the image to pick up a newer love.js snapshot.
Detailed documentation lives on the wiki: /development/love.