From d24b82e6beea3891b17aca8b33758bc6b5375ac0 Mon Sep 17 00:00:00 2001 From: humocs-man <251756307+humocs-man@users.noreply.github.com> Date: Fri, 24 Apr 2026 19:04:26 +0200 Subject: [PATCH] Update build workflow for OCI image handling --- .github/workflows/build.yml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a073a8..2be42e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -153,33 +153,39 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - # Ersetze den Push-Block durch diesen hier: - - name: Push to GHCR with zstd using Skopeo (OCI Intermediate Step) + # Ersetze den Push-Block durch diesen hier: + - name: Push to GHCR with zstd using Skopeo (Archive Workaround) id: push - if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + if: github.event_arm != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) run: | - # Erstelle ein temporäres Verzeichnis für das OCI-Image + # 1. Erstelle ein temporäres Verzeichnis für das OCI-Image mkdir -p ./tmp-oci-image + + # 2. Erstelle ein einfaches Tar-Archiv des lokalen Images. + # Das ist eine reine Datei-Operation und benötigt kein 'unshare'. + echo "Saving image to tar archive..." + podman save ${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} -o image-archive.tar for tag in ${{ steps.metadata.outputs.tags }}; do echo "Processing tag: $tag" - # SCHRITT 1: Lokal vom Podman-Speicher zum OCI-Format konvertieren - # WICHTIG: Wir nutzen 'containers-storage:' statt 'docker://' - # Damit sucht skopeo lokal auf dem Runner und nicht auf Docker Hub! + # 3. SCHRITT 1: Konvertiere das Tar-Archiv in das OCI-Format. + # Wir nutzen 'docker-archive:', was ein einfaches Datei-Format ist. + # Skopeo liest die Datei und erstellt die OCI-Struktur. skopeo copy \ - containers-storage:${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} \ + docker-archive:image-archive.tar:latest \ oci:./tmp-oci-image - # SCHRITT 2: Von OCI-Verzeichnis zur Registry pushen mit zstd + # 4. SCHRITT 2: Von OCI-Verzeichnis zur Registry pushen mit zstd. + # Hier wenden wir nun die gewünschte Kompression an. skopeo copy \ --compression zstd \ oci:./tmp-oci-image \ ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:$tag done - # Aufräumen - rm -rf ./tmp-oci-image + # 5. Aufräumen + rm -rf ./tmp-oci-image image-archive.tar env: IMAGE_NAME: ${{ env.IMAGE_NAME }} IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}