From 35e4738cb0c331143b85c95a54ba4404d3671035 Mon Sep 17 00:00:00 2001
From: r0zehnal0vak <k.rozehnalka@seznam.cz>
Date: Tue, 3 Jun 2025 11:48:52 +0200
Subject: [PATCH] update pipeline

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

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 42502b8..6240a47 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,56 +1,72 @@
-stages:
-- build
-- build-image
-- release-image
-
-image: registry.gitlab.ics.muni.cz:443/cloud/container-registry/docker:latest
+include:
+  - project: 'cloud/ci-cd-scripts'
+    file:
+      - '/ci-templates/image-build.yml'
+      - '/ci-templates/image-release.yml'
 
-services:
-  - name: registry.gitlab.ics.muni.cz:443/cloud/container-registry/docker:latest-dind
-    alias: docker
+stages:
+  - env-setup
+  - build-image
+  - release-image
 
-variables:
-  DOCKER_EXE: docker
+prepare-variables:
+  stage: env-setup
+  image:
+    name: bash
+    entrypoint: [""]
+  script:
+    - VERSION=$(ci/version.sh CHANGELOG.md)
+    - echo "VERSION=${VERSION}" > vars.env
+  artifacts:
+    reports:
+      dotenv: vars.env
 
-before_script:
-  - apk update
-  - apk add $(cat ci/dependencies.apk.txt)
-  - ${DOCKER_EXE} login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "${CI_REGISTRY}"
-  - export VERSION=$(ci/version.sh CHANGELOG.md)
+.common-image-job-sections:
+  variables:
+    CONTEXT_DIR: "."
+  needs:
+    - prepare-variables
+  before_script: |
+    if [ -z "$VERSION" ]; then
+      echo "VERSION cannot be undefined (in file env.var)"
+      exit 1
+    fi
 
-# build and release container image
-# ---------------------------------------------------------------------------
 build-image:
+  extends:
+    - .build-image-job-template
+    - .common-image-job-sections
   stage: build-image
-  script: |
-    echo "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}" > container-release.uri
-    tar czf custom-metrics-generator_files.tgz entrypoint.sh dependencies*.txt src/*.sh src/*/*.sh CHANGELOG.md Dockerfile
-    ${DOCKER_EXE} build --pull -t $(head -1 container-release.uri) --build-arg "VERSION=${VERSION}" --build-arg "BUILD_DATE=$(date +%Y-%m-%dT%H:%M:%S)" --build-arg "CI_BUILD_HOSTNAME=$(hostname)" --build-arg "CI_COMMIT_SHA=${CI_COMMIT_SHA}" --build-arg "CI_BUILD_JOB_NAME=${CI_JOB_NAME}" --build-arg "CI_BUILD_ID=${CI_JOB_ID}" .
-    ${DOCKER_EXE} push $(head -1 container-release.uri)
+  variables:
+    EXTRA_BUILD_ARGS: >-
+      --build-arg VERSION=${VERSION}
+      --build-arg BUILD_DATE=$(date +%Y-%m-%dT%H:%M:%S)
+      --build-arg CI_BUILD_HOSTNAME=$(hostname)
+      --build-arg CI_COMMIT_SHA=${CI_COMMIT_SHA}
+      --build-arg CI_BUILD_JOB_NAME=${CI_JOB_NAME}
+      --build-arg CI_BUILD_ID=${CI_JOB_ID}
   artifacts:
     expire_in: 2 mo
-    name: ${CI_BUILD_NAME}-${CI_BUILD_REF_NAME}-container-uri
+    name: ${CI_BUILD_NAME}-${CI_COMMIT_REF_NAME}-container-uri
     paths:
       - container-release.uri
 
-# release container image
-# ---------------------------------------------------------------------------
 release-image:
+  extends:
+    - .release-image-job-template
+    - .common-image-job-sections
   stage: release-image
-  script: |
-    CONTAINER_IMAGE="$(head -1 container-release.uri)"
-    ${DOCKER_EXE} pull "${CONTAINER_IMAGE}"
-    for i_container_image_tag in ${VERSION} latest; do
-      ${DOCKER_EXE} tag "${CONTAINER_IMAGE}" ${CI_REGISTRY_IMAGE}:${i_container_image_tag}
-      ${DOCKER_EXE} push "${CI_REGISTRY_IMAGE}:${i_container_image_tag}"
-      echo "${CI_REGISTRY_IMAGE}:${i_container_image_tag}" >> container-release.uri
-    done
+  needs:
+    - prepare-variables
+    - build-image
+  variables:
+    CONTAINER_IMAGE_TAGS: "${VERSION} latest"
   only:
     - /^v[0-9]+\.[0-9]+\.[0-9]+/
   except:
     - branches
   artifacts:
     expire_in: 2 mo
-    name: ${CI_BUILD_NAME}-${CI_BUILD_REF_NAME}-container-release-uri
+    name: ${CI_BUILD_NAME}-${CI_COMMIT_REF_NAME}-container-release-uri
     paths:
       - container-release.uri
-- 
GitLab