Update build workflow for OCI image handling
This commit is contained in:
+16
-10
@@ -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 }}
|
||||||
|
|||||||
Reference in New Issue
Block a user