ci: remove container publication workflows
CI / check (push) Failing after 1m26s
CI / preflight (push) Skipped
CI / deploy (push) Skipped

This commit is contained in:
Simo committed 2026-09-14 21:28:21 +02:00
1 parent cfb4c36569
commit fff284aaa0
4 files changed
+2 -195

No files matched your search

+2 -64
View File
@@ -250,9 +250,7 @@ bash cms update
The updater pulls the configured Git upstream, loads `.docker-install`, uses the
matching application/migration images and verifies the running release locally
and at the saved public URL. If publication for the new commit is still running,
it stops before replacing the current container; run the same command after CI
succeeds. Existing application rollback remains available on a failed cutover;
and at the saved public URL. Existing application rollback remains available on a failed cutover;
database migrations are not reversed.
`bash cms install --configure-only` saves configuration without preparing runtime
@@ -261,67 +259,7 @@ committed or sent in Docker build contexts. Existing users of
`bash scripts/docker-update.sh` retain the previous behavior when no wizard
profile exists; explicit `CMS_IMAGE_REPOSITORY`/`CMS_PUBLIC_URL` overrides still work.
To publish from Gitea:
Gitea packages belong to an account or organization, independently of repository
permissions. Publication defaults to the lowercase `CONTAINER_REGISTRY_USER`
namespace, so a Simo token publishes `simo/epicnext-cms` even though the Git
repository belongs to remco. Set the Actions variable
`CONTAINER_REGISTRY_NAMESPACE` only to override this (for example, an organization
where the token account has package write access). Keep the login username and
token from the same account. Changing namespace also changes the image URL used
by installations; existing remco image tags are not moved automatically.
1. In the repository's Actions secrets, configure `CONTAINER_REGISTRY_USER` and
`CONTAINER_REGISTRY_TOKEN`. Use a Gitea access token with package read/write
permission belonging to the login account. For the Simo token, set
`CONTAINER_REGISTRY_USER=Simo`; the default package namespace will be `simo`.
2. Every push to `main` or `master` automatically builds and publishes the images
after the CI checks and production deployment succeed. Pull requests do not
publish images. The publication job builds from committed source only and checks
the same application image with two runtime configurations before pushing.
Missing registry secrets fail the publication job explicitly; they do not undo
an already successful production deployment. No `latest` tag is moved.
**Publish portable container** remains available for manual retries on the
commit/branch to distribute, without redeploying production.
3. The images are `<gitea-host>/<owner>/<repository-lowercase>:<full-commit>` and
`:<full-commit>-migrations`. Only the application image runs the website; the
migrations image is used temporarily for the matching database migrations.
Publication uses checksum-pinned regctl v0.11.6 with 8 MiB blob requests to
avoid monolithic layer uploads exceeding reverse-proxy limits. Both images are
exported and uploaded sequentially; temporary archives and credentials are removed
on exit. The runner needs curl, sha256sum and temporary disk space for one Docker
image archive plus its extracted OCI layout. The remote image config digest is checked against the locally normalized archive
after each upload. A proxy must still allow the OCI registry PATCH/PUT endpoints.
For this repository the image base is
`gitlab.epicnabbo.nl/simo/epicnext-cms`. Package access is controlled by Gitea.
For private packages, run `docker login gitlab.epicnabbo.nl` on the installation
with a token that can read packages. Then update with:
```bash
CMS_IMAGE_REPOSITORY=gitlab.epicnabbo.nl/simo/epicnext-cms \
CMS_PUBLIC_URL=https://your-hotel.example \
bash scripts/docker-update.sh
```
The updater pulls the configured Git upstream and requires both images for that
exact commit. A missing image or failed login stops before replacing the running
CMS. Local builds remain the default when `CMS_IMAGE_REPOSITORY` is unset. Both
paths retain the existing image/HTTP checks and automatic application rollback.
Migration secrets are mounted read-only for the temporary migration container;
they are never copied into its image. Registry images currently target the Linux
architecture of the self-hosted build runner; this is not a multi-architecture release.
The portability gate checks release identity, runtime avatar/badge routing and
absence of installation environment files in the application image. It uses an
unreachable fixture database and does not replace a full live database/site smoke
test. See `scripts/verify-portable-image.mjs`. Production deployment remains verified
separately by the existing CI workflow.
References: [Gitea container registry](https://docs.gitea.com/usage/packages/container/)
and [Next.js runtime environment variables](https://nextjs.org/docs/app/guides/self-hosting).
Container publication is disabled. CI builds, checks and deploys the CMS, but it does not log in to a registry or upload container images.
### Diagnose an update that is not visible