diff --git a/Makefile b/Makefile index 4e7fe6fc8c4..e3833630e76 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ GOOS ?= $(shell go env GOOS) GOARCH = amd64 BUILD_DIR ?= ./out -ORG = github.com/GoogleContainerTools -PROJECT = skaffold +ORG := github.com/GoogleContainerTools +PROJECT := skaffold REPOPATH ?= $(ORG)/$(PROJECT) RELEASE_BUCKET ?= $(PROJECT) GSC_BUILD_PATH ?= gs://$(RELEASE_BUCKET)/builds/$(COMMIT) @@ -28,11 +28,10 @@ GCP_PROJECT ?= k8s-skaffold GKE_CLUSTER_NAME ?= integration-tests GKE_ZONE ?= us-central1-a -SUPPORTED_PLATFORMS = linux-$(GOARCH) darwin-$(GOARCH) windows-$(GOARCH).exe +SUPPORTED_PLATFORMS := linux-$(GOARCH) darwin-$(GOARCH) windows-$(GOARCH).exe BUILD_PACKAGE = $(REPOPATH)/cmd/skaffold -SKAFFOLD_TEST_PACKAGES = $(shell go list ./... | grep -v diag) -GO_FILES = $(shell find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./pkg/diag/*") +SKAFFOLD_TEST_PACKAGES := $(shell go list ./... | grep -v diag) VERSION_PACKAGE = $(REPOPATH)/pkg/skaffold/version COMMIT = $(shell git rev-parse HEAD) @@ -46,13 +45,16 @@ endif export GO111MODULE = on export GOFLAGS = -mod=vendor +GO_GCFLAGS := "all=-trimpath=${PWD}" +GO_ASMFLAGS := "all=-trimpath=${PWD}" + LDFLAGS_linux = -static LDFLAGS_darwin = LDFLAGS_windows = -GO_BUILD_TAGS_linux = "osusergo netgo static_build release" -GO_BUILD_TAGS_darwin = "release" -GO_BUILD_TAGS_windows = "release" +GO_BUILD_TAGS_linux := "osusergo netgo static_build release" +GO_BUILD_TAGS_darwin := "release" +GO_BUILD_TAGS_windows := "release" GO_LDFLAGS = -X $(VERSION_PACKAGE).version=$(VERSION) GO_LDFLAGS += -X $(VERSION_PACKAGE).buildDate=$(shell date +'%Y-%m-%dT%H:%M:%SZ') @@ -64,23 +66,16 @@ GO_LDFLAGS_windows =" $(GO_LDFLAGS) -extldflags \"$(LDFLAGS_windows)\"" GO_LDFLAGS_darwin =" $(GO_LDFLAGS) -extldflags \"$(LDFLAGS_darwin)\"" GO_LDFLAGS_linux =" $(GO_LDFLAGS) -extldflags \"$(LDFLAGS_linux)\"" -STATIK_FILES = cmd/skaffold/app/cmd/statik/statik.go - -# Build for local development. -$(BUILD_DIR)/$(PROJECT): $(STATIK_FILES) $(GO_FILES) $(BUILD_DIR) - GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=1 go build -tags $(GO_BUILD_TAGS_$(GOOS)) -ldflags $(GO_LDFLAGS_$(GOOS)) -o $@ $(BUILD_PACKAGE) - -.PHONY: install -install: $(BUILD_DIR)/$(PROJECT) - cp $(BUILD_DIR)/$(PROJECT) $(GOPATH)/bin/$(PROJECT) +GO_FILES := $(shell find . -type f -name '*.go' -not -path "./vendor/*" -not -path "./pkg/diag/*") +DEPS_DIGEST := $(shell ./hack/skaffold-deps-sha1.sh) -# Build for a release. -.PRECIOUS: $(foreach platform, $(SUPPORTED_PLATFORMS), $(BUILD_DIR)/$(PROJECT)-$(platform)) +$(BUILD_DIR)/$(PROJECT): $(BUILD_DIR)/$(PROJECT)-$(GOOS)-$(GOARCH) + cp $(BUILD_DIR)/$(PROJECT)-$(GOOS)-$(GOARCH) $@ -.PHONY: cross -cross: $(foreach platform, $(SUPPORTED_PLATFORMS), $(BUILD_DIR)/$(PROJECT)-$(platform).sha256) +$(BUILD_DIR)/$(PROJECT)-$(GOOS)-$(GOARCH): generate-statik $(GO_FILES) $(BUILD_DIR) + GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=1 go build -tags $(GO_BUILD_TAGS_$(GOOS)) -ldflags $(GO_LDFLAGS_$(GOOS)) -gcflags $(GO_GCFLAGS) -asmflags $(GO_ASMFLAGS) -o $@ $(BUILD_PACKAGE) -$(BUILD_DIR)/$(PROJECT)-%-$(GOARCH): $(STATIK_FILES) $(GO_FILES) $(BUILD_DIR) +$(BUILD_DIR)/$(PROJECT)-%-$(GOARCH): generate-statik $(GO_FILES) $(BUILD_DIR) docker build \ --build-arg PROJECT=$(REPOPATH) \ --build-arg TARGETS=$*/$(GOARCH) \ @@ -104,6 +99,11 @@ $(BUILD_DIR)/VERSION: $(BUILD_DIR) $(BUILD_DIR): mkdir -p $(BUILD_DIR) +.PRECIOUS: $(foreach platform, $(SUPPORTED_PLATFORMS), $(BUILD_DIR)/$(PROJECT)-$(platform)) + +.PHONY: cross +cross: $(foreach platform, $(SUPPORTED_PLATFORMS), $(BUILD_DIR)/$(PROJECT)-$(platform).sha256) + .PHONY: test test: $(BUILD_DIR) @ ./hack/gotest.sh -count=1 -race -short -timeout=90s $(SKAFFOLD_TEST_PACKAGES) @@ -122,8 +122,12 @@ checks: $(BUILD_DIR) quicktest: @ ./hack/gotest.sh -short -timeout=60s $(SKAFFOLD_TEST_PACKAGES) +.PHONY: install +install: $(GO_FILES) $(BUILD_DIR) + GOOS=$(GOOS) GOARCH=$(GOARCH) CGO_ENABLED=1 go install -tags $(GO_BUILD_TAGS_$(GOOS)) -ldflags $(GO_LDFLAGS_$(GOOS)) -gcflags $(GO_GCFLAGS) -asmflags $(GO_ASMFLAGS) $(BUILD_PACKAGE) + .PHONY: integration -integration: install +integration: generate-statik install ifeq ($(GCP_ONLY),true) gcloud container clusters get-credentials \ $(GKE_CLUSTER_NAME) \ @@ -162,7 +166,6 @@ clean: .PHONY: build_deps build_deps: - $(eval DEPS_DIGEST := $(shell ./hack/skaffold-deps-sha1.sh)) docker build \ -f deploy/skaffold/Dockerfile.deps \ -t gcr.io/$(GCP_PROJECT)/build_deps:$(DEPS_DIGEST) \ @@ -240,7 +243,6 @@ build-docs-preview: generate-schemas: go run hack/schemas/main.go -# static files - -$(STATIK_FILES): go.mod docs/content/en/schemas/* +.PHONY: generate-statik +generate-statik: hack/generate-statik.sh