From a1f5cec07bf5e6392f7050da8e9360c3dfa45e5e Mon Sep 17 00:00:00 2001
From: Alexander Wellbrock <a.wellbrock@mailbox.org>
Date: Tue, 28 Jul 2020 16:38:47 +0200
Subject: [PATCH] Add multiarch image builds

---
 .gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d7bf89e..742107c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,25 +6,44 @@ variables:
 before_script:
   - podman login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
 
-build-master:
+build-aarch64:
+  stage: build
   script:
-    - podman pull $CI_REGISTRY_IMAGE:latest || true
-    - podman build --layers=false --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG --tag $CI_REGISTRY_IMAGE:latest .
-    - podman push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
-    - podman push $CI_REGISTRY_IMAGE:latest
-  only:
-    # this build script would conflict with other branches
-    - master
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64" || true
+    - podman build --layers=false --cache-from "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64" --tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64" .
+    - podman push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64"
   tags:
     - aarch64
 
-build:
+build-amd64:
+  stage: build
+  script:
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64" || true
+    - podman build --layers=false --cache-from "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64" --tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64" .
+    - podman push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64"
+  tags:
+    - x86_64
+
+deploy:
+  stage: deploy
   script:
-    - podman pull $CI_REGISTRY_IMAGE:latest || true
-    - podman build --layers=false --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG .
-    - podman push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64"
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64"
+    - podman manifest create $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64" "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64" 
+    - podman manifest push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
   except:
-    # this build script would conflict with other branches
     - master
   tags:
-    - aarch64
+    - x86_64
+
+deploy-master:
+  stage: deploy
+  script:
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64"
+    - podman pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64"
+    - podman manifest create $CI_REGISTRY_IMAGE" "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-aarch64" "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-amd64" 
+    - podman manifest push "$CI_REGISTRY_IMAGE"
+  only:
+    - master
+  tags:
+    - x86_64
-- 
GitLab