Update build workflow for OCI image handling

This commit is contained in:
humocs-man
2026-04-24 19:04:26 +02:00
committed by GitHub
parent 5a4d35179c
commit d24b82e6be
+16 -10
View File
@@ -154,32 +154,38 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
# Ersetze den Push-Block durch diesen hier: # Ersetze den Push-Block durch diesen hier:
- name: Push to GHCR with zstd using Skopeo (OCI Intermediate Step) - name: Push to GHCR with zstd using Skopeo (Archive Workaround)
id: push 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: | 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 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 for tag in ${{ steps.metadata.outputs.tags }}; do
echo "Processing tag: $tag" echo "Processing tag: $tag"
# SCHRITT 1: Lokal vom Podman-Speicher zum OCI-Format konvertieren # 3. SCHRITT 1: Konvertiere das Tar-Archiv in das OCI-Format.
# WICHTIG: Wir nutzen 'containers-storage:' statt 'docker://' # Wir nutzen 'docker-archive:', was ein einfaches Datei-Format ist.
# Damit sucht skopeo lokal auf dem Runner und nicht auf Docker Hub! # Skopeo liest die Datei und erstellt die OCI-Struktur.
skopeo copy \ skopeo copy \
containers-storage:${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} \ docker-archive:image-archive.tar:latest \
oci:./tmp-oci-image 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 \ skopeo copy \
--compression zstd \ --compression zstd \
oci:./tmp-oci-image \ oci:./tmp-oci-image \
${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:$tag ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:$tag
done done
# Aufräumen # 5. Aufräumen
rm -rf ./tmp-oci-image rm -rf ./tmp-oci-image image-archive.tar
env: env:
IMAGE_NAME: ${{ env.IMAGE_NAME }} IMAGE_NAME: ${{ env.IMAGE_NAME }}
IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }} IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}