@@ -11,7 +11,6 @@ OUTPUT_DIR ?= $(BASE_DIR)/_output
1111COMMANDS := $(notdir $(wildcard cmd/* ) )
1212
1313# Commands and images that require custom build proccess
14- CUSTOM_BUILD_BINARIES :=
1514CUSTOM_BUILD_IMAGES :=
1615
1716BIN_OUTPUT_DIR ?= $(OUTPUT_DIR )
@@ -51,17 +50,12 @@ WITH_DEPENDENCIES ?=
5150LDFLAGS = -w -s
5251LDFLAGS_STATIC = $(LDFLAGS ) -extldflags=-static
5352
53+ TAG_REGEX := ^v([0-9]{1,}\.){2}[0-9]{1,}$
54+
5455HAS_GOTESTSUM := $(shell command -v gotestsum;)
5556HAS_GOLANGCI_LINT := $(shell command -v golangci-lint;)
5657
57- SED := sed -i
58-
59- OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
60- ifeq ($(OS ) ,$(filter $(OS ) ,Darwin FreeBSD NetBSD) )
61- SED += ''
62- endif
63-
64- .PHONY : help all build release vm-images test lint fmt fmt-test images clean install-gotestsum install-golangci-lint deploy undeploy
58+ .PHONY : help all build release test lint fmt fmt-test images clean install-gotestsum install-golangci-lint deploy undeploy
6559
6660.DEFAULT_GOAL := build
6761
@@ -83,81 +77,56 @@ help: ## Display this help
8377
8478build : $(COMMANDS ) # # Build all artifacts
8579
86- $(filter-out $( CUSTOM_BUILD_BINARIES ) , $( COMMANDS ) ) : # # Build artifact
80+ $(COMMANDS ) : # # Build artifact
8781 $(GO ) build -ldflags " $( LDFLAGS_STATIC) " -o $(BIN_OUTPUT_DIR ) /$@ ./cmd/$@
8882
8983deploy : # # Deploy TriggerMesh stack to default Kubernetes cluster
9084 $(KO ) resolve -f $(BASE_DIR ) /config > $(BASE_DIR ) /triggermesh-core-$(IMAGE_TAG ) .yaml
91- @for component in $(CUSTOM_BUILD_IMAGES ) ; do \
92- $(MAKE ) -C ./cmd/$$ component build CONTEXT=$(BASE_DIR ) IMAGE_TAG=$(KO_DOCKER_REPO ) /$$ component-$(IMAGE_TAG ) && \
93- $(MAKE ) -C ./cmd/$$ component push IMAGE_TAG=$(KO_DOCKER_REPO ) /$$ component-$(IMAGE_TAG ) && \
94- $(SED ) ' s|value: .*' $$ component' .*|value: $(KO_DOCKER_REPO)/' $$ component' -$(IMAGE_TAG)|g' $(BASE_DIR ) /triggermesh-core-$(IMAGE_TAG ) .yaml || exit 1; \
95- done
96-
9785 $(KO ) apply -f $(BASE_DIR ) /triggermesh-core-$(IMAGE_TAG ) .yaml
9886 @rm $(BASE_DIR ) /triggermesh-core-$(IMAGE_TAG ) .yaml
9987
10088undeploy : # # Remove TriggerMesh stack from default Kubernetes cluster
10189 $(KO ) delete -f $(BASE_DIR ) /config
10290
103- vm-images :
104- @$(MAKE ) -C packer/
105-
10691release : # # Publish container images and generate release manifests
10792 @mkdir -p $(DIST_DIR )
10893 $(KO ) resolve -f config/ -l ' triggermesh.io/crd-install' > $(DIST_DIR ) /triggermesh-core-crds.yaml
10994 @cp config/namespace/100-namespace.yaml $(DIST_DIR ) /triggermesh-core.yaml
95+ ifeq ($(shell echo ${IMAGE_TAG} | egrep "${TAG_REGEX}") ,${IMAGE_TAG})
11096 $(KO) resolve $(KOFLAGS) -B -t latest -f config/ -l '!triggermesh.io/crd-install' > /dev/null
97+ endif
11198 $(KO) resolve $(KOFLAGS) -B -t $(IMAGE_TAG) --tag-only -f config/ -l '!triggermesh.io/crd-install' >> $(DIST_DIR)/triggermesh-core.yaml
11299
113- @for component in $(CUSTOM_BUILD_IMAGES); do \
114- $(MAKE) -C ./cmd/$$component build CONTEXT=$(BASE_DIR) IMAGE_TAG=$(KO_DOCKER_REPO)/$$component:$(IMAGE_TAG) && \
115- $(MAKE) -C ./cmd/$$component tag IMAGE_TAG=$(KO_DOCKER_REPO)/$$component:$(IMAGE_TAG) TAGS=$(KO_DOCKER_REPO)/$$component:latest && \
116- $(MAKE) -C ./cmd/$$component push IMAGE_TAG=$(KO_DOCKER_REPO)/$$component && \
117- $(SED) 's/'$$component':.*/'$$component':$(IMAGE_TAG)/g' $(DIST_DIR)/triggermesh-core.yaml || exit 1; \
118- done
119-
120100gen-apidocs : # # Generate API docs
121101 GOPATH=" " OUTPUT_DIR=$(DOCS_OUTPUT_DIR ) ./hack/gen-api-reference-docs.sh
122102
123-
124103GOPKGS_LIST ?= $(filter-out $(GOPKGS_SKIP_TESTS ) , $(shell go list $(GOPKGS ) ) )
125104ifdef WITH_DEPENDENCIES
126105 GOPKGS_LIST += $(GOPKGS_TESTS_WITH_DEPENDENCIES)
127106endif
107+
128108test : install-gotestsum # # Run unit tests
129109 @mkdir -p $(TEST_OUTPUT_DIR )
130-
131110 $(GOTEST ) -p=1 -race -cover -coverprofile=$(TEST_OUTPUT_DIR ) /$(KREPO ) -c.out $(GOPKGS_LIST )
132111
133- @for component in $(CUSTOM_BUILD_IMAGES); do \
134- $(MAKE) -C ./cmd/$$component test || exit 1; \
135- done
136-
137112cover : test # # Generate code coverage
138113 @mkdir -p $(COVER_OUTPUT_DIR )
139114 $(GOTOOL ) cover -html=$(TEST_OUTPUT_DIR ) /$(KREPO ) -c.out -o $(COVER_OUTPUT_DIR ) /$(KREPO ) -coverage.html
140115
141116lint : install-golangci-lint # # Lint source files
142- $(GOLINT ) $(GOPKGS ) ./test/...
117+ $(GOLINT ) $(GOPKGS )
143118
144119fmt : # # Format source files
145120 $(GOFMT ) -s -w $(shell $(GO ) list -f '{{$$d := .Dir}}{{range .GoFiles}}{{$$d}}/{{.}} {{end}} {{$$d := .Dir}}{{range .TestGoFiles}}{{$$d}}/{{.}} {{end}}' $(GOPKGS ) )
146121
147122fmt-test : # # Check source formatting
148123 @test -z $(shell $(GOFMT ) -l $(shell $(GO ) list -f '{{$$d := .Dir}}{{range .GoFiles}}{{$$d}}/{{.}} {{end}} {{$$d := .Dir}}{{range .TestGoFiles}}{{$$d}}/{{.}} {{end}}' $(GOPKGS ) ) )
149124
150- KO_PUBLISHABLE = $(filter-out $(CUSTOM_BUILD_IMAGES ) , $(COMMANDS ) )
151- KO_IMAGES = $(foreach cmd,$(KO_PUBLISHABLE ) ,$(cmd ) .image)
152- CUSTOM_IMAGES = $(foreach cmd,$(CUSTOM_BUILD_IMAGES ) ,$(cmd ) .image)
153-
154- images : $(KO_IMAGES ) $(CUSTOM_IMAGES ) # # Build container images
125+ KO_IMAGES = $(foreach cmd,$(COMMANDS ) ,$(cmd ) .image)
126+ images : $(KO_IMAGES ) # # Build container images
155127$(KO_IMAGES ) : % .image:
156128 $(KO ) publish --push=false -B --tag-only -t $(IMAGE_TAG ) ./cmd/$*
157129
158- $(CUSTOM_IMAGES ) : % .image:
159- @$(MAKE ) -C ./cmd/$* image CONTEXT=$(BASE_DIR ) IMAGE_TAG=$(KO_DOCKER_REPO ) /$* :$(IMAGE_TAG )
160-
161130clean : # # Clean build artifacts
162131 @for bin in $(COMMANDS ) ; do \
163132 $(RM ) -v $(BIN_OUTPUT_DIR ) /$$ bin; \
0 commit comments