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 }}
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,12 +115,15 @@ 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
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)