From d20f50a6daaaa347d76053e4980fced7b479d14b Mon Sep 17 00:00:00 2001
From: Milan Cermak <cermak@ics.muni.cz>
Date: Sat, 9 Nov 2024 21:41:44 +0100
Subject: [PATCH] Upgrade to Kaniko builder

---
 .gitlab-ci.yml | 58 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 35 insertions(+), 23 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4126921..8633529 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,31 +1,43 @@
-# CI for automated build and publish of project containers
+# CI for automated build and publish of project Docker containers
 
-build-branches:
-    image: docker:latest
+stages:
+  - build
+  - build_push
+
+variables:
+    IMAGE_TAG: $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG}
+    IMAGE_TEST_BUILD: $CI_REGISTRY_IMAGE:test-build
+
+# Check only for successful Docker image build
+docker_build:
     stage: build
-    services:
-        - docker:dind
-    variables:
-        IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
-    before_script:
-        - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    before_script: [ ] # Prevent global before_script from running
+    image:
+        name: gcr.io/kaniko-project/executor:v1.23.2-debug
+        entrypoint: [""]
     script:
-        - docker build --pull -t "$IMAGE_TAG" .
-        - docker push "$IMAGE_TAG"
+        - /kaniko/executor
+            --context "${CI_PROJECT_DIR}"
+            --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
+            --destination "${IMAGE_TEST_BUILD}"
+            --no-push
     except:
-        - master
+        - tags
 
-build-latest:
-    image: docker:latest
-    stage: build
-    services:
-        - docker:dind
-    variables:
-        IMAGE_TAG: $CI_REGISTRY_IMAGE:latest
+# Build and publish Docker image when a new tag is defined
+docker_build_push:
+    stage: build_push
+    image:
+        name: gcr.io/kaniko-project/executor:v1.23.2-debug
+        entrypoint: [""]
     before_script:
-        - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+        - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"username\":\"${CI_REGISTRY_USER}\",\"password\":\"${CI_REGISTRY_PASSWORD}\"}}}" > /kaniko/.docker/config.json
     script:
-        - docker build --pull -t "$IMAGE_TAG" .
-        - docker push "$IMAGE_TAG"
+        - /kaniko/executor
+            --context "${CI_PROJECT_DIR}"
+            --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
+            --destination "${IMAGE_TAG}"
     only:
-        - master
+        - tags
+    except:
+        - branches
-- 
GitLab