mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-04-11 06:09:47 +00:00
Go code is really fast to compile so we do not really need to use the cache features of `docker build`. So make a compile container instead. This can also output a build context and Dockerfile if you want to do a build. For reference, an uncached `docker build` of our Go code takes about 7s, a cached one 1.2s, and this takes 1.7s, so the best case is a little worse, but we save a lot of images, and the worst case is better. This is mainly designed to make the nested builds for containerd containers simpler too. Will add a variant for the C code as well. Also add `-static` to the flags so we always make static executables, which was omitted previously. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
30 lines
842 B
Makefile
30 lines
842 B
Makefile
.PHONY: tag push
|
|
|
|
BASE=golang:1.7-alpine
|
|
IMAGE=go-compile
|
|
|
|
default: push
|
|
|
|
hash: Dockerfile lint.sh compile.sh
|
|
DOCKER_CONTENT_TRUST=1 docker pull $(BASE)
|
|
tar cf - $^ | docker build --no-cache -t $(IMAGE):build -
|
|
docker run --rm --entrypoint=/bin/sh $(IMAGE):build -c 'cat /usr/local/go/bin/go /lib/apk/db/installed /usr/bin/lint.sh /go/bin/golint /usr/bin/compile.sh | sha1sum' | sed 's/ .*//' > hash
|
|
|
|
push: hash
|
|
docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
|
|
(docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash) && \
|
|
docker push mobylinux/$(IMAGE):$(shell cat hash))
|
|
docker rmi $(IMAGE):build
|
|
rm -f hash
|
|
|
|
tag: hash
|
|
docker pull mobylinux/$(IMAGE):$(shell cat hash) || \
|
|
docker tag $(IMAGE):build mobylinux/$(IMAGE):$(shell cat hash)
|
|
docker rmi $(IMAGE):build
|
|
rm -f hash
|
|
|
|
clean:
|
|
rm -f hash
|
|
|
|
.DELETE_ON_ERROR:
|