.PHONY: fmt fmt: ## Run go fmt against code. go fmt ./... .PHONY: vet vet: ## Run go vet against code. go mod tidy && go mod vendor go vet ./... .PHONY: test test: vet ## Run tests go test -v -coverpkg=./... ./pkg/... ##@ Linter .PHONY: install-golint install-golint: @if ! command -v golangci-lint &> /dev/null; then \ echo "installing golangci-lint..."; \ go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest; \ else \ echo "golangci-lint already installed"; \ fi .PHONY: golint golint: fmt install-golint "$$(go env GOPATH)/bin/golangci-lint" run -v ./... VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || git rev-parse --short HEAD 2>/dev/null || echo "dev") GIT_COMMIT ?= $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") BUILD_TIME ?= $(shell if [ -n "$$SOURCE_DATE_EPOCH" ]; then date -u -d "@$$SOURCE_DATE_EPOCH" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -u -r "$$SOURCE_DATE_EPOCH" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null; else date -u +"%Y-%m-%dT%H:%M:%SZ"; fi) PROJECT_GOFLAGS := -trimpath -buildvcs=false PROJECT_LDFLAGS := -buildid= -B none -X 'github.com/alibaba/opensandbox/internal/version.Version=$(VERSION)' \ -X 'github.com/alibaba/opensandbox/internal/version.BuildTime=$(BUILD_TIME)' \ -X 'github.com/alibaba/opensandbox/internal/version.GitCommit=$(GIT_COMMIT)' GO_BUILD_FLAGS := $(strip $(GOFLAGS) $(PROJECT_GOFLAGS)) GO_LDFLAGS := $(strip $(LDFLAGS) $(PROJECT_LDFLAGS)) .PHONY: build build: vet ## Build the binary. @mkdir -p bin go build $(GO_BUILD_FLAGS) -ldflags "$(GO_LDFLAGS)" -o bin/execd main.go .PHONY: test-integration test-integration: ## Run integration tests (Linux + bwrap required). go test -v -tags="linux,bwrap" -run Integration ./pkg/runtime/bwrap_test/ .PHONY: multi-build multi-build: vet ## Cross-compile for linux/windows/darwin amd64/arm64. @mkdir -p bin @for os in linux windows darwin; do \ for arch in amd64 arm64; do \ out=bin/execd_$(VERSION)_$${os}_$${arch}; \ [ "$${os}" = "windows" ] && out="$${out}.exe"; \ echo ">> building $${os}/$${arch} -> $${out}"; \ GOOS=$${os} GOARCH=$${arch} CGO_ENABLED=0 go build $(GO_BUILD_FLAGS) -ldflags "$(GO_LDFLAGS)" -o "$${out}" main.go || exit $$?; \ done; \ done