Refactor GHCR push step to use OCI format

Updated the push block to use OCI Intermediate Step with zstd compression for better efficiency.
This commit is contained in:
humocs-man
2026-04-24 18:33:10 +02:00
committed by GitHub
parent 73b96c784b
commit a611e8ee5f
+22 -11
View File
@@ -153,29 +153,40 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Ersetze den gesamten "Push To GHCR" Block durch diesen hier:
- name: Push to GHCR with zstd using Skopeo
id: push # Wir behalten die ID, falls spätere Schritte sie brauchen
# Ersetze den Push-Block durch diesen hier:
- name: Push to GHCR with zstd using Skopeo (OCI Intermediate Step)
id: push
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
run: |
# Wir nutzen die Tags direkt aus dem metadata-Schritt
# Die Liste ist durch Leerzeichen getrennt, was Bash in der Schleife perfekt versteht.
for tag in ${{ steps.metadata.outputs.tags }}; do
echo "Pushing tag: $tag"
# Erstelle ein temporäres Verzeichnis für das OCI-Image
mkdir -p ./tmp-oci-image
# Quelle: Das lokal gebaute Image (ohne Registry-Präfix, wie in Buildah definiert)
# Ziel: Die vollständige URI (Registry + Name + Tag)
skopeo copy --compression zstd \
for tag in ${{ steps.metadata.outputs.tags }}; do
echo "Processing tag: $tag"
# SCHRITT 1: Lokal von Docker-Storage zu OCI-Format konvertieren
# Hier nutzen wir das OCI-Format, das das --compression Flag versteht.
skopeo copy \
docker://${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} \
oci:./tmp-oci-image
# SCHRITT 2: Von OCI-Verzeichnis zur Registry pushen mit zstd
# Jetzt wenden wir die Kompression explizit an.
skopeo copy \
--compression zstd \
oci:./tmp-oci-image \
${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:$tag
done
# Aufräumen
rm -rf ./tmp-oci-image
env:
# Wir brauchen hier keine USER/PASS, da 'docker/login-action' bereits läuft
IMAGE_NAME: ${{ env.IMAGE_NAME }}
IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}
DEFAULT_TAG: ${{ env.DEFAULT_TAG }}
# OPTIONAL: Image Signing with Cosign
# Signing is disabled by default. To enable, see README.md "Optional: Enable Image Signing" section.