From 0bc9e30aa615bd5abdd1946a6833475edeb52a2c Mon Sep 17 00:00:00 2001 From: Timothy Messier Date: Wed, 1 Dec 2021 08:49:15 -0500 Subject: [PATCH] chore(makefile): Mark all phony targets as PHONY Some phony targets where not included in the single .PHONY line, this switches to marking targets as PHONY just before the target is defined, which makes it easier to ensure the targets are correctly marked as phony. --- Makefile | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0d11db6fb2..01f8e04190 100644 --- a/Makefile +++ b/Makefile @@ -12,24 +12,30 @@ CGO_ENABLED?=0 export GEN_BASEPATH := $(shell pwd) +.PHONY: api api: $(MAKE) --environment-overrides -C internal/api/genapi api +.PHONY: cli cli: $(MAKE) --environment-overrides -C internal/cmd/gencli cli +.PHONY: tools tools: go generate -tags tools tools/tools.go +.PHONY: cleangen cleangen: @rm -f ${GENERATED_CODE} +.PHONY: dev dev: BUILD_TAGS+=dev dev: BUILD_TAGS+=ui dev: build-ui-ifne @echo "==> Building Boundary with dev and UI features enabled" @CGO_ENABLED=$(CGO_ENABLED) BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/build.sh'" +.PHONY: fmt fmt: gofumpt -w $$(find . -name '*.go' | grep -v pb.go | grep -v pb.gw.go) @@ -43,6 +49,7 @@ $(UI_TARGETS): export UI_DEFAULT_BRANCH := main $(UI_TARGETS): export UI_CURRENT_COMMIT := $(shell head -n1 < "$(UI_VERSION_FILE)" | cut -d' ' -f1) $(UI_TARGETS): export UI_COMMITISH ?= +.PHONY: update-ui-version update-ui-version: @if [ -z "$(UI_COMMITISH)" ]; then \ echo "==> Setting UI version to latest commit on branch '$(UI_DEFAULT_BRANCH)'"; \ @@ -52,6 +59,7 @@ update-ui-version: fi; \ ./scripts/uiclone.sh && ./scripts/uiupdate.sh +.PHONY: build-ui build-ui: @if [ -z "$(UI_COMMITISH)" ]; then \ echo "==> Building default UI version from $(UI_VERSION_FILE): $(UI_CURRENT_COMMIT)"; \ @@ -61,6 +69,7 @@ build-ui: fi; \ ./scripts/uiclone.sh && ./scripts/uigen.sh +.PHONY: build-ui-ifne build-ui-ifne: ifeq (,$(wildcard internal/ui/.tmp/boundary-ui)) @echo "==> No UI assets found, building..." @@ -69,15 +78,19 @@ else @echo "==> UI assets found, use build-ui target to update" endif +.PHONY: perms-table perms-table: @go run internal/website/permstable/permstable.go +.PHONY: gen gen: cleangen proto api cli perms-table fmt ### oplog requires protoc-gen-go v1.20.0 or later # GO111MODULE=on go get -u github.com/golang/protobuf/protoc-gen-go@v1.40 +.PHONY: proto proto: protolint protobuild +.PHONY: protobuild protobuild: # To add a new directory containing a proto pass the proto's root path in # through the --proto_path flag. @@ -150,37 +163,47 @@ protobuild: @rm -R ${TMP_DIR} +.PHONY: protolint protolint: @buf check lint @buf check breaking --against 'https://github.com/hashicorp/boundary.git#branch=stable-website' +.PHONY: website # must have nodejs and npm installed website: website-install website-start +.PHONY: website-install website-install: @npm install --prefix website/ +.PHONY: website-start website-start: @npm start --prefix website/ +.PHONY: test-database-up test-database-up: make -C testing/dbtest/docker database-up +.PHONY: test-database-down test-database-down: make -C testing/dbtest/docker clean +.PHONY: test-ci test-ci: install-go test-ci: export CI_BUILD=1 test-ci: CGO_ENABLED=$(CGO_ENABLED) BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/build.sh'" ~/.go/bin/go test ./... -v $(TESTARGS) -timeout 120m +.PHONY: test-sql test-sql: $(MAKE) -C internal/db/sqltest/ test +.PHONY: test test: go test ./... -timeout 30m +.PHONY: install-go install-go: ./ci/goinstall.sh @@ -192,8 +215,10 @@ IMAGE_TAG=$(REGISTRY_NAME)/$(IMAGE_NAME):$(VERSION) IMAGE_TAG_DEV=$(REGISTRY_NAME)/$(IMAGE_NAME):latest-$(shell git rev-parse --short HEAD) DOCKER_DIR=./docker +.PHONY: docker docker: docker-build docker-publish +.PHONY: docker-build # builds from releases.hashicorp.com official binary docker-build: docker build -t $(IMAGE_TAG) \ @@ -201,6 +226,7 @@ docker-build: -f $(DOCKER_DIR)/Release.dockerfile docker/ docker tag $(IMAGE_TAG) hashicorp/boundary:latest +.PHONY: docker-multiarch-build # builds multiarch from releases.hashicorp.com official binary docker-multiarch-build: docker buildx build \ @@ -211,6 +237,7 @@ docker-multiarch-build: --platform linux/amd64,linux/arm64 \ --file $(DOCKER_DIR)/Release.dockerfile docker/ +.PHONY: docker-build-dev # builds from locally generated binary in bin/ docker-build-dev: export XC_OSARCH=linux/amd64 docker-build-dev: dev @@ -218,18 +245,19 @@ docker-build-dev: dev docker build -t $(IMAGE_TAG_DEV) \ -f $(DOCKER_DIR)/Dev.dockerfile docker/ +.PHONY: docker-publish # requires appropriate permissions in dockerhub docker-publish: docker push $(IMAGE_TAG) docker push hashicorp/boundary:latest -.PHONY: api cli tools gen proto website ci-config ci-verify set-ui-version docker docker-build docker-build-dev docker-publish test-database-up test-database-down - .NOTPARALLEL: +.PHONY: ci-config ci-config: @$(MAKE) -C .circleci ci-config +.PHONY: ci-verify ci-verify: @$(MAKE) -C .circleci ci-verify