Prepare Gitea checkpoint container workflow

This commit is contained in:
Quintine committed 2026-10-28 20:35:37 +11:00
1 parent 0406fc1869
commit 7dfdf8d593
5 files changed
+125 -14

No files matched your search

+8
View File
@@ -16,6 +16,14 @@ open mode gates.
## Current checkpoint and work
**In progress: Gitea migration — 28 October.** The local `origin` now tracks
`https://git.juiced.computer/admin/Dune`; its imported `main` is an ancestor of
the local checkout. Git push authentication and an Actions runner are not yet
available. The integration owner is preparing a Gitea-native container workflow
that preserves build, isolated verification and gated image publication; registry
selection and runner installation are pending the user's response. Existing NAS
deployment and its persistent storage remain untouched.
**Semuta before Basic Moritani ally retention — 28 October. Prototyped /
Partial.** In the bare Basic Semuta preview, mandatory loser cards form an
initial battle discard batch before the original allied-retention choice;
+33 -12
View File
@@ -8,21 +8,39 @@ runtime prototype does not change public release or rules-mode gates.
## Checkpoint images
Every push to `main` starts `.github/workflows/container.yml`. The Docker build
runs the production build using the lockfile. Types, lint and offline tests
remain part of source checkpoint verification rather than being repeated in
the container build.
The source repository is moving to [Gitea](https://git.juiced.computer/admin/Dune).
Its `.gitea/workflows/container.yml` is intended to build and verify checkpoint
images on pushes to `main`. Configure the Gitea Actions variables
`DUNE_CONTAINER_IMAGE` for the full registry image name and
`DUNE_REGISTRY_USERNAME` for the registry account; supply the registry token as
the `CONTAINER_REGISTRY_TOKEN` Actions secret. The default image name is
`git.juiced.computer/admin/dune`. Registry access and image visibility depend
on the actual Gitea package settings; do not assume anonymous pulls work.
No Gitea runner has been registered and no Gitea image build has succeeded yet.
A source push is therefore not a verified container image or a deployment.
Register and configure an `ubuntu-latest` runner whose job environment has a
working Docker CLI, daemon and Buildx, plus network access to actions, npm and
container images. Configure registry access, then verify the
workflow and its published image before considering a manual NAS update. The
existing Compose configuration continues to reference the GHCR image until a
separately verified migration is applied at a safe point.
The previous GitHub workflow, `.github/workflows/container.yml`, builds a
production image using the lockfile on GitHub pushes. Types, lint and offline
tests remain part of source checkpoint verification rather than being repeated
in the container build.
Before publishing, CI creates an isolated container and volume, checks accepted
and rejected HTTP origins, verifies saved-seat restoration through restart and
container replacement, then runs the HTTP integration suite.
Only a passing image is pushed to `ghcr.io/quintine/dune:checkpoint`, alongside
`ghcr.io/quintine/dune:sha-<full-commit>`. GitHub Actions builds; TrueNAS pulls the
image. Failed checks leave the previous update tag untouched. This workflow
targets Linux AMD64, the architecture of ordinary x86 TrueNAS systems.
Only a passing GitHub image is pushed to `ghcr.io/quintine/dune:checkpoint`,
alongside `ghcr.io/quintine/dune:sha-<full-commit>`. TrueNAS currently pulls
that image. Failed checks leave the previous update tag untouched. This
workflow targets Linux AMD64, the architecture of ordinary x86 TrueNAS systems.
The user selected a **public image**, matching the existing public source
repository, so TrueNAS needs no registry login. GitHub initially creates packages
The user selected the existing GHCR image as **public**, matching the public
source repository, so TrueNAS needs no registry login for that image. GitHub initially creates packages
privately; after the first successful publication, set this package's visibility
to public in GitHub package settings. Images contain application code and assets,
never saved games or credentials. Publishing uses the workflow's built-in token.
@@ -93,8 +111,11 @@ See [NGINX WebSocket forwarding](https://nginx.org/en/docs/http/websocket.html).
### Applying an update
1. Wait for the checkpoint workflow to succeed. Check for image updates in
TrueNAS and apply the update manually at a safe point between decisions.
1. Wait for the checkpoint workflow for the configured image registry to
succeed and confirm the intended revision was published. A Gitea source
push alone is insufficient, and the GHCR Compose image does not automatically
switch registries. Check for image updates in TrueNAS and apply the update
manually at a safe point between decisions.
2. Before updating, stop the app and back up or snapshot its persistent storage.
Include the named volume in the Apps backup procedure; a dedicated host
dataset provides a more explicit ZFS snapshot boundary.