Files
linuxkit/pkg/package.mk
Ian Campbell b6728a85e9 pkg: Simplify dirty handling
By setting `DIRTY` to either "-dirty" or "" directly we can simply use
`$(HASH)$(DIRTY)` and avoid make adding a space as it does with `+=`.

For the push check we now block pushing if `$(DIRTY)` is non-empty.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-07-03 10:27:31 +01:00

37 lines
950 B
Makefile

.PHONY: image tag show-tag
default: push
ORG?=linuxkit
HASH?=$(shell git ls-tree HEAD -- ../$(notdir $(CURDIR)) | awk '{print $$3}')
BASE_DEPS=Dockerfile Makefile
DIRTY=$(shell git diff-index --quiet HEAD -- ) || echo "-dirty")
TAG=$(HASH)$(DIRTY)
# Get a release tag, if present
RELEASE=$(shell git tag -l --points-at HEAD)
ifdef NETWORK
NET_OPT=
else
NET_OPT=--network=none
endif
show-tag:
@echo $(ORG)/$(IMAGE):$(TAG)
tag: $(BASE_DEPS) $(DEPS)
DOCKER_CONTENT_TRUST=1 docker pull $(ORG)/$(IMAGE):$(TAG) || \
docker build $(NET_OPT) -t $(ORG)/$(IMAGE):$(TAG) .
push: tag
ifneq ($(DIRTY),)
$(error Your repository is not clean. Will not push package image.)
endif
DOCKER_CONTENT_TRUST=1 docker pull $(ORG)/$(IMAGE):$(TAG) || \
DOCKER_CONTENT_TRUST=1 docker push $(ORG)/$(IMAGE):$(TAG)
ifneq ($(RELEASE),)
docker tag $(ORG)/$(IMAGE):$(TAG) $(ORG)/$(IMAGE):$(RELEASE)
DOCKER_CONTENT_TRUST=1 docker push $(ORG)/$(IMAGE):$(RELEASE)
endif