-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile
82 lines (60 loc) · 2.22 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
GOLANGCI_VERSION = 1.59.1
LICENCES_IGNORE_LIST = $(shell cat licenses/licenses-ignore-list.txt)
VERSION ?= 0.0.1
IMAGE_TAG_BASE ?= stackitcloud/external-dns-stackit-webhook
IMG ?= $(IMAGE_TAG_BASE):$(VERSION)
BUILD_VERSION ?= $(shell git branch --show-current)
BUILD_COMMIT ?= $(shell git rev-parse --short HEAD)
BUILD_TIMESTAMP ?= $(shell date -u '+%Y-%m-%d %H:%M:%S')
PWD = $(shell pwd)
export PATH := $(PWD)/bin:$(PATH)
download:
go mod download
.PHONY: build
build:
CGO_ENABLED=0 go build -ldflags "-s -w" -o ./bin/external-dns-stackit-webhook -v cmd/webhook/main.go
.PHONY: docker-build
docker-build:
docker build -t $(IMG) -f Dockerfile .
test:
go test -race ./...
mocks:
go generate ./...
GOLANGCI_LINT = bin/golangci-lint-$(GOLANGCI_VERSION)
$(GOLANGCI_LINT):
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | bash -s -- -b bin v$(GOLANGCI_VERSION)
@mv bin/golangci-lint "$(@)"
lint: $(GOLANGCI_LINT) download
$(GOLANGCI_LINT) run -v
out:
@mkdir -pv "$(@)"
reports:
@mkdir -pv "$(@)/licenses"
coverage: out
go test -race ./... -coverprofile=out/cover.out
html-coverage: out/report.json
go tool cover -html=out/cover.out
.PHONY: out/report.json
out/report.json:
go test -race ./... -coverprofile=out/cover.out --json | tee "$(@)"
run:
go run cmd/webhook/main.go
.PHONY: clean
clean:
rm -rf ./bin
rm -rf ./out
GO_RELEASER = bin/goreleaser
$(GO_RELEASER):
GOBIN=$(PWD)/bin go install github.com/goreleaser/goreleaser@latest
.PHONY: release-check
release-check: $(GO_RELEASER) ## Check if the release will work
GITHUB_SERVER_URL=github.com GITHUB_REPOSITORY=stackitcloud/external-dns-stackit-webhook REGISTRY=$(REGISTRY) IMAGE_NAME=$(IMAGE_NAME) $(GO_RELEASER) release --snapshot --clean --skip-publish
GO_LICENSES = bin/go-licenses
$(GO_LICENSES):
GOBIN=$(PWD)/bin go install github.com/google/go-licenses
.PHONY: license-check
license-check: $(GO_LICENSES) reports ## Check licenses against code.
$(GO_LICENSES) check --include_tests --ignore $(LICENCES_IGNORE_LIST) ./...
.PHONY: license-report
license-report: $(GO_LICENSES) reports ## Create licenses report against code.
$(GO_LICENSES) report --include_tests --ignore $(LICENCES_IGNORE_LIST) ./... > ./reports/licenses/licenses-list.csv