diff --git a/Makefile b/Makefile index 0c4cc0794662bbf449473c4b103e3243e4ae0c1b..f47734f0d78483da86fbbbf0c24fdac5fc4babdd 100644 --- a/Makefile +++ b/Makefile @@ -1,66 +1,53 @@ SHELL=/bin/bash -o pipefail -JSONNET_ARGS := -n 2 --max-blank-lines 2 --string-style s --comment-style s -ifneq (,$(shell which jsonnetfmt)) - JSONNET_FMT_CMD := jsonnetfmt -else - JSONNET_FMT_CMD := jsonnet - JSONNET_FMT_ARGS := fmt $(JSONNET_ARGS) -endif -JSONNET_FMT := $(JSONNET_FMT_CMD) $(JSONNET_FMT_ARGS) +BIN_DIR?=$(shell pwd)/tmp/bin -FIRST_GOPATH:=$(firstword $(subst :, ,$(shell go env GOPATH))) -JB_BINARY:=$(FIRST_GOPATH)/bin/jb -EMBEDMD_BINARY := embedmd -CONTAINER_CMD:=docker run --rm \ - -e http_proxy -e https_proxy -e no_proxy \ - -u="$(shell id -u):$(shell id -g)" \ - -v "$(shell go env GOCACHE):/.cache/go-build" \ - -v "$(PWD):/go/src/github.com/coreos/kube-prometheus:Z" \ - -w "/go/src/github.com/coreos/kube-prometheus" \ - quay.io/coreos/jsonnet-ci +EMBEDMD_BIN=$(BIN_DIR)/embedmd +JB_BIN=$(BIN_DIR)/jb +GOJSONTOYAML_BIN=$(BIN_DIR)/gojsontoyaml +JSONNET_BIN=$(BIN_DIR)/jsonnet +JSONNETFMT_BIN=$(BIN_DIR)/jsonnetfmt +TOOLING=$(EMBEDMD_BIN) $(JB_BIN) $(GOJSONTOYAML_BIN) $(JSONNET_BIN) $(JSONNETFMT_BIN) -all: generate fmt test +JSONNETFMT_ARGS=-n 2 --max-blank-lines 2 --string-style s --comment-style s -.PHONY: generate-in-docker -generate-in-docker: - @echo ">> Compiling assets and generating Kubernetes manifests" - $(CONTAINER_CMD) make $(MFLAGS) generate +all: generate fmt test .PHONY: clean clean: # Remove all files and directories ignored by git. git clean -Xfd . +.PHONY: generate generate: manifests **.md -**.md: $(shell find examples) build.sh example.jsonnet - $(EMBEDMD_BINARY) -w `find . -name "*.md" | grep -v vendor` +**.md: $(EMBEDMD_BIN) $(shell find examples) build.sh example.jsonnet + $(EMBEDMD_BIN) -w `find . -name "*.md" | grep -v vendor` -manifests: examples/kustomize.jsonnet vendor build.sh - rm -rf manifests +manifests: examples/kustomize.jsonnet $(GOJSONTOYAML_BIN) vendor build.sh ./build.sh $< -vendor: $(JB_BINARY) jsonnetfile.json jsonnetfile.lock.json +vendor: $(JB_BIN) jsonnetfile.json jsonnetfile.lock.json rm -rf vendor - $(JB_BINARY) install + $(JB_BIN) install -fmt: +.PHONY: fmt +fmt: $(JSONNETFMT_BIN) find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | \ - xargs -n 1 -- $(JSONNET_FMT) -i + xargs -n 1 -- $(JSONNETFMT_BIN) $(JSONNETFMT_ARGS) -i -test: $(JB_BINARY) - $(JB_BINARY) install +.PHONY: test +test: $(JB_BIN) + $(JB_BIN) install ./test.sh +.PHONY: test-e2e test-e2e: go test -timeout 55m -v ./tests/e2e -count=1 -test-in-docker: - @echo ">> Compiling assets and generating Kubernetes manifests" - $(CONTAINER_CMD) make $(MFLAGS) test - -.PHONY: generate generate-in-docker test test-in-docker fmt +$(BIN_DIR): + mkdir -p $(BIN_DIR) -$(JB_BINARY): - go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@v0.3.1 +$(TOOLING): $(BIN_DIR) + @echo Installing tools from scripts/tools.go + @cd scripts && cat tools.go | grep _ | awk -F'"' '{print $$2}' | xargs -tI % go build -o $(BIN_DIR) %