Makefile with actual deps

This makes the makefile's build target have actual dependencies, so that
it only rebuilds any given adapter if that adapter's actual go files
have changed (yes, this is mostly redundant with Go 1.10, but it makes
working on read-only filesystems a bit nicer).
This commit is contained in:
Solly Ross 2018-06-27 15:55:19 -04:00
parent 6089fa8528
commit 1e5cd68533

View file

@ -27,11 +27,13 @@ ifeq ($(ARCH),s390x)
GOIMAGE=s390x/golang:1.8 GOIMAGE=s390x/golang:1.8
endif endif
.PHONY: all build docker-build push-% push test verify-gofmt gofmt verify .PHONY: all docker-build push-% push test verify-gofmt gofmt verify build-local-image
all: build all: $(OUT_DIR)/$(ARCH)/adapter
build: vendor
CGO_ENABLED=0 GOARCH=$(ARCH) go build -tags netgo -o $(OUT_DIR)/$(ARCH)/adapter github.com/directxman12/k8s-prometheus-adapter/cmd/adapter src_deps=$(shell find pkg cmd -type f -name "*.go")
$(OUT_DIR)/%/adapter: vendor $(src_deps)
CGO_ENABLED=0 GOARCH=$* go build -tags netgo -o $(OUT_DIR)/$(ARCH)/adapter github.com/directxman12/k8s-prometheus-adapter/cmd/adapter
docker-build: vendor docker-build: vendor
cp deploy/Dockerfile $(TEMP_DIR) cp deploy/Dockerfile $(TEMP_DIR)
@ -43,6 +45,13 @@ docker-build: vendor
docker build -t $(REGISTRY)/$(IMAGE)-$(ARCH):$(VERSION) $(TEMP_DIR) docker build -t $(REGISTRY)/$(IMAGE)-$(ARCH):$(VERSION) $(TEMP_DIR)
rm -rf $(TEMP_DIR) rm -rf $(TEMP_DIR)
build-local-image: $(OUT_DIR)/$(ARCH)/adapter
cp deploy/Dockerfile $(TEMP_DIR)
cp $(OUT_DIR)/$(ARCH)/adapter $(TEMP_DIR)
cd $(TEMP_DIR) && sed -i "s|BASEIMAGE|scratch|g" Dockerfile
docker build -t $(REGISTRY)/$(IMAGE)-$(ARCH):$(VERSION) $(TEMP_DIR)
rm -rf $(TEMP_DIR)
push-%: push-%:
$(MAKE) ARCH=$* docker-build $(MAKE) ARCH=$* docker-build
docker push $(REGISTRY)/$(IMAGE)-$*:$(VERSION) docker push $(REGISTRY)/$(IMAGE)-$*:$(VERSION)