github.com/cs3org/reva/v2@v2.27.7/Makefile (about) 1 SHELL := /bin/bash 2 BUILD_DATE=`date +%FT%T%z` 3 GIT_COMMIT ?= `git rev-parse --short HEAD` 4 GIT_BRANCH=`git rev-parse --symbolic-full-name --abbrev-ref HEAD` 5 GIT_DIRTY=`git diff-index --quiet HEAD -- || echo "dirty-"` 6 VERSION ?= `git describe --always` 7 GO_VERSION ?= `go version | awk '{print $$3}'` 8 MINIMUM_GO_VERSION=1.16.2 9 BUILD_FLAGS="-X main.gitCommit=${GIT_COMMIT} -X main.version=${VERSION} -X main.goVersion=${GO_VERSION} -X main.buildDate=${BUILD_DATE}" 10 CI_BUILD_FLAGS="-w -extldflags "-static" -X main.gitCommit=${GIT_COMMIT} -X main.version=${VERSION} -X main.goVersion=${GO_VERSION} -X main.buildDate=${BUILD_DATE}" 11 LITMUS_URL_OLD="http://localhost:20080/remote.php/webdav" 12 LITMUS_URL_NEW="http://localhost:20080/remote.php/dav/files/4c510ada-c86b-4815-8820-42cdf82c3d51" 13 LITMUS_USERNAME="einstein" 14 LITMUS_PASSWORD="relativity" 15 TESTS="basic http copymove props" 16 17 TOOLCHAIN ?= $(CURDIR)/toolchain 18 GOLANGCI_LINT ?= $(TOOLCHAIN)/golangci-lint 19 CALENS ?= $(TOOLCHAIN)/calens 20 GOIMPORTS ?= $(TOOLCHAIN)/goimports 21 22 include .bingo/Variables.mk 23 24 .PHONY: toolchain 25 toolchain: $(GOLANGCI_LINT) $(CALENS) $(GOIMPORTS) 26 27 .PHONY: toolchain-clean 28 toolchain-clean: 29 rm -rf $(TOOLCHAIN) 30 31 $(GOLANGCI_LINT): 32 @mkdir -p $(@D) 33 curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | BINDIR=$(@D) sh -s v1.61.0 34 35 .PHONY: check-changelog 36 lint: $(GOLANGCI_LINT) 37 $(GOLANGCI_LINT) run --timeout 300s 38 39 .PHONY: lint-fix 40 lint-fix: $(GOLANGCI_LINT) 41 gofmt -w . 42 $(GOLANGCI_LINT) run --fix 43 44 CALENS_DIR := $(shell mktemp -d) 45 $(CALENS): 46 @mkdir -p $(@D) 47 git clone --depth 1 --branch v0.2.0 -c advice.detachedHead=false https://github.com/restic/calens.git $(CALENS_DIR) 48 cd $(CALENS_DIR) && GOBIN=$(@D) go install 49 rm -rf $(CALENS_DIR) 50 51 .PHONY: check-changelog 52 check-changelog: $(CALENS) 53 ifndef PR 54 $(error PR is not defined) 55 else 56 $(CALENS) | sed -n '/^Changelog for reva unreleased (UNRELEASED)/,/^Details/p' | \ 57 grep -E '^\* [[:alpha:]]{3} #$(PR): ' 58 endif 59 60 $(GOIMPORTS): 61 @mkdir -p $(@D) 62 GOBIN=$(@D) go install golang.org/x/tools/cmd/goimports@v0.3.0 63 64 .PHONY: off 65 off: 66 GOPROXY=off 67 echo BUILD_DATE=${BUILD_DATE} 68 echo GIT_COMMIT=${GIT_COMMIT} 69 echo GIT_DIRTY=${GIT_DIRTY} 70 echo VERSION=${VERSION} 71 echo GO_VERSION=${GO_VERSION} 72 73 .PHONY: imports 74 imports: off $(GOIMPORTS) 75 $(GOIMPORTS) -w tools pkg internal cmd 76 77 .PHONY: build 78 build: build-revad build-reva test-go-version 79 80 .PHONY: build-debug 81 build-debug: build-revad-debug build-reva-debug test-go-version 82 83 .PHONY: build-cephfs 84 build-cephfs: build-revad-cephfs build-reva 85 86 .PHONY: tidy 87 tidy: 88 go mod tidy 89 90 .PHONY: build-revad 91 build-revad: imports 92 go build -ldflags ${BUILD_FLAGS} -o ./cmd/revad/revad ./cmd/revad 93 94 .PHONY: build-revad-debug 95 build-revad-debug: imports 96 go build -gcflags="all=-N -l" -ldflags ${BUILD_FLAGS} -o ./cmd/revad/revad ./cmd/revad 97 98 .PHONY: build-revad-cephfs 99 build-revad-cephfs: imports 100 go build -ldflags ${BUILD_FLAGS} -tags ceph -o ./cmd/revad/revad ./cmd/revad 101 102 .PHONY: build-reva 103 build-reva: imports 104 go build -ldflags ${BUILD_FLAGS} -o ./cmd/reva/reva ./cmd/reva 105 106 .PHONY: build-reva-debug 107 build-reva-debug: imports 108 go build -gcflags="all=-N -l" -ldflags ${BUILD_FLAGS} -o ./cmd/reva/reva ./cmd/reva 109 110 # to be run in Docker build 111 .PHONY: build-revad-docker 112 build-revad-docker: off 113 go build -ldflags ${BUILD_FLAGS} -o ./cmd/revad/revad ./cmd/revad 114 115 .PHONY: build-revad-cephfs-docker 116 build-revad-cephfs-docker: off 117 go build -ldflags ${BUILD_FLAGS} -tags ceph -o ./cmd/revad/revad ./cmd/revad 118 119 .PHONY: build-reva-docker 120 build-reva-docker: off 121 go build -ldflags ${BUILD_FLAGS} -o ./cmd/reva/reva ./cmd/reva 122 123 .PHONY: test 124 test: off 125 go test -coverprofile coverage.out -race $$(go list ./... | grep -v /tests/integration) 126 127 .PHONY: test-integration 128 test-integration: build-ci 129 cd tests/integration && go test -race ./... 130 131 .PHONY: litmus-test-old 132 litmus-test-old: build 133 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c frontend.toml & 134 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c gateway.toml & 135 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-home.toml & 136 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-users.toml & 137 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c users.toml & 138 docker run --rm --network=host -e LITMUS_URL=$(LITMUS_URL_OLD) -e LITMUS_USERNAME=$(LITMUS_USERNAME) -e LITMUS_PASSWORD=$(LITMUS_PASSWORD) -e TESTS=$(TESTS) owncloud/litmus:latest 139 pkill revad 140 141 .PHONY: litmus-test-new 142 litmus-test-new: build 143 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c frontend.toml & 144 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c gateway.toml & 145 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-home.toml & 146 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c storage-users.toml & 147 cd tests/oc-integration-tests/local && ../../../cmd/revad/revad -c users.toml & 148 docker run --rm --network=host -e LITMUS_URL=$(LITMUS_URL_NEW) -e LITMUS_USERNAME=$(LITMUS_USERNAME) -e LITMUS_PASSWORD=$(LITMUS_PASSWORD) -e TESTS=$(TESTS) owncloud/litmus:latest 149 pkill revad 150 151 .PHONY: contrib 152 contrib: 153 git shortlog -se | cut -c8- | sort -u | awk '{print "-", $$0}' | grep -v 'users.noreply.github.com' > CONTRIBUTORS.md 154 155 .PHONY: test-go-version 156 test-go-version: 157 @echo -e "$(MINIMUM_GO_VERSION)\n$(shell echo $(GO_VERSION) | sed 's/go//')" | sort -Vc &> /dev/null || echo -e "\n\033[33;5m[WARNING]\033[0m You are not using a supported go version. Please use $(MINIMUM_GO_VERSION) or above.\n" 158 159 .PHONY: build-ci 160 build-ci: off 161 go build -ldflags ${BUILD_FLAGS} -o ./cmd/revad/revad ./cmd/revad 162 go build -ldflags ${BUILD_FLAGS} -o ./cmd/reva/reva ./cmd/reva 163 164 .PHONY: gen-doc 165 gen-doc: 166 go run tools/generate-documentation/main.go 167 168 .PHONY: clean 169 clean: toolchain-clean 170 rm -rf dist 171 172 .PHONY: all 173 all: build test lint gen-doc 174 175 # create local build versions 176 dist: gen-doc 177 go run tools/create-artifacts/main.go -version ${VERSION} -commit ${GIT_COMMIT} -goversion ${GO_VERSION} 178 179 .PHONY: mockery 180 mockery: $(MOCKERY) 181 $(MOCKERY) --boilerplate-file ./.templates/mockery.go.tmpl 182 183 .PHONY: go-generate 184 go-generate: 185 go generate ./...