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