-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathMakefile
120 lines (100 loc) · 4.3 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
redeployed-at:=$(shell date +%s)
.PHONY: init
init:
go install google.golang.org/protobuf/cmd/protoc-gen-go
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
go install github.com/google/wire/cmd/wire@latest
go install -tags 'mysql' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
go install github.com/golang/mock/mockgen@latest
.PHONY: update
update:
go get -u ./...
go mod tidy
.PHONY: protoc
protoc:
buf mod update
buf generate
.PHONY: wire
wire:
wire ./...
.PHONY: mock
mock:
mockgen -source=./api/protobuf/user/v1/user_grpc.pb.go -destination=./mock/mock_user_grpc.pb.go -package=mock
mockgen -source=./api/protobuf/post/v1/post_grpc.pb.go -destination=./mock/mock_post_grpc.pb.go -package=mock
mockgen -source=./api/protobuf/comment/v1/comment_grpc.pb.go -destination=./mock/mock_comment_grpc.pb.go -package=mock
mockgen -source=./api/protobuf/auth/v1/auth_grpc.pb.go -destination=./mock/mock_auth_grpc.pb.go -package=mock
.PHONY: lint
lint:
golangci-lint run --timeout=5m
.PHONY: test
test:
go test -cover -race -covermode=atomic -coverprofile=coverage.txt ./...
.PHONY: migrate-up
migrate-up:
migrate -path ./migrations/user -database "mysql://root:@tcp(localhost:3306)/users" -verbose up
migrate -path ./migrations/post -database "mysql://root:@tcp(localhost:3306)/posts" -verbose up
migrate -path ./migrations/comment -database "mysql://root:@tcp(localhost:3306)/comments" -verbose up
.PHONY: migrate-down
migrate-down:
migrate -path ./migrations/user -database "mysql://root:@tcp(localhost:3306)/users" -verbose down -all
migrate -path ./migrations/post -database "mysql://root:@tcp(localhost:3306)/posts" -verbose down -all
migrate -path ./migrations/comment -database "mysql://root:@tcp(localhost:3306)/comments" -verbose down -all
.PHONY: migrate-refresh
migrate-refresh: migrate-down migrate-up
.PHONY: blog-server
blog-server:
go run ./cmd/blog/
.PHONY: user-server
user-server:
go run ./cmd/user/
.PHONY: post-server
post-server:
go run ./cmd/post/
.PHONY: comment-server
comment-server:
go run ./cmd/comment/
.PHONY: auth-server
auth-server:
go run ./cmd/auth/
.PHONY: dtm-server
dtm-server:
@echo "Start DTM server, Please see: https://github.com/dtm-labs/dtm"
@echo "From Source: git clone [email protected]:dtm-labs/dtm.git && cd dtm && go run main.go"
@echo "For Mac: brew install dtm"
.PHONY: docker-build
docker-build:
docker build -t blog/blog-server:latest -f ./build/docker/blog/Dockerfile .
docker build -t blog/user-server:latest -f ./build/docker/user/Dockerfile .
docker build -t blog/auth-server:latest -f ./build/docker/auth/Dockerfile .
docker build -t blog/post-server:latest -f ./build/docker/post/Dockerfile .
docker build -t blog/comment-server:latest -f ./build/docker/comment/Dockerfile .
.PHONY: kube-deploy
kube-deploy:
kubectl apply -f ./deployments/
kubectl apply -f ./deployments/dtm/
kubectl apply -f ./deployments/blog/
kubectl apply -f ./deployments/user/
kubectl apply -f ./deployments/post/
kubectl apply -f ./deployments/auth/
kubectl apply -f ./deployments/comment/
kubectl apply -f ./deployments/addons/
.PHONY: kube-delete
kube-delete:
kubectl delete -f ./deployments/
kubectl delete -f ./deployments/dtm/
kubectl delete -f ./deployments/blog/
kubectl delete -f ./deployments/user/
kubectl delete -f ./deployments/post/
kubectl delete -f ./deployments/auth/
kubectl delete -f ./deployments/comment/
kubectl delete -f ./deployments/addons/
.PHONY: kube-redeploy
kube-redeploy:
@echo "redeployed at ${redeployed-at}"
kubectl patch deployment blog-server -p '{"spec": {"template": {"metadata": {"annotations": {"redeployed-at": "'${redeployed-at}'" }}}}}'
kubectl patch deployment user-server -p '{"spec": {"template": {"metadata": {"annotations": {"redeployed-at": "'${redeployed-at}'" }}}}}'
kubectl patch deployment auth-server -p '{"spec": {"template": {"metadata": {"annotations": {"redeployed-at": "'${redeployed-at}'" }}}}}'
kubectl patch deployment post-server -p '{"spec": {"template": {"metadata": {"annotations": {"redeployed-at": "'${redeployed-at}'" }}}}}'
kubectl patch deployment comment-server -p '{"spec": {"template": {"metadata": {"annotations": {"redeployed-at": "'${redeployed-at}'" }}}}}'