Make use of the --cache-from option from 'docker build' by including
build layers when building and then pulling a previously built image
before the next build.
This was previously done by the docker.py script, but got disabled due
to bad interactions with certain runners. See commit 6ddc3dc7a8
("tests/docker: don't use BUILDKIT in GitLab either").
We now believe those issues to be fixed, so restore the caching
functionality as it brings a significant reduction in container build
times.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
.gitlab-ci.d/container-template.yml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/.gitlab-ci.d/container-template.yml b/.gitlab-ci.d/container-template.yml
index f417452212..31e4e36a7d 100644
--- a/.gitlab-ci.d/container-template.yml
+++ b/.gitlab-ci.d/container-template.yml
@@ -13,7 +13,10 @@
script:
- echo "TAG:$TAG"
- echo "COMMON_TAG:$COMMON_TAG"
- - docker build --tag $TAG -f "tests/docker/dockerfiles/$NAME.docker" "."
+ - docker pull "$TAG" || true
+ - docker build --tag "$TAG" --cache-from "$TAG"
+ --build-arg BUILDKIT_INLINE_CACHE=1
+ -f "tests/docker/dockerfiles/$NAME.docker" "."
- docker push "$TAG"
after_script:
- docker logout
--
2.35.3
On Fri, Feb 24, 2023 at 09:52:06AM -0300, Fabiano Rosas wrote:
> Make use of the --cache-from option from 'docker build' by including
> build layers when building and then pulling a previously built image
> before the next build.
>
> This was previously done by the docker.py script, but got disabled due
> to bad interactions with certain runners. See commit 6ddc3dc7a8
> ("tests/docker: don't use BUILDKIT in GitLab either").
>
> We now believe those issues to be fixed, so restore the caching
> functionality as it brings a significant reduction in container build
> times.
>
> Signed-off-by: Fabiano Rosas <farosas@suse.de>
> ---
> .gitlab-ci.d/container-template.yml | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/.gitlab-ci.d/container-template.yml b/.gitlab-ci.d/container-template.yml
> index f417452212..31e4e36a7d 100644
> --- a/.gitlab-ci.d/container-template.yml
> +++ b/.gitlab-ci.d/container-template.yml
> @@ -13,7 +13,10 @@
> script:
> - echo "TAG:$TAG"
> - echo "COMMON_TAG:$COMMON_TAG"
> - - docker build --tag $TAG -f "tests/docker/dockerfiles/$NAME.docker" "."
> + - docker pull "$TAG" || true
> + - docker build --tag "$TAG" --cache-from "$TAG"
We should have
--cache-from "$TAG" --cache-from "$COMMON_TAG"
The reason is that users may not keep their branches up2date on a regular
basis. As such the registry associated with the fork may not be useful
as a caching source. Thus if we include cache from the upstream repo, this
will benefit forks. This was the rational behind having TAG + COMMON_TAG
originally, but we lost it somewhere along the way.
> + --build-arg BUILDKIT_INLINE_CACHE=1
> + -f "tests/docker/dockerfiles/$NAME.docker" "."
> - docker push "$TAG"
> after_script:
> - docker logout
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
© 2016 - 2025 Red Hat, Inc.