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:
+22
-11
@@ -153,29 +153,40 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
# Ersetze den gesamten "Push To GHCR" Block durch diesen hier:
|
# Ersetze den Push-Block durch diesen hier:
|
||||||
- name: Push to GHCR with zstd using Skopeo
|
- name: Push to GHCR with zstd using Skopeo (OCI Intermediate Step)
|
||||||
id: push # Wir behalten die ID, falls spätere Schritte sie brauchen
|
id: push
|
||||||
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
|
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
|
||||||
run: |
|
run: |
|
||||||
# Wir nutzen die Tags direkt aus dem metadata-Schritt
|
# Erstelle ein temporäres Verzeichnis für das OCI-Image
|
||||||
# Die Liste ist durch Leerzeichen getrennt, was Bash in der Schleife perfekt versteht.
|
mkdir -p ./tmp-oci-image
|
||||||
for tag in ${{ steps.metadata.outputs.tags }}; do
|
|
||||||
echo "Pushing tag: $tag"
|
|
||||||
|
|
||||||
# Quelle: Das lokal gebaute Image (ohne Registry-Präfix, wie in Buildah definiert)
|
for tag in ${{ steps.metadata.outputs.tags }}; do
|
||||||
# Ziel: Die vollständige URI (Registry + Name + Tag)
|
echo "Processing tag: $tag"
|
||||||
skopeo copy --compression zstd \
|
|
||||||
|
# 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 }} \
|
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
|
${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:$tag
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Aufräumen
|
||||||
|
rm -rf ./tmp-oci-image
|
||||||
env:
|
env:
|
||||||
# Wir brauchen hier keine USER/PASS, da 'docker/login-action' bereits läuft
|
|
||||||
IMAGE_NAME: ${{ env.IMAGE_NAME }}
|
IMAGE_NAME: ${{ env.IMAGE_NAME }}
|
||||||
IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}
|
IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}
|
||||||
DEFAULT_TAG: ${{ env.DEFAULT_TAG }}
|
DEFAULT_TAG: ${{ env.DEFAULT_TAG }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# OPTIONAL: Image Signing with Cosign
|
# OPTIONAL: Image Signing with Cosign
|
||||||
# Signing is disabled by default. To enable, see README.md "Optional: Enable Image Signing" section.
|
# Signing is disabled by default. To enable, see README.md "Optional: Enable Image Signing" section.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user