Use build container id rather than tagging builds

This means that multiple builds will not conflict, so we can
remove the lock from the CI. Also quieter when no errors.

Some still left to do, only done the ones used in build and CI
initially. Some of the others will be cleaned up anyway later.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
Justin Cormack 2016-09-29 20:18:38 +01:00
parent 6fb163c2a5
commit fa19d3259b
11 changed files with 42 additions and 30 deletions

View File

@ -22,9 +22,10 @@ qemu-iso: Dockerfile.qemuiso alpine/mobylinux-bios.iso
test: Dockerfile.test alpine/initrd.img alpine/kernel/x86_64/vmlinuz64 test: Dockerfile.test alpine/initrd.img alpine/kernel/x86_64/vmlinuz64
$(MAKE) -C alpine $(MAKE) -C alpine
tar cf - $^ | docker build -f Dockerfile.test -t mobytest:build - BUILD=$$( tar cf - $^ | docker build -f Dockerfile.test -q - ) && [ -n "$$BUILD" ] && \
touch test.log touch test.log && \
docker run --rm mobytest:build 2>&1 | tee -a test.log docker run --rm $$BUILD 2>&1 | tee -a test.log && \
docker rmi --no-prune $$BUILD
@cat test.log | grep -q 'Moby test suite PASSED' @cat test.log | grep -q 'Moby test suite PASSED'
TAG=$(shell git rev-parse HEAD) TAG=$(shell git rev-parse HEAD)

View File

@ -5,7 +5,7 @@ ETCFILES=$(shell find etc)
initrd.img: Dockerfile mkinitrd.sh init $(ETCFILES) initrd.img: Dockerfile mkinitrd.sh init $(ETCFILES)
$(MAKE) -C kernel $(MAKE) -C kernel
$(MAKE) -j -C packages $(MAKE) -j -C packages
tar cf - \ BUILD=$$( tar cf - \
Dockerfile etc usr init mkinitrd.sh \ Dockerfile etc usr init mkinitrd.sh \
-C kernel usr etc sbin lib -C .. \ -C kernel usr etc sbin lib -C .. \
-C packages/proxy usr sbin etc -C ../.. \ -C packages/proxy usr sbin etc -C ../.. \
@ -30,13 +30,15 @@ initrd.img: Dockerfile mkinitrd.sh init $(ETCFILES)
-C packages/aws etc -C ../.. \ -C packages/aws etc -C ../.. \
-C packages/azure etc -C ../.. \ -C packages/azure etc -C ../.. \
| \ | \
docker build -t moby-initrd:build - docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --net=none --log-driver=none --rm moby-initrd:build > $@ docker run --net=none --log-driver=none --rm $$BUILD > $@ && \
docker rmi --no-prune $$BUILD
mobylinux-efi.iso: Dockerfile.efi initrd.img kernel/x86_64/vmlinuz64 mobylinux-efi.iso: Dockerfile.efi initrd.img kernel/x86_64/vmlinuz64
tar cf - $^ | docker build -t moby-efi:build -f Dockerfile.efi - BUILD=$$( tar cf - $^ | docker build -q -f Dockerfile.efi - ) && [ -n "$$BUILD" ] && \
docker run --net=none --log-driver=none --rm --cap-add sys_admin moby-efi:build cat /tmp/efi/mobylinux.efi > mobylinux.efi docker run --net=none --log-driver=none --rm --cap-add sys_admin $$BUILD cat /tmp/efi/mobylinux.efi > mobylinux.efi && \
docker run --net=none --log-driver=none --rm --cap-add sys_admin moby-efi:build cat /tmp/efi/mobylinux-efi.iso > $@ docker run --net=none --log-driver=none --rm --cap-add sys_admin $$BUILD cat /tmp/efi/mobylinux-efi.iso > $@ && \
docker rmi --no-prune $$BUILD
mobylinux-bios.iso: initrd.img kernel/x86_64/vmlinuz64 mobylinux-bios.iso: initrd.img kernel/x86_64/vmlinuz64
tar cf - initrd.img -C kernel/x86_64 vmlinuz64 | \ tar cf - initrd.img -C kernel/x86_64 vmlinuz64 | \

View File

@ -4,11 +4,12 @@ all: x86_64/vmlinuz64
x86_64/vmlinuz64: Dockerfile kernel_config x86_64/vmlinuz64: Dockerfile kernel_config
mkdir -p x86_64 etc mkdir -p x86_64 etc
docker build --build-arg DEBUG=$(DEBUG) -t mobykernel:build . BUILD=$$( docker build --build-arg DEBUG=$(DEBUG) -q . ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none --log-driver=none mobykernel:build cat /kernel-modules.tar | tar xf - docker run --rm --net=none --log-driver=none $$BUILD cat /kernel-modules.tar | tar xf - && \
docker run --rm --net=none --log-driver=none mobykernel:build cat /aufs-utils.tar | tar xf - docker run --rm --net=none --log-driver=none $$BUILD cat /aufs-utils.tar | tar xf - && \
docker run --rm --net=none --log-driver=none mobykernel:build cat /kernel-source-info > etc/kernel-source-info docker run --rm --net=none --log-driver=none $$BUILD cat /kernel-source-info > etc/kernel-source-info && \
docker run --rm --net=none --log-driver=none mobykernel:build cat /linux/arch/x86_64/boot/bzImage > $@ docker run --rm --net=none --log-driver=none $$BUILD cat /linux/arch/x86_64/boot/bzImage > $@ && \
docker rmi --no-prune $$BUILD
cp -a patches etc/kernel-patches cp -a patches etc/kernel-patches
clean: clean:

View File

@ -2,8 +2,9 @@ DEPS=Dockerfile $(wildcard *.c *.h)
9pmount-vsock: $(DEPS) 9pmount-vsock: $(DEPS)
mkdir -p sbin mkdir -p sbin
tar cf - $(DEPS) | docker build -t 9pmount-vsock:build - BUILD=$$( tar cf - $(DEPS) | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none 9pmount-vsock:build | tar xf - -C sbin docker run --rm --net=none $$BUILD | tar xf - -C sbin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf sbin rm -rf sbin

View File

@ -3,8 +3,9 @@ all: usr/bin/diagnostics-server
DEPS=Dockerfile $(wildcard *.go) DEPS=Dockerfile $(wildcard *.go)
usr/bin/diagnostics-server: $(DEPS) ../vendor/manifest usr/bin/diagnostics-server: $(DEPS) ../vendor/manifest
tar cf - $(DEPS) -C .. vendor | docker build -t diagnostics-server:build - BUILD=$$( tar cf - $(DEPS) -C .. vendor | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none diagnostics-server:build | tar xf - -C usr/bin docker run --rm --net=none $$BUILD | tar xf - -C usr/bin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -f usr/bin/diagnostics-server rm -f usr/bin/diagnostics-server

View File

@ -2,8 +2,9 @@ all: usr/local/sbin/iptables
usr/local/sbin/iptables: Dockerfile main.ml usr/local/sbin/iptables: Dockerfile main.ml
mkdir -p usr/local/sbin mkdir -p usr/local/sbin
docker build -t iptables:build . BUILD=$$( docker build -q . ) && [ -n "$$BUILD" ] && \
docker run --rm iptables:build | tar xf - -C usr/local/sbin docker run --rm $$BUILD | tar xf - -C usr/local/sbin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf usr rm -rf usr

View File

@ -2,8 +2,9 @@ DEPS=Dockerfile $(wildcard *.c *.h)
usr/bin/nc-vsock: $(DEPS) usr/bin/nc-vsock: $(DEPS)
mkdir -p usr/bin mkdir -p usr/bin
tar cf - $(DEPS) | docker build -t nc-vsock:build - BUILD=$$( tar cf - $(DEPS) | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none nc-vsock:build | tar xf - -C usr/bin docker run --rm --net=none $$BUILD | tar xf - -C usr/bin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf usr rm -rf usr

View File

@ -3,8 +3,9 @@ all: usr/bin/slirp-proxy sbin/proxy-vsockd
DEPS=Dockerfile $(wildcard *.go libproxy/*.go) DEPS=Dockerfile $(wildcard *.go libproxy/*.go)
proxy: $(DEPS) ../vendor/manifest proxy: $(DEPS) ../vendor/manifest
tar cf - $(DEPS) -C .. vendor | docker build -t proxy:build - BUILD=$$( tar cf - $(DEPS) -C .. vendor | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none proxy:build | tar xf - docker run --rm --net=none $$BUILD | tar xf - && \
docker rmi --no-prune $$BUILD
usr/bin/slirp-proxy: proxy usr/bin/slirp-proxy: proxy
mkdir -p usr/bin mkdir -p usr/bin

View File

@ -2,8 +2,9 @@ DEPS=Dockerfile $(wildcard *.c *.h)
sbin/tap-vsockd: $(DEPS) sbin/tap-vsockd: $(DEPS)
mkdir -p sbin mkdir -p sbin
tar cf - $(DEPS) | docker build -t tap-vsockd:build - BUILD=$$( tar cf - $(DEPS) | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none tap-vsockd:build | tar xf - -C sbin docker run --rm --net=none $$BUILD | tar xf - -C sbin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf sbin rm -rf sbin

View File

@ -2,8 +2,9 @@ DEPS=Dockerfile $(wildcard *.c *.h)
sbin/transfused: $(DEPS) sbin/transfused: $(DEPS)
mkdir -p sbin mkdir -p sbin
tar cf - $(DEPS) | docker build -t transfused:build - BUILD=$$( tar cf - $(DEPS) | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none transfused:build | tar xf - -C sbin docker run --rm --net=none $$BUILD | tar xf - -C sbin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf sbin rm -rf sbin

View File

@ -4,8 +4,9 @@ DEPS=Dockerfile $(wildcard *.go)
vsudd: $(DEPS) ../vendor/manifest vsudd: $(DEPS) ../vendor/manifest
mkdir -p sbin mkdir -p sbin
tar cf - $(DEPS) -C .. vendor | docker build -t vsudd:build - BUILD=$$( tar cf - $(DEPS) -C .. vendor | docker build -q - ) && [ -n "$$BUILD" ] && \
docker run --rm --net=none vsudd:build | tar xf - -C sbin docker run --rm --net=none $$BUILD | tar xf - -C sbin && \
docker rmi --no-prune $$BUILD
clean: clean:
rm -rf sbin rm -rf sbin