No description
  • Dockerfile 71%
  • Makefile 29%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
commitizen-bot 50eb047e71
All checks were successful
Test & Version / Test build image (push) Has been skipped
Test & Version / Bump version and changelog with commitizen (push) Has been skipped
Test & Version / bump-version (push) Has been skipped
Publish Image / Build and push image (push) Successful in 30s
bump: version 0.1.0 → 0.2.0
2026-07-18 22:48:12 +00:00
.forgejo feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00
.dockerignore feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00
.editorconfig feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00
CHANGELOG.md bump: version 0.1.0 → 0.2.0 2026-07-18 22:48:12 +00:00
cz.toml feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00
Dockerfile feat: add git, pin python 3.14 via UV_PYTHON, trim apt list, add oci labels 2026-07-18 18:44:27 -04:00
LICENSE docs: add the AGPL-3.0 license 2026-07-18 18:33:00 -04:00
Makefile feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00
README.md feat: general-purpose node and uv CI image 2026-07-18 18:24:06 -04:00

general-ci-image

General-purpose CI container image for ModernLeft repos, published to the Forgejo container registry as code.modernleft.org/modernleft/general-ci.

Contents

Single-stage image (see Dockerfile for the authoritative versions):

  • Node (node:24-slim base) — required in every job container by the Forgejo runner, which executes JS actions with the container's own node
  • uv with a uv-managed Python, installed per-user for the non-root appuser
  • uv cache mount point at /opt/uv-cache (UV_CACHE_DIR, UV_LINK_MODE=copy) matching the shared uv_cache runner volume

Consumers

CI workflows in ModernLeft repos run inside this image, pinned by version tag. Publishing a new version does not move consumers until they update their pins.

Release flow

Releases follow the standard type-based model, documented at docs.modernleft.org/development/releases. .forgejo/workflows/build-version.yaml test-builds the image on every push to main and runs the bump; the tag push triggers .forgejo/workflows/publish.yaml, which publishes the version tag and latest. .forgejo/workflows/pr-bump-preview.yaml comments on PRs with the release a merge would cut.

Local build

make build   # docker build -> general-ci:local
make run     # interactive shell in the local image