From dc0a754c794a123fbeb50b4296c27d3b4a8c2eae Mon Sep 17 00:00:00 2001 From: humocs-man <251756307+humocs-man@users.noreply.github.com> Date: Sun, 17 May 2026 19:01:49 +0200 Subject: [PATCH] Export monolithic image to OCI directory Export the built image as a neutral OCI directory and adjust permissions for the output directory. --- .github/workflows/build.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fab6975..f742eb9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -91,17 +91,23 @@ jobs: labels: ${{ steps.metadata.outputs.labels }} oci: true - # JETZT MIT HOST-PRIVILEGIEN: Nutzt echtes sudo für podman, um die unshare-Hürde zu nehmen + # FIX: Wir exportieren das frisch gebaute Image als neutrales OCI-Verzeichnis auf den Host + - name: Export monolithic image to disk + run: | + set -x + mkdir -p ./monolith-oci + podman save --format oci-dir -o ./monolith-oci localhost/${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} + + # JETZT ABSOLUT RECHTE-UNABHÄNGIG: Rechunking liest direkt vom OCI-Verzeichnis - name: Apply native bootc rechunking id: rechunk run: | set -x mkdir -p ./chunkah-out - # Wir führen das offizielle fedora-bootc-Image als privilegierter Root-User auf dem Host aus. - # Wir mounten den Storage des rootless-Users (GHA-Runner) direkt hinein. + # Wir führen das Tool mit sudo/privileged aus, damit 'unshare' im Container klappt. + # Wir mounten nur noch die nackten Ordner aus unserem Workspace hinein. sudo podman run --rm --privileged \ - -v /var/lib/containers:/var/lib/containers:z \ -v .:/workspace:z \ -w /workspace \ quay.io/fedora/fedora-bootc:44 \ @@ -109,11 +115,14 @@ jobs: --bootc \ --format-version=2 \ --max-layers 128 \ - --from=containers-storage:localhost/${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} \ + --from=oci-dir:./monolith-oci \ --output=oci-archive:./chunkah-out/image.ociarchive - # Da 'sudo podman' die Datei als root schreibt, korrigieren wir die Rechte für Skopeo + # Besitzrechte wieder an den normalen GHA-User übergeben, damit Skopeo rankommt sudo chown -R runner:docker ./chunkah-out + + # Aufräumen des temporären Monolithen + rm -rf ./monolith-oci - name: Login to GitHub Container Registry uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v3