Previously the `manifests` and `vendor` folder content has been build via `manifests/**` and `vendor/**` target definitions. This results in two issues: 1. The GNU Make recipe is executed for every single file in the folders. 2. Not all timestamps inside the `manifests` folder would be updated on every run, thereby needing to be rerun on all following target executions. Solution: 1. Define the target based on the folder, not individual files 2. Remove target folder before execution recipe to ensure all timestamps are updated.
64 lines
2.0 KiB
Makefile
64 lines
2.0 KiB
Makefile
JSONNET_FMT := jsonnet fmt -n 2 --max-blank-lines 2 --string-style s --comment-style s
|
|
|
|
JB_BINARY:=$(GOPATH)/bin/jb
|
|
EMBEDMD_BINARY:=$(GOPATH)/bin/embedmd
|
|
|
|
# edit 1
|
|
|
|
all: generate fmt test
|
|
|
|
../../hack/jsonnet-docker-image: ../../scripts/jsonnet/Dockerfile
|
|
# Create empty target file, for the sole purpose of recording when this target
|
|
# was last executed via the last-modification timestamp on the file. See
|
|
# https://www.gnu.org/software/make/manual/make.html#Empty-Targets
|
|
docker build -f - -t po-jsonnet . < ../../scripts/jsonnet/Dockerfile
|
|
touch $@
|
|
|
|
generate-in-docker: ../../hack/jsonnet-docker-image
|
|
@echo ">> Compiling assets and generating Kubernetes manifests"
|
|
docker run \
|
|
--rm \
|
|
-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
|
|
-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
|
|
--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
|
|
po-jsonnet make generate
|
|
|
|
generate: manifests **.md
|
|
|
|
**.md: $(EMBEDMD_BINARY) $(shell find examples) build.sh example.jsonnet
|
|
echo '>>> inside **.md'
|
|
$(EMBEDMD_BINARY) -w `find . -name "*.md" | grep -v vendor`
|
|
|
|
manifests: vendor example.jsonnet
|
|
rm -rf manifests
|
|
./build.sh
|
|
|
|
vendor: $(JB_BINARY) jsonnetfile.json
|
|
rm -rf vendor
|
|
$(JB_BINARY) install
|
|
|
|
fmt:
|
|
find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | \
|
|
xargs -n 1 -- $(JSONNET_FMT) -i
|
|
|
|
test: $(JB_BINARY)
|
|
$(JB_BINARY) install
|
|
./test.sh
|
|
|
|
test-in-docker: ../../hack/jsonnet-docker-image
|
|
@echo ">> Compiling assets and generating Kubernetes manifests"
|
|
docker run \
|
|
--rm \
|
|
-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
|
|
-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
|
|
--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
|
|
po-jsonnet make test
|
|
|
|
$(JB_BINARY):
|
|
go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
|
|
|
|
$(EMBEDMD_BINARY):
|
|
go get github.com/campoy/embedmd
|
|
|
|
.PHONY: generate generate-in-docker test test-in-docker fmt
|