debian-ci: consolidate the per-stack images into one #1

Merged
kristofferopsahl merged 1 commit from debian-ci into main 2026-09-18 19:50:04 +02:00

Replaces the nine debian-trixie-<stack> images with one debian-ci image that pre-installs every toolchain — C/C++ (gcc, clang, cmake, ninja), Node, Go, Elixir/OTP, Python, Java + Maven, Rust (+ rustfmt, clippy), PHP 8.4 + Composer, DB clients — from trixie's apt only: no upstream tarballs, no third-party repos, no version managers.

What changes

  • debian-ci/Containerfile — the one image. Its final RUN is a smoke test, so a broken toolchain fails the build before anything is pushed.
  • build.yml — one job instead of a base → 8 children chain. Builds on pull requests without pushing (this PR exercises it). On main it pushes :latest plus a dated :YYYY-MM-DD rollback tag. It stays on the upstream debian-trixie-slim label so the builder never depends on its own output.
  • Runner labels — adds debian-latest and debian-13. The old debian-trixie-{base,elixir,java,python,node,php,go,rust} labels stay as deprecated aliases of debian-ci, so no downstream workflow has to change. debian-trixie / debian-trixie-slim remain true upstream passthroughs.
  • Dropped: debian-trixie-sukker (Sury PHP 7.4). The legacy sukker stack is retired and no workflow references the label any more.

Rollout after merge

Merging alone changes nothing for running CI: the old images stay in the registry and the live runner still maps the old labels to them.

  1. Merge → the push build publishes debian-ci:latest.
  2. On ci-vps-01, mirror the new label list into ~forgerunner/.local/share/forgejo-runner/config.yaml and restart forgejo-runner.service. From then on every old label runs on debian-ci.
  3. Migrate runs-on: to debian-latest repo by repo; drop aliases as they go unused; delete the old debian-trixie-* container packages.
  4. Add a package cleanup rule for debian-ci so dated tags don't accumulate.

🤖 Generated with Claude Code

Replaces the nine `debian-trixie-<stack>` images with one `debian-ci` image that pre-installs every toolchain — C/C++ (gcc, clang, cmake, ninja), Node, Go, Elixir/OTP, Python, Java + Maven, Rust (+ rustfmt, clippy), PHP 8.4 + Composer, DB clients — **from trixie's apt only**: no upstream tarballs, no third-party repos, no version managers. ## What changes - **`debian-ci/Containerfile`** — the one image. Its final `RUN` is a smoke test, so a broken toolchain fails the build before anything is pushed. - **`build.yml`** — one job instead of a base → 8 children chain. Builds on pull requests without pushing (this PR exercises it). On main it pushes `:latest` plus a dated `:YYYY-MM-DD` rollback tag. It stays on the upstream `debian-trixie-slim` label so the builder never depends on its own output. - **Runner labels** — adds `debian-latest` and `debian-13`. The old `debian-trixie-{base,elixir,java,python,node,php,go,rust}` labels stay as deprecated aliases of `debian-ci`, so no downstream workflow has to change. `debian-trixie` / `debian-trixie-slim` remain true upstream passthroughs. - **Dropped:** `debian-trixie-sukker` (Sury PHP 7.4). The legacy sukker stack is retired and no workflow references the label any more. ## Rollout after merge Merging alone changes nothing for running CI: the old images stay in the registry and the live runner still maps the old labels to them. 1. Merge → the push build publishes `debian-ci:latest`. 2. On `ci-vps-01`, mirror the new label list into `~forgerunner/.local/share/forgejo-runner/config.yaml` and restart `forgejo-runner.service`. From then on every old label runs on `debian-ci`. 3. Migrate `runs-on:` to `debian-latest` repo by repo; drop aliases as they go unused; delete the old `debian-trixie-*` container packages. 4. Add a package cleanup rule for `debian-ci` so dated tags don't accumulate. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
debian-ci: consolidate the per-stack images into one
All checks were successful
Build CI Image / Build debian-ci (pull_request) Successful in 4m29s
1c4e097357
Replace the nine debian-trixie-<stack> images with a single debian-ci image
that pre-installs every toolchain (C/C++, Node, Go, Elixir, Python, Java,
Rust, PHP, DB clients) from trixie's apt only. One Containerfile, one build
job, no base->child build chain.

- build.yml: single job; builds on pull requests without pushing; pushes a
  dated tag next to :latest as a rollback target. Stays on the upstream
  debian-trixie-slim label so the builder never depends on its own output.
- The Containerfile's final RUN is the smoke test gating the push.
- Runner labels: add debian-latest and debian-13; keep the old per-stack
  labels as deprecated aliases of debian-ci so no workflow has to change.
- Drop debian-trixie-sukker (PHP 7.4): the legacy sukker stack is retired.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
kristofferopsahl deleted branch debian-ci 2026-09-18 19:50:04 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kristofferopsahl/ci-images!1
No description provided.