Skip to content

Commit b9f7a07

Browse files
committed
Implement cache using docker's --cache-from flag
With docker 1.13 a new build flag was added: --cache-from This flag deprecated the buildcache tool that we used with docker 1.12 Details: moby/moby#26839
1 parent 4c5d849 commit b9f7a07

File tree

256 files changed

+6
-26891
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

256 files changed

+6
-26891
lines changed

Dockerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ FROM concourse/buildroot:iptables
33
ADD docker/ /usr/local/bin/
44
RUN /usr/local/bin/docker --version
55

6-
ADD buildcache /usr/local/bin/buildcache
7-
86
ADD assets/ /opt/resource/
97

108
ADD ecr-login /usr/local/bin/docker-credential-ecr-login

Godeps/Godeps.json

Lines changed: 2 additions & 144 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,6 @@ version is the image's digest.
137137
first pull `image:tag` from the Docker registry (so as to use cached
138138
intermediate images when building). This will cause the resource to fail
139139
if it is set to `true` and the image does not exist yet.
140-
Note: Since docker 1.10 docker images [do not contain all necessary metadata to
141-
restore the build cache](https://github.com/docker/docker/issues/20316).
142-
Additional metadata needs to be saved and re-applied after a docker pull to have
143-
subsequent builds skip identical intermediate layers. This additional
144-
metadata is stored as a very small separate image (`image:${cache_tag}-buildcache`)
145-
in the repository of this resource.
146140

147141
* `cache_tag`: *Optional.* Default `tag`. The specific tag to pull before
148142
building when `cache` parameter is set. Instead of pulling the same tag

assets/out

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,10 @@ elif [ -n "$build" ]; then
115115
"$(cat "${load_base}/repository"):$(cat "${load_base}/tag")"
116116
fi
117117

118+
cache_from=""
118119
if [ "$cache" = "true" ]; then
119120
docker_pull "${repository}:${cache_tag}"
120-
docker create \
121-
--cidfile=/tmp/container.cid \
122-
"${repository}:${cache_tag}-buildcache" whatever && \
123-
docker cp $(cat /tmp/container.cid):/buildcache.tgz /tmp/buildcache.tgz && \
124-
docker load -i /tmp/buildcache.tgz
121+
cache_from="--cache-from ${repository}:${cache_tag}"
125122
fi
126123

127124
expanded_build_args=""
@@ -133,7 +130,7 @@ elif [ -n "$build" ]; then
133130
expanded_build_args=${expanded_build_args}" "$(jq -r 'with_entries(.key |= "--build-arg " + . )|with_entries(.key = .key + "=" +.value)|keys|join(" ")' <$build_args_file)
134131
fi
135132

136-
docker build -t "${repository}:${tag_name}" $expanded_build_args -f "$dockerfile" "$build"
133+
docker build -t "${repository}:${tag_name}" $expanded_build_args -f "$dockerfile" $cache_from "$build"
137134
elif [ -n "$load_file" ]; then
138135
if [ -n "$load_repository" ]; then
139136
docker load -i "$load_file"
@@ -181,12 +178,6 @@ if [ "$need_tag_as_latest" = "true" ] && [ "${tag_name}" != "latest" ] ; the
181178
echo "${repository}:${tag_name} tagged as latest"
182179
fi
183180

184-
if [ -n "$build" ] && [ "$cache" = "true" ]; then
185-
buildcache save -o buildcache.tgz "${repository}:${tag_name}"
186-
tar c buildcache.tgz | docker import - "${repository}:${cache_tag}-buildcache"
187-
docker push "${repository}:${cache_tag}-buildcache"
188-
fi
189-
190181
jq -n "{
191182
version: {
192183
digest: $(echo $digest | jq -R .)

ci/scripts/build

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ go build -o ./assets/print-metadata ./cmd/print-metadata/
2020

2121
curl -sSL -O "https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz"
2222
tar zxf "docker-${DOCKER_VERSION}.tgz"
23-
go build -o ./buildcache github.com/concourse/docker-image-resource/vendor/github.com/tonistiigi/buildcache/cmd/buildcache
24-
2523

2624
go build -o ./ecr-login github.com/concourse/docker-image-resource/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cmd
2725

scripts/deps

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@
33
godep save \
44
./... \
55
github.com/onsi/ginkgo/ginkgo \
6-
github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cmd \
7-
github.com/tonistiigi/buildcache/cmd/buildcache
6+
github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cmd

vendor/github.com/Microsoft/go-winio/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

vendor/github.com/Microsoft/go-winio/LICENSE

Lines changed: 0 additions & 22 deletions
This file was deleted.

vendor/github.com/Microsoft/go-winio/README.md

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)