dockerfile: Keep track of buildtime metadata

This commit build each images with the following arguments:

* IMAGE: Name of the image (e.g dockcross/base, dockcross/manylinux-x64, ...)
* VCS_REF: dockcross/dockcross commit from which this image is built
* VCS_URL: this repository obtained reading remote.origin.url
* BUILD_DATE: Date and time when the build was initiated

Then, within the Dockerfile, the metadata are associated with the image
using the "LABEL" instruction.
See https://docs.docker.com/engine/reference/builder/#/label

The corresponding labels can be found here:
http://label-schema.org/rc1/#build-time-labels

See #28
This commit is contained in:
Jean-Christophe Fillion-Robin
2016-10-30 23:57:04 -04:00
parent e378a9b336
commit cfcc7d6700
15 changed files with 183 additions and 5 deletions

View File

@ -41,7 +41,12 @@ test: base.test $(addsuffix .test,$(IMAGES))
#
browser-asmjs: base
cp -r test browser-asmjs/
$(DOCKER) build -t $(ORG)/browser-asmjs browser-asmjs
$(DOCKER) build -t $(ORG)/browser-asmjs \
--build-arg IMAGE=$(ORG)/browser-asmjs \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
browser-asmjs
rm -rf browser-asmjs/test
browser-asmjs.test: browser-asmjs
@ -55,7 +60,12 @@ manylinux-x64/Dockerfile: manylinux-x64/Dockerfile.in common.docker
sed '/common.docker/ r common.docker' manylinux-x64/Dockerfile.in > manylinux-x64/Dockerfile
manylinux-x64: manylinux-x64/Dockerfile
$(DOCKER) build -t $(ORG)/manylinux-x64 -f manylinux-x64/Dockerfile .
$(DOCKER) build -t $(ORG)/manylinux-x64 \
--build-arg IMAGE=$(ORG)/manylinux-x64 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux-x64/Dockerfile .
manylinux-x64.test: manylinux-x64
$(DOCKER) run --rm dockcross/manylinux-x64 > $(BIN)/dockcross-manylinux-x64 && chmod +x $(BIN)/dockcross-manylinux-x64
@ -68,7 +78,12 @@ manylinux-x86/Dockerfile: manylinux-x86/Dockerfile.in common.docker
sed '/common.docker/ r common.docker' manylinux-x86/Dockerfile.in > manylinux-x86/Dockerfile
manylinux-x86: manylinux-x86/Dockerfile
$(DOCKER) build -t $(ORG)/manylinux-x86 -f manylinux-x86/Dockerfile .
$(DOCKER) build -t $(ORG)/manylinux-x86 \
--build-arg IMAGE=$(ORG)/manylinux-x86 \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux-x86/Dockerfile .
manylinux-x86.test: manylinux-x86
$(DOCKER) run --rm dockcross/manylinux-x86 > $(BIN)/dockcross-manylinux-x86 && chmod +x $(BIN)/dockcross-manylinux-x86
@ -81,7 +96,12 @@ Dockerfile: Dockerfile.in common.docker
sed '/common.docker/ r common.docker' Dockerfile.in > Dockerfile
base: Dockerfile
$(DOCKER) build -t $(ORG)/base .
$(DOCKER) build -t $(ORG)/base \
--build-arg IMAGE=$(ORG)/base \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
.
base.test: base
$(DOCKER) run --rm dockcross/base > $(BIN)/dockcross-base && chmod +x $(BIN)/dockcross-base
@ -98,7 +118,12 @@ $(VERBOSE).SILENT: display_images
# build implicit rule
#
$(STANDARD_IMAGES): base
$(DOCKER) build -t $(ORG)/$@ $@
$(DOCKER) build -t $(ORG)/$@ \
--build-arg IMAGE=$(ORG)/$@ \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
$@
#
# testing implicit rule