Export monolithic image to OCI directory

Export the built image as a neutral OCI directory and adjust permissions for the output directory.
This commit is contained in:
humocs-man
2026-05-17 19:01:49 +02:00
committed by GitHub
parent af9200cce6
commit dc0a754c79
+15 -6
View File
@@ -91,17 +91,23 @@ jobs:
labels: ${{ steps.metadata.outputs.labels }} labels: ${{ steps.metadata.outputs.labels }}
oci: true 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 - name: Apply native bootc rechunking
id: rechunk id: rechunk
run: | run: |
set -x set -x
mkdir -p ./chunkah-out mkdir -p ./chunkah-out
# Wir führen das offizielle fedora-bootc-Image als privilegierter Root-User auf dem Host aus. # Wir führen das Tool mit sudo/privileged aus, damit 'unshare' im Container klappt.
# Wir mounten den Storage des rootless-Users (GHA-Runner) direkt hinein. # Wir mounten nur noch die nackten Ordner aus unserem Workspace hinein.
sudo podman run --rm --privileged \ sudo podman run --rm --privileged \
-v /var/lib/containers:/var/lib/containers:z \
-v .:/workspace:z \ -v .:/workspace:z \
-w /workspace \ -w /workspace \
quay.io/fedora/fedora-bootc:44 \ quay.io/fedora/fedora-bootc:44 \
@@ -109,11 +115,14 @@ jobs:
--bootc \ --bootc \
--format-version=2 \ --format-version=2 \
--max-layers 128 \ --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 --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 sudo chown -R runner:docker ./chunkah-out
# Aufräumen des temporären Monolithen
rm -rf ./monolith-oci
- name: Login to GitHub Container Registry - name: Login to GitHub Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v3 uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v3