No description
  • Dockerfile 100%
Find a file
Freydis Mende 1bfc594f9f
All checks were successful
CI / Docker build & push (push) Successful in 2m36s
Add minimal Forgejo CI runner image with Rust and Node 24 baked in
2026-09-20 12:38:45 +02:00
.forgejo/workflows Add minimal Forgejo CI runner image with Rust and Node 24 baked in 2026-09-20 12:38:45 +02:00
Dockerfile Add minimal Forgejo CI runner image with Rust and Node 24 baked in 2026-09-20 12:38:45 +02:00
README.md Add minimal Forgejo CI runner image with Rust and Node 24 baked in 2026-09-20 12:38:45 +02:00

forgejo-ci-image

Minimal custom image for the Forgejo Actions runner (forgejo-runner), replacing gitea/runner-images:ubuntu-*. Bakes in git, docker CLI, Node.js 24, and a full Rust stable toolchain (rustfmt + clippy) so per-workflow setup steps can be dropped.

Build & push

docker login git.freyd.is
docker build -t git.freyd.is/<owner>/forgejo-ci-image:latest .
docker push git.freyd.is/<owner>/forgejo-ci-image:latest

Wire it into the runner

Add a new label in the runner's config.yaml (docker volume) alongside the existing ones — don't replace them yet, so you can cut over per-repo:

labels:
  - ubuntu-latest:docker://gitea/runner-images:ubuntu-latest
  - ci-slim:docker://git.freyd.is/<owner>/forgejo-ci-image:latest

Restart the runner container to pick up the config change (it's only read on start). If any workflow uses docker build/docker compose build, the runner container itself also needs /var/run/docker.sock mounted through to the job container — add under the runner's container: section:

container:
  options: -v /var/run/docker.sock:/var/run/docker.sock

Workflow changes once a repo switches to ci-slim

  • runs-on: ci-slim instead of ubuntu-latest
  • Drop the rustup.rs install step entirely — Rust is already on PATH.
  • Drop actions/setup-node — Node 24 is already on PATH. If a workflow was relying on actions/setup-node's cache: npm for dependency caching, replace it with an explicit actions/cache step over ~/.npm (setup-node's cache option won't exist anymore without the action).