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 <noreply@anthropic.com>
This commit is contained in:
@@ -29,13 +29,27 @@ and [tic80-tools](../tic80-tools).
|
|||||||
in sync with `EXPORT_PRESET` in the Makefile.
|
in sync with `EXPORT_PRESET` in the Makefile.
|
||||||
3. Copy `example-woodpecker.yaml` to `.woodpecker.yaml` and add the
|
3. Copy `example-woodpecker.yaml` to `.woodpecker.yaml` and add the
|
||||||
`droparea_ssh_password` / `update_secret_key` secrets in Woodpecker.
|
`droparea_ssh_password` / `update_secret_key` secrets in Woodpecker.
|
||||||
Match the `barichello/godot-ci` image tag to the Godot version the
|
Match the `godot-builder` image tag to the Godot version the
|
||||||
project is made with (e.g. `4.6`) — the image ships the matching
|
project is made with (e.g. `4.6`) — the underlying
|
||||||
export templates.
|
`barichello/godot-ci` image ships the matching export templates.
|
||||||
4. Copy `example-tasks.json` to `.vscode/tasks.json`.
|
4. Copy `example-tasks.json` to `.vscode/tasks.json`.
|
||||||
|
|
||||||
The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea,
|
The pipeline uploads `$(PROJECT)-$(VERSION).html.zip` to the droparea,
|
||||||
then triggers
|
then triggers
|
||||||
`/update?platform=godot&name=$(PROJECT)&version=$(VERSION)`.
|
`/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:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
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`.
|
Detailed documentation lives on the wiki: `/development/godot`.
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# CI builder image for Godot projects: barichello/godot-ci (editor + web
|
||||||
|
# export templates) with make/zip preinstalled, so the pipeline's build step
|
||||||
|
# does not run apt-get on every run.
|
||||||
|
#
|
||||||
|
# Keep the tag in sync with the Godot version the projects use.
|
||||||
|
#
|
||||||
|
# Build & push (the CI runner is linux/amd64):
|
||||||
|
# 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
|
||||||
|
|
||||||
|
ARG GODOT_VERSION=4.6
|
||||||
|
FROM barichello/godot-ci:${GODOT_VERSION}
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends make zip jq \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
@@ -6,9 +6,8 @@ steps:
|
|||||||
- make ci-version
|
- make ci-version
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
image: barichello/godot-ci:4.6
|
image: git.teletype.hu/internal/godot-builder:4.6
|
||||||
commands:
|
commands:
|
||||||
- apt-get update && apt-get install -y --no-install-recommends make zip
|
|
||||||
- make ci-export
|
- make ci-export
|
||||||
|
|
||||||
- name: artifact
|
- name: artifact
|
||||||
|
|||||||
Reference in New Issue
Block a user