Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35446ccfa3 | ||
|
|
535b8a0f16 | ||
|
|
b53fadd1e6 | ||
|
|
d3cd0b7263 | ||
|
|
7f4494e1cb |
@@ -3,9 +3,28 @@ name: Build ci-python image
|
|||||||
# Baut das ci-python-Image und pusht es in die Gitea-Container-Registry.
|
# Baut das ci-python-Image und pusht es in die Gitea-Container-Registry.
|
||||||
# Tags: :latest (mitlaufend) + :<sha> (unveränderlich, zum Pinnen in Workflows).
|
# Tags: :latest (mitlaufend) + :<sha> (unveränderlich, zum Pinnen in Workflows).
|
||||||
#
|
#
|
||||||
# Voraussetzungen im Runner:
|
# **Ohne Docker-Daemon** (devops #419). Seit dem Umzug der internen Zone (#410)
|
||||||
# - Docker verfügbar (Socket oder DinD) — Image-Bau braucht einen Docker-Daemon.
|
# reicht kein Runner mehr den Docker-Socket in den Job - wer ihn hat, ist root
|
||||||
# - Secrets: REGISTRY_USER (Gitea-User) + REGISTRY_TOKEN (PAT, Scope package:write).
|
# auf dem Wirt. Kaniko braucht ihn nicht: Es fuehrt die RUN-Schritte direkt in
|
||||||
|
# seinem eigenen Container aus und schreibt die Schichten selbst. Buildah ging
|
||||||
|
# nicht, es braucht fuer RUN einen User-Namespace, und den verweigert der
|
||||||
|
# Job-Container ohne Zusatzrechte.
|
||||||
|
#
|
||||||
|
# Kaniko laeuft als **Docker-Schritt** (`uses: docker://`), nicht als
|
||||||
|
# Job-Container: act_runner haelt einen Job-Container mit /bin/sleep am Leben,
|
||||||
|
# und das Kaniko-Image hat sleep nur unter /busybox. Der Docker-Schritt startet
|
||||||
|
# mit dem Einstiegspunkt des Images und bekommt den Arbeitsbereich eingehaengt.
|
||||||
|
#
|
||||||
|
# Image: der gepflegte Fork osscontainertools/kaniko. Das Projekt von Google ist
|
||||||
|
# seit Mai 2025 archiviert. Per Digest gepinnt; auffrischen mit
|
||||||
|
# docker buildx imagetools inspect ghcr.io/osscontainertools/kaniko:debug
|
||||||
|
#
|
||||||
|
# **Kein Schicht-Cache, mit Absicht.** Der woechentliche Lauf ist fuer
|
||||||
|
# Sicherheits-Updates da. Mit Cache kaeme `apt-get update` nie neu zum Zug -
|
||||||
|
# die Zeile aendert sich nicht, also gaelte die alte Schicht. Ohne Cache dauert
|
||||||
|
# der Bau unter einer Minute.
|
||||||
|
#
|
||||||
|
# Secrets: REGISTRY_USER (Gitea-User) + REGISTRY_TOKEN (PAT, Scope package:write).
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@@ -23,30 +42,34 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: inmedias-zone
|
||||||
# Kein expliziter Socket-Mount: der act_runner mountet /var/run/docker.sock
|
|
||||||
# bei docker_host:"" automatisch in den Job-Container. build-push-action
|
|
||||||
# redet darüber mit dem Host-Daemon. Ein zusätzliches `-v ...docker.sock`
|
|
||||||
# führt zu "Duplicate mount point" (siehe Issue #11).
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: docker/setup-buildx-action@v3
|
# Kaniko liest die Zugangsdaten aus $DOCKER_CONFIG/config.json. Der
|
||||||
|
# Docker-Schritt sieht vom Job-Container nur den Arbeitsbereich, also
|
||||||
- name: Login to Gitea registry
|
# muss die Datei dort liegen - ausserhalb von python/, damit sie nicht
|
||||||
uses: docker/login-action@v3
|
# im Build-Kontext landet.
|
||||||
with:
|
- name: Registry-Zugang fuer Kaniko
|
||||||
registry: ${{ env.REGISTRY }}
|
env:
|
||||||
username: ${{ secrets.REGISTRY_USER }}
|
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
run: |
|
||||||
|
mkdir -p .kaniko-docker
|
||||||
|
auth=$(printf '%s:%s' "$REGISTRY_USER" "$REGISTRY_TOKEN" | base64 -w0)
|
||||||
|
printf '{"auths":{"%s":{"auth":"%s"}}}' "$REGISTRY" "$auth" > .kaniko-docker/config.json
|
||||||
|
|
||||||
- name: Build & push
|
- name: Build & push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker://ghcr.io/osscontainertools/kaniko:debug@sha256:7ab44d0131c3051b6dea128067e258c7afb5c4815082a93b9cf6c624f2140bf0
|
||||||
|
env:
|
||||||
|
DOCKER_CONFIG: ${{ github.workspace }}/.kaniko-docker
|
||||||
with:
|
with:
|
||||||
context: python
|
args: >-
|
||||||
push: true
|
--context=dir://${{ github.workspace }}/python
|
||||||
tags: |
|
--dockerfile=${{ github.workspace }}/python/Dockerfile
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE }}:latest
|
--destination=${{ env.REGISTRY }}/${{ env.IMAGE }}:latest
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ github.sha }}
|
--destination=${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ github.sha }}
|
||||||
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE }}:buildcache
|
|
||||||
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE }}:buildcache,mode=max
|
- name: Registry-Zugang entfernen
|
||||||
|
if: always()
|
||||||
|
run: rm -rf .kaniko-docker
|
||||||
Reference in new issue
Block a user