Use buildkit and inline cache to speed up builds

This commit is contained in:
Andrejs Cunskis 2022-04-29 16:19:34 +03:00
parent be7af7d540
commit e5885af2fb
No known key found for this signature in database
GPG key ID: 87CB75083F227241
3 changed files with 7 additions and 7 deletions

View file

@ -4,8 +4,7 @@
# Hack to set an array in /bin/sh
# http://unix.stackexchange.com/a/137571
- set -- $CI_JOB_NAME
- docker pull --quiet "$CI_REGISTRY_IMAGE:$1" || true
- docker build --cache-from="$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
- docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from="$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
.build_and_deploy:
extends: .deploy
@ -13,8 +12,7 @@
# Hack to set an array in /bin/sh
# http://unix.stackexchange.com/a/137571
- set -- $CI_JOB_NAME
- docker pull --quiet "$CI_REGISTRY_IMAGE:$1" || true
- docker build --cache-from="$CI_REGISTRY_IMAGE:$1" --label "ci_pipeline_url=$CI_PIPELINE_URL" --label "ci_job_url=$CI_JOB_URL" -t "$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
- docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from="$CI_REGISTRY_IMAGE:$1" --label "ci_pipeline_url=$CI_PIPELINE_URL" --label "ci_job_url=$CI_JOB_URL" -t "$CI_REGISTRY_IMAGE:$1" -f "Dockerfile.$1" .
- docker push "$CI_REGISTRY_IMAGE:$1"
# Used by https://gitlab.com/gitlab-org/charts/auto-deploy-app/-/blob/master/.gitlab-ci.yml

View file

@ -1,12 +1,16 @@
# Run test job always
.test:
stage: test
variables:
DOCKER_BUILDKIT: 1
rules:
- when: always
# Run build job only on a default branch when triggered manually
.deploy:
stage: deploy
variables:
DOCKER_BUILDKIT: 1
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: manual

View file

@ -265,9 +265,7 @@ function build_custom_if_needed() {
echo "Building image $build_image_name"
full_image_name="$CI_REGISTRY_IMAGE:$build_image_name"
# This re-uses and builds an existing image if needed
docker pull --quiet "$full_image" || true
docker_command=$(generate_command $@ --cache-from="$full_image_name" -t "$full_image_name")
docker_command=$(generate_command $@ --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from="$full_image_name" -t "$full_image_name")
echo "Docker command:"
printf "\t%s" "$docker_command"
eval $docker_command