diff --git a/Makefile b/Makefile index f9c9c5a4bec5d101aefeff433753a7fa5bb564db..7bbc9e6c4bd254da88fa12b6889b7a5652d1f51a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean deploy deps image imagepush lint run stagedeploy test testci testcover +.PHONY: clean deploy deps gcloud-auth image imagepush lint run stagedeploy test testci testcover # The version that will be used in docker tags (e.g. to push a # go-httpbin:latest image use `make imagepush VERSION=latest)` @@ -8,6 +8,9 @@ VERSION ?= $(shell git rev-parse --short HEAD) GCLOUD_PROJECT ?= httpbingo GCLOUD_ACCOUNT ?= mccutchen@gmail.com +# Run gcloud in a container to avoid needing to install the SDK locally +GCLOUD_COMMAND ?= docker run --rm -ti --workdir /code -v $$PWD:/code -v $$HOME/.config/gcloud:/root/.config/gcloud google/cloud-sdk gcloud + # Built binaries will be placed here DIST_PATH ?= dist @@ -78,11 +81,14 @@ lint: $(TOOL_GOLINT) $(TOOL_STATICCHECK) # ============================================================================= # deploy & run locally # ============================================================================= -deploy: build - gcloud --account=$(GCLOUD_ACCOUNT) app deploy --quiet --project=$(GCLOUD_PROJECT) --version=$(VERSION) --promote +deploy: build gcloud-auth + $(GCLOUD_COMMAND) --account=$(GCLOUD_ACCOUNT) app deploy --quiet --project=$(GCLOUD_PROJECT) --version=$(VERSION) --promote + +stagedeploy: build gcloud-auth + $(GCLOUD_COMMAND) --account=$(GCLOUD_ACCOUNT) app deploy --quiet --project=$(GCLOUD_PROJECT) --version=$(VERSION) --no-promote -stagedeploy: build - gcloud --account=$(GCLOUD_ACCOUNT) app deploy --quiet --project=$(GCLOUD_PROJECT) --version=$(VERSION) --no-promote +gcloud-auth: + @$(GCLOUD_COMMAND) auth list | grep '^\*' | grep -q $(GCLOUD_ACCOUNT) || $(GCLOUD_COMMAND) auth login $(GCLOUD_ACCOUNT) run: build $(DIST_PATH)/go-httpbin