-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
90 lines (67 loc) · 3.07 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
83
84
85
86
87
88
89
90
PROTOC = $(shell which protoc)
PROTOC_GEN_GO = $(shell which protoc-gen-go)
BUILDTIME = $(shell date "+%s")
DATE = $(shell date "+%Y-%m-%d")
K8S_VERSION := 1.27.1
LAST_COMMIT = $(shell git rev-parse --short HEAD)
VERSION ?= $(DATE)-$(LAST_COMMIT)
LDFLAGS := -X github.com/nais/deploy/pkg/version.Revision=$(LAST_COMMIT) -X github.com/nais/deploy/pkg/version.Date=$(DATE) -X github.com/nais/deploy/pkg/version.BuildUnixTime=$(BUILDTIME)
arch := $(shell uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/)
os := $(shell uname -s | tr '[:upper:]' '[:lower:]')
testbin_dir := ./.testbin/
tools_archive := kubebuilder-tools-${K8S_VERSION}-$(os)-$(arch).tar.gz
.PHONY: all proto hookd deployd token-generator deploy alpine test docker upload deploy-alpine hookd-alpine deployd-alpine
all: hookd deployd deploy
install-protobuf-go:
go install google.golang.org/protobuf/cmd/protoc-gen-go
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
proto:
$(PROTOC) --go-grpc_opt=paths=source_relative --go_opt=paths=source_relative --go_out=. --go-grpc_out=. pkg/pb/deployment.proto
hookd:
go build -o bin/hookd -ldflags "-s $(LDFLAGS)" cmd/hookd/main.go
deployd:
go build -o bin/deployd -ldflags "-s $(LDFLAGS)" cmd/deployd/main.go
deploy:
go build -o bin/deploy -ldflags "-s $(LDFLAGS)" cmd/deploy/main.go
crypt:
go build -o bin/crypt -ldflags "-s $(LDFLAGS)" cmd/crypt/main.go
mocks:
go run github.com/vektra/mockery/v2 --inpackage --all --case snake --srcpkg ./pkg/hookd/database
go run github.com/vektra/mockery/v2 --inpackage --all --case snake --srcpkg ./pkg/grpc/dispatchserver
go run github.com/vektra/mockery/v2 --inpackage --all --case snake --srcpkg ./pkg/pb
fmt:
go run mvdan.cc/gofumpt -w ./
deploy-release-linux:
GOOS=linux \
GOARCH=amd64 \
go build -o deploy-linux -ldflags="-s -w $(LDFLAGS)" cmd/deploy/main.go
deploy-release-darwin:
GOOS=darwin \
GOARCH=amd64 \
go build -o deploy-darwin -ldflags="-s -w $(LDFLAGS)" cmd/deploy/main.go
deploy-release-windows:
GOOS=windows \
GOARCH=amd64 \
go build -o deploy-windows -ldflags="-s -w $(LDFLAGS)" cmd/deploy/main.go
alpine:
go build -a -installsuffix cgo -o bin/hookd -ldflags "-s $(LDFLAGS)" cmd/hookd/main.go
go build -a -installsuffix cgo -o bin/deployd -ldflags "-s $(LDFLAGS)" cmd/deployd/main.go
go build -a -installsuffix cgo -o bin/deploy -ldflags "-s $(LDFLAGS)" cmd/deploy/main.go
test: kubebuilder
go test ./... -count=1
migration:
go generate ./...
kubebuilder: $(testbin_dir)/$(tools_archive)
tar -xzf $(testbin_dir)/$(tools_archive) --strip-components=2 -C $(testbin_dir)
chmod -R +x $(testbin_dir)
$(testbin_dir)/$(tools_archive):
mkdir -p $(testbin_dir)
curl -L -O --output-dir $(testbin_dir) "https://storage.googleapis.com/kubebuilder-tools/$(tools_archive)"
check:
go run honnef.co/go/tools/cmd/staticcheck ./...
deployd-alpine:
go build -a -installsuffix cgo -o bin/deployd -ldflags "-s $(LDFLAGS)" ./cmd/deployd/
hookd-alpine:
go build -a -installsuffix cgo -o bin/hookd -ldflags "-s $(LDFLAGS)" ./cmd/hookd/
deploy-alpine:
go build -a -installsuffix cgo -o bin/deploy -ldflags "-s $(LDFLAGS)" ./cmd/deploy/