gitlab-build-images/.gitlab/ci/definitions.yml
2022-11-08 12:49:31 +00:00

70 lines
2.4 KiB
YAML

.install-qemu:
timeout: 4 hours # builds with emulation can take a long time to complete
tags:
- docker
- high-cpu
variables:
QEMU_IMAGE: tonistiigi/binfmt:qemu-v7.0.0
before_script:
- |
if [ "$PUSH_CUSTOM_IMAGE" == "true" ]; then
echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin
fi
- |
if [[ "${ARCH:-amd64}" =~ arm64 ]]; then
echo -e "\033[1;33mInstalling latest qemu emulators\033[0m"
docker pull -q ${QEMU_IMAGE};
docker run --rm --privileged ${QEMU_IMAGE} --uninstall qemu-*;
docker run --rm --privileged ${QEMU_IMAGE} --install all;
fi
- docker buildx create --use # creates and set's to active buildkit builder
.build_and_push:
stage: custom
extends: .install-qemu
needs: []
script:
- ./scripts/lib/custom-docker-build
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_SERVER_HOST == "gitlab.com"'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_SERVER_HOST == "gitlab.com"'
variables:
PUSH_CUSTOM_IMAGE: "true"
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && ($CI_SERVER_HOST == "ops.gitlab.net" || $CI_SERVER_HOST == "dev.gitlab.org")'
variables:
PUSH_CUSTOM_IMAGE: "true"
BASE_BUILD_REGISTRY_IMAGE: $CI_REGISTRY_IMAGE
.cache-google-chrome:
stage: automation
extends: .install-qemu
needs: []
variables:
ARCH: linux/amd64,linux/arm64
parallel:
matrix:
- BUILD_OS: debian
OS_VERSION: bullseye
NOTIFY_VERSION_UPDATE: "true"
before_script:
- !reference [.install-qemu, before_script]
script:
- |
docker buildx build \
--build-arg CI_API_V4_URL=$CI_API_V4_URL \
--build-arg CI_PROJECT_ID=$CI_PROJECT_ID \
--build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN \
--build-arg CI_SLACK_WEBHOOK_URL=$CI_SLACK_WEBHOOK_URL \
--build-arg BUILD_OS=$BUILD_OS \
--build-arg OS_VERSION=$OS_VERSION \
--platform $ARCH \
-f "Dockerfile.cache-chrome" \
.
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_SERVER_HOST == "gitlab.com"'
- if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_SERVER_HOST == "gitlab.com"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_SERVER_HOST == "gitlab.com"'
when: manual
allow_failure: true