Behebt devops #419. Seit dem Umzug der internen Zone (#410) reicht kein Runner mehr den Docker-Socket in den Job. build-ci-python hätte am Montag, 26.10., 03:00 zum ersten Mal versagt.
Was sich ändert
Kaniko statt docker/build-push-action. Kaniko führt die RUN-Schritte in seinem eigenen Container aus und braucht keinen Docker-Daemon. Es läuft als Docker-Schritt (uses: docker://…), nicht als Job-Container: act_runner hält Job-Container mit /bin/sleep am Leben, und im Kaniko-Image liegt sleep nur unter /busybox.
Image: der gepflegte Fork ghcr.io/osscontainertools/kaniko (v1.28.6), per Digest gepinnt. Das Kaniko-Projekt von Google ist seit Mai 2025 archiviert.
runs-on: inmedias-zone statt ubuntu-latest, nach #354.
Kein Schicht-Cache mehr. Mit dem Registry-Cache kam apt-get update beim wöchentlichen Neubau nie neu zum Zug: Die Zeile ändert sich nicht, also galt die alte Schicht. Der Neubau für Sicherheits-Updates war damit wirkungslos. Ohne Cache dauert der Bau unter einer Minute.
Verworfen, mit Beleg
Buildah:unshare(CLONE_NEWUSER): Operation not permitted. Für RUN bräuchte es Rechte, die der Umzug gerade entzogen hat.
Kaniko als Job-Container:exec: "/bin/sleep": stat … no such file
Wie geprüft
Auf dem echten Runner inmedias-intern, über einen eigenen Probe-Workflow auf diesem Zweig:
Bau ohne Push: alle vier RUN-Schritte, der Selbsttest im Dockerfile ist grün.
Bau mit Push auf das Tag :probe-419, mit denselben Secrets: angekommen.
Lokal gezogen: Python 3.12.13, uv 0.12.1, ruff 0.16.1, pytest 9.1.1, node v18.20.4. Keine config.json mit auths im Image, kein /kaniko, kein .kaniko-docker.
Probe-Workflow und Tag :probe-419 danach wieder entfernt.
Zu wissen
Das Image ist entpackt rund 40 MB größer (528 statt 489 MB) bei gleichem Inhalt: gleiche Verzeichnisgrößen, gleiche 131 Pakete. Kaniko legt Dateien mit geändertem Zeitstempel in der Folgeschicht noch einmal ab.
Das Tag :buildcache in der Registry wird nicht mehr benutzt.
Der einzige Verbraucher von ci-python ist icinga2/ansible-inventory-exporter, mit :latest. Erhoben über die Workflows aller 380 Repositories.
Nach dem Merge baut der Push auf main das Image einmal neu. Das ist zugleich die Probe für :latest und :<sha>.
Behebt [devops #419](https://redmine.inmedias.it/issues/419). Seit dem Umzug der internen Zone (#410) reicht kein Runner mehr den Docker-Socket in den Job. `build-ci-python` hätte am **Montag, 26.10., 03:00** zum ersten Mal versagt.
## Was sich ändert
**Kaniko statt `docker/build-push-action`.** Kaniko führt die `RUN`-Schritte in seinem eigenen Container aus und braucht keinen Docker-Daemon. Es läuft als Docker-Schritt (`uses: docker://…`), nicht als Job-Container: act_runner hält Job-Container mit `/bin/sleep` am Leben, und im Kaniko-Image liegt `sleep` nur unter `/busybox`.
**Image:** der gepflegte Fork `ghcr.io/osscontainertools/kaniko` (v1.28.6), per Digest gepinnt. Das Kaniko-Projekt von Google ist seit Mai 2025 archiviert.
**`runs-on: inmedias-zone`** statt `ubuntu-latest`, nach #354.
**Kein Schicht-Cache mehr.** Mit dem Registry-Cache kam `apt-get update` beim wöchentlichen Neubau nie neu zum Zug: Die Zeile ändert sich nicht, also galt die alte Schicht. Der Neubau für Sicherheits-Updates war damit wirkungslos. Ohne Cache dauert der Bau unter einer Minute.
## Verworfen, mit Beleg
- **Buildah:** `unshare(CLONE_NEWUSER): Operation not permitted`. Für `RUN` bräuchte es Rechte, die der Umzug gerade entzogen hat.
- **Kaniko als Job-Container:** `exec: "/bin/sleep": stat … no such file`
## Wie geprüft
Auf dem echten Runner `inmedias-intern`, über einen eigenen Probe-Workflow auf diesem Zweig:
1. Bau ohne Push: alle vier `RUN`-Schritte, der Selbsttest im Dockerfile ist grün.
2. Bau mit Push auf das Tag `:probe-419`, mit denselben Secrets: angekommen.
3. Lokal gezogen: Python 3.12.13, uv 0.12.1, ruff 0.16.1, pytest 9.1.1, node v18.20.4. Keine `config.json` mit `auths` im Image, kein `/kaniko`, kein `.kaniko-docker`.
4. Probe-Workflow und Tag `:probe-419` danach wieder entfernt.
## Zu wissen
- Das Image ist entpackt rund 40 MB größer (528 statt 489 MB) bei gleichem Inhalt: gleiche Verzeichnisgrößen, gleiche 131 Pakete. Kaniko legt Dateien mit geändertem Zeitstempel in der Folgeschicht noch einmal ab.
- Das Tag `:buildcache` in der Registry wird nicht mehr benutzt.
- Der einzige Verbraucher von `ci-python` ist `icinga2/ansible-inventory-exporter`, mit `:latest`. Erhoben über die Workflows aller 380 Repositories.
Nach dem Merge baut der Push auf `main` das Image einmal neu. Das ist zugleich die Probe für `:latest` und `:<sha>`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Behebt devops #419. Seit dem Umzug der internen Zone (#410) reicht kein Runner mehr den Docker-Socket in den Job.
build-ci-pythonhätte am Montag, 26.10., 03:00 zum ersten Mal versagt.Was sich ändert
Kaniko statt
docker/build-push-action. Kaniko führt dieRUN-Schritte in seinem eigenen Container aus und braucht keinen Docker-Daemon. Es läuft als Docker-Schritt (uses: docker://…), nicht als Job-Container: act_runner hält Job-Container mit/bin/sleepam Leben, und im Kaniko-Image liegtsleepnur unter/busybox.Image: der gepflegte Fork
ghcr.io/osscontainertools/kaniko(v1.28.6), per Digest gepinnt. Das Kaniko-Projekt von Google ist seit Mai 2025 archiviert.runs-on: inmedias-zonestattubuntu-latest, nach #354.Kein Schicht-Cache mehr. Mit dem Registry-Cache kam
apt-get updatebeim wöchentlichen Neubau nie neu zum Zug: Die Zeile ändert sich nicht, also galt die alte Schicht. Der Neubau für Sicherheits-Updates war damit wirkungslos. Ohne Cache dauert der Bau unter einer Minute.Verworfen, mit Beleg
unshare(CLONE_NEWUSER): Operation not permitted. FürRUNbräuchte es Rechte, die der Umzug gerade entzogen hat.exec: "/bin/sleep": stat … no such fileWie geprüft
Auf dem echten Runner
inmedias-intern, über einen eigenen Probe-Workflow auf diesem Zweig:RUN-Schritte, der Selbsttest im Dockerfile ist grün.:probe-419, mit denselben Secrets: angekommen.config.jsonmitauthsim Image, kein/kaniko, kein.kaniko-docker.:probe-419danach wieder entfernt.Zu wissen
:buildcachein der Registry wird nicht mehr benutzt.ci-pythonisticinga2/ansible-inventory-exporter, mit:latest. Erhoben über die Workflows aller 380 Repositories.Nach dem Merge baut der Push auf
maindas Image einmal neu. Das ist zugleich die Probe für:latestund:<sha>.🤖 Generated with Claude Code