From 99102f2cb262fcbd536522b28e59a9bdafdf2e4b Mon Sep 17 00:00:00 2001 From: Konrad Botor <kbotor@syncad.com> Date: Fri, 16 Dec 2022 11:36:49 +0100 Subject: [PATCH] Reworked docker build jobs - ref. hive/hive#406 --- .gitlab-ci.yml | 93 ++++++----------- Dockerfile.docker-builder | 1 - scripts/bash/build-data.sh | 40 -------- scripts/bash/build-data4commit.sh | 32 ------ scripts/bash/build-instance.sh | 128 ------------------------ scripts/bash/common.sh | 4 +- scripts/bash/export-binaries.sh | 17 ---- scripts/bash/get-image4submodule.sh | 75 -------------- templates/data_image_jobs.gitlab-ci.yml | 71 ------------- templates/docker_jobs.gitlab-ci.yml | 38 +++++++ 10 files changed, 70 insertions(+), 429 deletions(-) delete mode 100755 scripts/bash/build-data.sh delete mode 100755 scripts/bash/build-data4commit.sh delete mode 100755 scripts/bash/build-instance.sh delete mode 100755 scripts/bash/export-binaries.sh delete mode 100755 scripts/bash/get-image4submodule.sh delete mode 100644 templates/data_image_jobs.gitlab-ci.yml create mode 100644 templates/docker_jobs.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2159ec0..80ac964 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,7 +15,7 @@ stages: include: - template: Workflows/Branch-Pipelines.gitlab-ci.yml - - local: templates/data_image_jobs.gitlab-ci.yml + - local: templates/docker_jobs.gitlab-ci.yml - local: templates/test_jobs.gitlab-ci.yml .validation_job: @@ -74,11 +74,12 @@ lint_python_scripts: junit: pylint-junit-result.xml .build_docker_image: - extends: .docker_image_builder_job + extends: .docker_image_builder_job_template image: docker:20.10.21 variables: BUILD_TARGET: "" before_script: + - !reference [.docker_image_builder_job_template, before_script] - | echo -e "\e[0Ksection_start:$(date +%s):login[collapsed=true]\r\e[0KLogging to Docker registry..." docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY @@ -95,41 +96,30 @@ lint_python_scripts: fi echo -e "\e[0Ksection_end:$(date +%s):tag\r\e[0K" echo -e "\e[0Ksection_start:$(date +%s):build[collapsed=true]\r\e[0KBaking image "$CI_REGISTRY_IMAGE/$BUILD_TARGET:${tag}"..." - docker context create builder-context - docker buildx create --driver docker-container --name docker-container-builder builder-context - docker buildx bake --progress=plain --builder docker-container-builder --push "$BUILD_TARGET" + docker buildx bake --progress=plain --push "$BUILD_TARGET" echo -e "\e[0Ksection_end:$(date +%s):build\r\e[0K" - needs: - - build_docker_dind_image tags: - public-runner-docker build_docker_dind_image: + extends: .build_docker_image stage: pre-build - image: docker:20.10.21 variables: - DOCKER_BUILDKIT: 1 - DOCKER_DRIVER: overlay2 - DOCKER_TLS_CERTDIR: "/certs" BUILD_TARGET: "docker-dind" - before_script: - - !reference [.build_docker_image, before_script] - script: - - !reference [.build_docker_image, script] rules: - if: $CI_COMMIT_BRANCH exists: - Dockerfile.docker-dind services: - docker:20.10.21-dind - tags: - - public-runner-docker build_docker_builder_image: extends: .build_docker_image stage: build variables: BUILD_TARGET: "docker-builder" + needs: + - build_docker_dind_image rules: - if: $CI_COMMIT_BRANCH exists: @@ -140,6 +130,8 @@ build_image_remover_image: stage: build variables: BUILD_TARGET: "image-remover" + needs: + - build_docker_dind_image rules: - if: $CI_COMMIT_BRANCH exists: @@ -150,6 +142,8 @@ build_benchmark_test_runner_image: stage: build variables: BUILD_TARGET: "benchmark-test-runner" + needs: + - build_docker_dind_image rules: - if: $CI_COMMIT_BRANCH exists: @@ -160,39 +154,27 @@ build_tox_test_runner_image: stage: build variables: BUILD_TARGET: "tox-test-runner" + needs: + - build_docker_dind_image rules: - if: $CI_COMMIT_BRANCH exists: - Dockerfile.tox-test-runner -prepare_example_hived_data_5m_image: - extends: .prepare_hived_data_5m_image +example_docker_image_builder_job: + extends: .docker_image_builder_job_template stage: example-build - variables: - REGISTRY_USER: "$CI_REGISTRY_USER" - REGISTRY_PASS: "$CI_REGISTRY_PASSWORD" - REGISTRY_URL: "registry.gitlab.syncad.com/hive/common-ci-configuration/hive/" before_script: - - LOG_FILE=tmp.log source /usr/local/bin/common.sh - - do_clone_commit 9f39eae9ef35642445ae63e8c0a681f1376334ed $SUBDIRECTORY $REPOSITORY_URL - after_script: - - cat docker_image_name.env - when: manual - tags: - - public-runner-docker - -prepare_example_haf_data_5m_image: - extends: .prepare_haf_data_5m_image - stage: example-build - variables: - REGISTRY_USER: "$CI_REGISTRY_USER" - REGISTRY_PASS: "$CI_REGISTRY_PASSWORD" - REGISTRY_URL: "registry.gitlab.syncad.com/hive/common-ci-configuration/haf/" - before_script: - - LOG_FILE=tmp.log source /usr/local/bin/common.sh - - do_clone_commit c21bdf1937c1cbd2781aa86816f159285a1909bf $SUBDIRECTORY $REPOSITORY_URL - after_script: - - cat docker_image_name.env + - !reference [.build_docker_image, before_script] + script: + - | + docker buildx build --progress=plain --push \ + --cache-from type=registry,ref=$CI_REGISTRY_IMAGE/alpine-example:latest-cache \ + --cache-to type=registry,mode=max,ref=$CI_REGISTRY_IMAGE/alpine-example:latest-cache \ + --tag $CI_REGISTRY_IMAGE/alpine-example:latest \ + https://github.com/alpinelinux/docker-alpine.git + needs: + - build_docker_dind_image when: manual tags: - public-runner-docker @@ -232,28 +214,15 @@ example_tox_test_job: tags: - public-runner-docker -example_hived_data_image_cleanup: - extends: .docker_image_cleanup_job - stage: example-cleanup - variables: - REGISTRY_PASS: "$REGISTRY_PASS" - IMAGE_PATH: $HIVED_IMAGE_NAME_REGISTRY_PATH - IMAGE_TAG: $HIVED_IMAGE_NAME_REGISTRY_TAG - needs: - - prepare_example_hived_data_5m_image - when: manual - tags: - - public-runner-docker - -example_haf_data_image_cleanup: - extends: .docker_image_cleanup_job +example_image_cleanup_job: + extends: .docker_image_cleanup_job_template stage: example-cleanup variables: REGISTRY_PASS: "$REGISTRY_PASS" - IMAGE_PATH: $HAF_IMAGE_NAME_REGISTRY_PATH - IMAGE_TAG: $HAF_IMAGE_NAME_REGISTRY_TAG + IMAGE_PATH: $CI_REGISTRY_IMAGE/alpine-example + IMAGE_TAG: latest needs: - - prepare_example_haf_data_5m_image + - example_docker_image_builder_job when: manual tags: - - public-runner-docker + - public-runner-docker \ No newline at end of file diff --git a/Dockerfile.docker-builder b/Dockerfile.docker-builder index c28a018..9fd571f 100644 --- a/Dockerfile.docker-builder +++ b/Dockerfile.docker-builder @@ -1,4 +1,3 @@ FROM docker:20.10.21 AS docker-builder -COPY scripts/bash/*.sh /usr/local/bin RUN apk add --no-cache bash git ca-certificates curl \ No newline at end of file diff --git a/scripts/bash/build-data.sh b/scripts/bash/build-data.sh deleted file mode 100755 index c13e6f7..0000000 --- a/scripts/bash/build-data.sh +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/bash -# shellcheck source-path=SCRIPTDIR - -SCRIPTPATH=$(realpath "$0") -SCRIPTDIR=$(dirname "$SCRIPTPATH") - -export LOG_FILE=build_data.log -source "$SCRIPTDIR/common.sh" - -echo -e "\e[0Ksection_start:$(date +%s):input_processing[collapsed=true]\r\e[0KChecking build-data.sh script input..." -BUILD_IMAGE_TAG=${1:?"Missing argument #1: build image tag"} -shift -SRCROOTDIR=${1:?"Missing argument #2: source directory"} -shift -REGISTRY=${1:?"Missing argument #3: target image registry"} -shift - -# Supplement a registry path by trailing slash (if needed) -[[ "${REGISTRY}" != */ ]] && REGISTRY="${REGISTRY}/" - -BUILD_HIVE_TESTNET=OFF -HIVE_CONVERTER_BUILD=OFF -echo -e "\e[0Ksection_end:$(date +%s):input_processing\r\e[0K" - -"$SCRIPTDIR/build-instance.sh" "${BUILD_IMAGE_TAG}" "${SRCROOTDIR}" "${REGISTRY}" "$@" - -echo -e "\e[0Ksection_start:$(date +%s):data_image_docker_build[collapsed=true]\r\e[0KBuilding data image..." -echo "Instance image built. Attempting to build a data image based on it..." - -pushd "$SRCROOTDIR" ||exit 1 - -docker build --target=data \ - --build-arg CI_REGISTRY_IMAGE="$REGISTRY" \ - --build-arg BUILD_HIVE_TESTNET=$BUILD_HIVE_TESTNET \ - --build-arg HIVE_CONVERTER_BUILD=$HIVE_CONVERTER_BUILD \ - --build-arg BUILD_IMAGE_TAG="$BUILD_IMAGE_TAG" \ - -t "${REGISTRY}data:data-${BUILD_IMAGE_TAG}" -f Dockerfile . - -popd || exit 1 -echo -e "\e[0Ksection_end:$(date +%s):data_image_docker_build\r\e[0K" \ No newline at end of file diff --git a/scripts/bash/build-data4commit.sh b/scripts/bash/build-data4commit.sh deleted file mode 100755 index 27b5e60..0000000 --- a/scripts/bash/build-data4commit.sh +++ /dev/null @@ -1,32 +0,0 @@ -#! /bin/bash -# shellcheck source-path=SCRIPTDIR - -SCRIPTPATH=$(realpath "$0") -SCRIPTDIR=$(dirname "$SCRIPTPATH") - -export LOG_FILE=build_data4commit.log -source "$SCRIPTDIR/common.sh" - -echo -e "\e[0Ksection_start:$(date +%s):input_processing[collapsed=true]\r\e[0KChecking build-data4commit.sh script input..." -COMMIT=${1:?"Missing argument #1: commit SHA"} -shift -REGISTRY=${1:?"Missing argument #2: target image registry"} -shift -REPOSITORY=${1:?"Missing argument #3: repository URL"} -shift -BRANCH="master" - -BUILD_IMAGE_TAG=$COMMIT - -readarray -d "/" -t REPOSITORY_URL_ARRAY <<< "$REPOSITORY" -REPOSITORY_ARRAY_LENGTH=${#REPOSITORY_URL_ARRAY[*]} -readarray -d "." -t SPLIT_REPOSITORY_NAME <<< "${REPOSITORY_URL_ARRAY[$REPOSITORY_ARRAY_LENGTH-1]}" -PROJECT_NAME=${SPLIT_REPOSITORY_NAME[0]} -echo -e "\e[0Ksection_end:$(date +%s):input_processing\r\e[0K" - -echo -e "\e[0Ksection_start:$(date +%s):cloning[collapsed=true]\r\e[0KCloning repository $REPOSITORY into directory ${PROJECT_NAME}-${COMMIT}..." -do_clone "$BRANCH" "./${PROJECT_NAME}-${COMMIT}" "$REPOSITORY" "$COMMIT" -echo -e "\e[0Ksection_end:$(date +%s):cloning\r\e[0K" - -"$SCRIPTDIR/build-data.sh" "$BUILD_IMAGE_TAG" "./${PROJECT_NAME}-${COMMIT}" "$REGISTRY" "$@" - diff --git a/scripts/bash/build-instance.sh b/scripts/bash/build-instance.sh deleted file mode 100755 index 2b6a024..0000000 --- a/scripts/bash/build-instance.sh +++ /dev/null @@ -1,128 +0,0 @@ -#! /bin/bash -# shellcheck source-path=SCRIPTDIR - -SCRIPTPATH=$(realpath "$0") -SCRIPTDIR=$(dirname "$SCRIPTPATH") - -export LOG_FILE=build_instance.log -source "$SCRIPTDIR/common.sh" - -BUILD_IMAGE_TAG="" -REGISTRY="" -SRCROOTDIR="" -IMAGE_TAG_PREFIX="" -BUILD_HIVE_TESTNET=OFF -HIVE_CONVERTER_BUILD=OFF - - -print_help () { - echo "Usage: $0 <image_tag> <src_dir> <registry_url> [OPTION[=VALUE]]..." - echo - echo "Allows to build docker image containing Hived installation" - echo "OPTIONS:" - echo " --network-type=TYPE Allows to specify type of blockchain network supported by built hived. Allowed values: mainnet, testnet, mirrornet" - echo " --export-binaries=PATH Allows to specify a path where binaries shall be exported from built image." - echo " --help Display this help screen and exit" - echo -} - -EXPORT_PATH="" - -echo -e "\e[0Ksection_start:$(date +%s):input_processing[collapsed=true]\r\e[0KChecking build-instance.sh script input..." -while [ $# -gt 0 ]; do - case "$1" in - --network-type=*) - type="${1#*=}" - - case $type in - "testnet"*) - BUILD_HIVE_TESTNET=ON - IMAGE_TAG_PREFIX=testnet- - ;; - "mirrornet"*) - BUILD_HIVE_TESTNET=OFF - HIVE_CONVERTER_BUILD=ON - IMAGE_TAG_PREFIX=mirror- - ;; - "mainnet"*) - BUILD_HIVE_TESTNET=OFF - HIVE_CONVERTER_BUILD=OFF - IMAGE_TAG_PREFIX= - ;; - *) - echo "ERROR: '$type' is not a valid network type" - echo - exit 3 - esac - ;; - --export-binaries=*) - arg="${1#*=}" - EXPORT_PATH="$arg" - ;; - --help) - print_help - exit 0 - ;; - *) - if [ -z "$BUILD_IMAGE_TAG" ]; - then - BUILD_IMAGE_TAG="${1}" - elif [ -z "$SRCROOTDIR" ]; - then - SRCROOTDIR="${1}" - elif [ -z "$REGISTRY" ]; - then - REGISTRY=${1} - else - echo "ERROR: '$1' is not a valid option/positional argument" - echo - print_help - exit 2 - fi - ;; - esac - shift -done - -[[ -z "$BUILD_IMAGE_TAG" ]] && echo "Missing argument #1: build image tag." && exit 1 -[[ -z "$SRCROOTDIR" ]] && echo "Missing argument #2: source directory. Exiting." && exit 1 -[[ -z "$REGISTRY" ]] && echo "Missing argument #3: target image registry. Exiting." && exit 1 -echo -e "\e[0Ksection_end:$(date +%s):input_processing\r\e[0K" - -echo -e "\e[0Ksection_start:$(date +%s):base_instance_image_docker_build[collapsed=true]\r\e[0KBuilding base instance image..." -# Supplement a registry path by trailing slash (if needed) -[[ "${REGISTRY}" != */ ]] && REGISTRY="${REGISTRY}/" - -echo "Moving into source root directory: ${SRCROOTDIR}" -pushd "$SRCROOTDIR" || exit 1 - -export DOCKER_BUILDKIT=1 - -docker build --target=base_instance \ - --build-arg CI_REGISTRY_IMAGE="$REGISTRY" \ - --build-arg BUILD_HIVE_TESTNET=$BUILD_HIVE_TESTNET \ - --build-arg HIVE_CONVERTER_BUILD=$HIVE_CONVERTER_BUILD \ - --build-arg BUILD_IMAGE_TAG="$BUILD_IMAGE_TAG" \ - -t "${REGISTRY}base_instance:base_instance-${BUILD_IMAGE_TAG}" \ - -f Dockerfile . -echo -e "\e[0Ksection_end:$(date +%s):base_instance_image_docker_build\r\e[0K" - -echo -e "\e[0Ksection_start:$(date +%s):instance_image_docker_build[collapsed=true]\r\e[0KBuilding instance image..." -# Build the image containing only binaries and be ready to start running hived instance, operating on mounted volumes pointing instance datadir and shm_dir -docker build --target=instance \ - --build-arg CI_REGISTRY_IMAGE="$REGISTRY" \ - --build-arg BUILD_HIVE_TESTNET=$BUILD_HIVE_TESTNET \ - --build-arg HIVE_CONVERTER_BUILD=$HIVE_CONVERTER_BUILD \ - --build-arg BUILD_IMAGE_TAG="$BUILD_IMAGE_TAG" \ - -t "${REGISTRY}${IMAGE_TAG_PREFIX}instance:instance-${BUILD_IMAGE_TAG}" \ - -f Dockerfile . - -popd || exit 1 - -echo -e "\e[0Ksection_end:$(date +%s):instance_image_docker_build\r\e[0K" - -if [ -n "${EXPORT_PATH}" ] ; -then - "$SCRIPTDIR/export-binaries.sh" "${REGISTRY}${IMAGE_TAG_PREFIX}instance:instance-${BUILD_IMAGE_TAG}" "${EXPORT_PATH}" -fi - diff --git a/scripts/bash/common.sh b/scripts/bash/common.sh index e4bed60..07a6b97 100755 --- a/scripts/bash/common.sh +++ b/scripts/bash/common.sh @@ -1,8 +1,6 @@ #! /bin/bash -set -euo pipefail - -exec > >(tee "${LOG_FILE}") 2>&1 +set -euo pipefail log_exec_params() { echo diff --git a/scripts/bash/export-binaries.sh b/scripts/bash/export-binaries.sh deleted file mode 100755 index 31c2237..0000000 --- a/scripts/bash/export-binaries.sh +++ /dev/null @@ -1,17 +0,0 @@ -#! /bin/bash - -set -euo pipefail - -echo -e "\e[0Ksection_start:$(date +%s):binaries_export[collapsed=true]\r\e[0KExporting binaries..." -IMAGE_TAGGED_NAME=${1:-"Missing image name"} -EXPORT_PATH=${2:-"Missing export target directory"} - -echo "Attempting to export built binaries from image: ${IMAGE_TAGGED_NAME} into directory: ${EXPORT_PATH}" - -export DOCKER_BUILDKIT=1 - -docker build -o "${EXPORT_PATH}" - << EOF - FROM scratch - COPY --from=${IMAGE_TAGGED_NAME} /home/hived/bin/ / -EOF -echo -e "\e[0Ksection_end:$(date +%s):binaries_export\r\e[0K" \ No newline at end of file diff --git a/scripts/bash/get-image4submodule.sh b/scripts/bash/get-image4submodule.sh deleted file mode 100755 index addde11..0000000 --- a/scripts/bash/get-image4submodule.sh +++ /dev/null @@ -1,75 +0,0 @@ -#! /bin/bash -# shellcheck source-path=SCRIPTDIR - -set -euo pipefail - -SCRIPTPATH=$(realpath "$0") -SCRIPTDIR=$(dirname "$SCRIPTPATH") - -IMGNAME="data" - -source "$SCRIPTDIR/docker-image-utils.sh" - -echo -e "\e[0Ksection_start:$(date +%s):input_check[collapsed=true]\r\e[0KChecking get-image4submodule.sh script input..." -SUBMODULE_PATH=${1:?"Missing argument #1: submodule path"} -shift -REGISTRY=${1:?"Missing argument #2: image registry"} -shift -DOTENV_VAR_NAME=${1:?"Missing argument #3: dot-env name"} -shift -REGISTRY_USER=${1:?"Missing argument #4: registry user"} -shift -REGISTRY_PASSWORD=${1:?"Missing argument #5: registry password"} -shift -BINARY_CACHE_PATH=${1:?"Missing argument #6: binary cache path"} -shift -REPOSITORY=${1:?"Missing argument #7: repository URL"} -shift -echo -e "\e[0Ksection_end:$(date +%s):input_check\r\e[0K" - -retrieve_submodule_commit () { - local -r p="${1}" - pushd "$p" >/dev/null 2>&1 - local -r commit=$( git rev-parse HEAD ) - - popd >/dev/null 2>&1 - - echo "$commit" -} - -echo -e "\e[0Ksection_start:$(date +%s):retrieve_submodule_commit[collapsed=true]\r\e[0KRetrieving submodule commit..." -echo "Attempting to get commit for: $SUBMODULE_PATH" -commit=$( retrieve_submodule_commit "${SUBMODULE_PATH}" ) -img=$( build_image_name $IMGNAME "$commit" "$REGISTRY" ) -img_path=$( build_image_registry_path $IMGNAME "$commit" "$REGISTRY" ) -img_tag=$( build_image_registry_tag $IMGNAME "$commit" "$REGISTRY" ) -echo -e "\e[0Ksection_end:$(date +%s):retrieve_submodule_commit\r\e[0K" - -echo -e "\e[0Ksection_start:$(date +%s):docker_login[collapsed=true]\r\e[0KLogging in to Docker repository..." -echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USER" "$REGISTRY" --password-stdin -echo -e "\e[0Ksection_end:$(date +%s):docker_login\r\e[0K" - -echo -e "\e[0Ksection_start:$(date +%s):image_exists[collapsed=true]\r\e[0KChecking if image exists..." -image_exists=0 -docker_image_exists "$IMGNAME" "$commit" "$REGISTRY" image_exists -echo -e "\e[0Ksection_end:$(date +%s):image_exists\r\e[0K" - -if [ "$image_exists" -eq 1 ]; -then - echo "Image already exists..." - "$SCRIPTDIR/export-binaries.sh" "${img}" "${BINARY_CACHE_PATH}" -else - # Here continue an image build. - echo "Image ${img} is missing. Building it..." - "$SCRIPTDIR/build-data4commit.sh" "$commit" "$REGISTRY" "$REPOSITORY" --export-binaries="${BINARY_CACHE_PATH}" - echo -e "\e[0Ksection_start:$(date +%s):image_push[collapsed=true]\r\e[0KPusing data image to Docker repository..." - time docker push "$img" - echo -e "\e[0Ksection_end:$(date +%s):image_push\r\e[0K" -fi - -echo -e "\e[0Ksection_start:$(date +%s):dot_env[collapsed=true]\r\e[0KGenerating dotenv file..." -echo "$DOTENV_VAR_NAME=$img" > docker_image_name.env -echo "${DOTENV_VAR_NAME}_REGISTRY_PATH=$img_path" >> docker_image_name.env -echo "${DOTENV_VAR_NAME}_REGISTRY_TAG=$img_tag" >> docker_image_name.env -cat docker_image_name.env -echo -e "\e[0Ksection_end:$(date +%s):dot_env\r\e[0K" \ No newline at end of file diff --git a/templates/data_image_jobs.gitlab-ci.yml b/templates/data_image_jobs.gitlab-ci.yml deleted file mode 100644 index af63a02..0000000 --- a/templates/data_image_jobs.gitlab-ci.yml +++ /dev/null @@ -1,71 +0,0 @@ -variables: - DOCKER_BUILDER_TAG: "latest" - DOCKER_DIND_TAG: "latest" - IMAGE_REMOVER_TAG: "latest" - -.docker_image_builder_job: - variables: - DOCKER_BUILDKIT: 1 - DOCKER_DRIVER: overlay2 - DOCKER_TLS_CERTDIR: "/certs" - image: registry.gitlab.syncad.com/hive/common-ci-configuration/docker-builder:${DOCKER_BUILDER_TAG} - interruptible: true - services: - - name: registry.gitlab.syncad.com/hive/common-ci-configuration/docker-dind:${DOCKER_DIND_TAG} - alias: docker - -.docker_image_cleanup_job: - image: registry.gitlab.syncad.com/hive/common-ci-configuration/image-remover:${IMAGE_REMOVER_TAG} - interruptible: true - variables: - REGISTRY: $CI_REGISTRY_IMAGE - REGISTRY_PASS: "" - IMAGE_PATH: "" - IMAGE_TAG: "" - script: - - echo "Attempting to cleanup an image $IMAGE_PATH using tag $IMAGE_TAG from $REGISTRY" - - python /delete-image.py "$REGISTRY_PASS" "$CI_PROJECT_ID" "$IMAGE_PATH" "$IMAGE_TAG" - when: always - -.prepare_data_5m_image: - extends: .docker_image_builder_job - variables: - DOTENV_NAME: "" - REGISTRY_USER: "$CI_IMG_BUILDER_USER" - REGISTRY_PASS: "$CI_IMG_BUILDER_PASSWORD" - REGISTRY_URL: "" - REPOSITORY_URL: "" - SUBDIRECTORY: "" - script: - - | - get-image4submodule.sh "$SUBDIRECTORY" \ - "$REGISTRY_URL" \ - "$DOTENV_NAME" \ - "$REGISTRY_USER" \ - "$REGISTRY_PASS" \ - "hived-mainnet-binaries" \ - "$REPOSITORY_URL" - - ls -la ./hived-mainnet-binaries/* - artifacts: - reports: - dotenv: docker_image_name.env - paths: - - ./hived-mainnet-binaries/* - expire_in: 6 hours - when: always - -.prepare_hived_data_5m_image: - extends: .prepare_data_5m_image - variables: - DOTENV_NAME: "HIVED_IMAGE_NAME" - REGISTRY_URL: "registry.gitlab.syncad.com/hive/hive/" - REPOSITORY_URL: "https://gitlab.syncad.com/hive/hive.git" - SUBDIRECTORY: "hive" - -.prepare_haf_data_5m_image: - extends: .prepare_data_5m_image - variables: - DOTENV_NAME: "HAF_IMAGE_NAME" - REGISTRY_URL: "registry.gitlab.syncad.com/hive/haf/" - REPOSITORY_URL: "https://gitlab.syncad.com/hive/haf.git" - SUBDIRECTORY: "haf" diff --git a/templates/docker_jobs.gitlab-ci.yml b/templates/docker_jobs.gitlab-ci.yml new file mode 100644 index 0000000..60cfac3 --- /dev/null +++ b/templates/docker_jobs.gitlab-ci.yml @@ -0,0 +1,38 @@ +variables: + DOCKER_BUILDER_TAG: "latest" + DOCKER_DIND_TAG: "latest" + IMAGE_REMOVER_TAG: "latest" + +.artifact_policy: + artifacts: + when: always + expire_in: 6 hours + +.docker_image_builder_job_template: + variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "/certs" + image: registry.gitlab.syncad.com/hive/common-ci-configuration/docker-builder:${DOCKER_BUILDER_TAG} + interruptible: true + before_script: + - | + echo -e "\e[0Ksection_start:$(date +%s):buildkit_config[collapsed=true]\r\e[0KConfiguring Docker BuildKit..." + docker context create builder-context + docker buildx create --driver docker-container --name docker-container-builder --use builder-context + echo -e "\e[0Ksection_end:$(date +%s):buildkit_config\r\e[0K" + services: + - name: registry.gitlab.syncad.com/hive/common-ci-configuration/docker-dind:${DOCKER_DIND_TAG} + alias: docker + +.docker_image_cleanup_job_template: + image: registry.gitlab.syncad.com/hive/common-ci-configuration/image-remover:${IMAGE_REMOVER_TAG} + interruptible: true + variables: + REGISTRY: $CI_REGISTRY_IMAGE + REGISTRY_PASS: "" + IMAGE_PATH: "" + IMAGE_TAG: "" + script: + - echo "Attempting to cleanup an image $IMAGE_PATH using tag $IMAGE_TAG from $REGISTRY" + - python /delete-image.py "$REGISTRY_PASS" "$CI_PROJECT_ID" "$IMAGE_PATH" "$IMAGE_TAG" + when: always -- GitLab