Browse Source

[enh] container: support multiple registries

Allows to push the manifests to other registries, this allows to push both docker.io and ghcr.io registries.
Ivan Gabaldon 4 days ago
parent
commit
cd64fb966e
2 changed files with 15 additions and 11 deletions
  1. 4 4
      .github/workflows/container.yml
  2. 11 7
      utils/lib_sxng_container.sh

+ 4 - 4
.github/workflows/container.yml

@@ -117,10 +117,6 @@ jobs:
             os: ubuntu-24.04-arm
             emulation: true
 
-    permissions:
-      # Organization GHCR
-      packages: write
-
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -152,6 +148,10 @@ jobs:
       - build
       - test
 
+    permissions:
+      # Organization GHCR
+      packages: write
+
     steps:
       - name: Checkout
         uses: actions/checkout@v4

+ 11 - 7
utils/lib_sxng_container.sh

@@ -255,8 +255,7 @@ container.push() {
         done
 
         # Manifest tags
-        release_tags=("latest")
-        release_tags+=("$DOCKER_TAG")
+        release_tags=("latest" "$DOCKER_TAG")
 
         # Create manifests
         for tag in "${release_tags[@]}"; do
@@ -274,13 +273,18 @@ container.push() {
 
         podman image list
 
+        # Remote registries
+        release_registries=("ghcr.io" "docker.io")
+
         # Push manifests
-        for tag in "${release_tags[@]}"; do
-            build_msg CONTAINER "Pushing manifest with tag: $tag"
+        for registry in "${release_registries[@]}"; do
+            for tag in "${release_tags[@]}"; do
+                build_msg CONTAINER "Pushing manifest $tag to $registry"
 
-            podman manifest push \
-                "localhost/$CONTAINER_IMAGE_ORGANIZATION/$CONTAINER_IMAGE_NAME:$tag" \
-                "docker://docker.io/$CONTAINER_IMAGE_ORGANIZATION/$CONTAINER_IMAGE_NAME:$tag"
+                podman manifest push \
+                    "localhost/$CONTAINER_IMAGE_ORGANIZATION/$CONTAINER_IMAGE_NAME:$tag" \
+                    "docker://$registry/$CONTAINER_IMAGE_ORGANIZATION/$CONTAINER_IMAGE_NAME:$tag"
+            done
         done
     )
     dump_return $?