-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathMakefile
154 lines (125 loc) · 4.12 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
REPOSITORY := github.com/bitcoin-sv/arc
APP_COMMIT := $(shell git rev-parse --short HEAD)
APP_VERSION := $(shell git describe --tags --always --abbrev=0 --match='v[0-9]*.[0-9]*.[0-9]*' 2> /dev/null | sed 's/^.//')
.PHONY: all
all: deps lint build test
.PHONY: deps
deps:
go mod download
.PHONY: build
build:
go build ./...
.PHONY: build_release
build_release:
mkdir -p build
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X $(REPOSITORY)/internal/version.Commit=$(APP_COMMIT) -X $(REPOSITORY)/internal/version.Version=$(APP_VERSION)" -o build/arc_linux_amd64 ./cmd/arc/main.go
.PHONY: build_docker
build_docker:
docker build . -t test-arc --build-arg="APP_COMMIT=$(APP_COMMIT)" --build-arg="APP_VERSION=$(APP_VERSION)"
.PHONY: run
run:
docker compose down -v --remove-orphans
docker compose up --build blocktx callbacker metamorph api
.PHONY: run_e2e_tests
run_e2e_tests:
docker compose down -v --remove-orphans
docker compose up --build blocktx callbacker metamorph api tests --scale blocktx=4 --scale metamorph=2 --exit-code-from tests
docker compose down
.PHONY: run_e2e_tests_with_tracing
run_e2e_tests_with_tracing:
docker compose down -v --remove-orphans
ARC_TRACING_ENABLED=TRUE docker compose up --build blocktx callbacker metamorph api tests jaeger --scale blocktx=4 --scale metamorph=2 --no-attach jaeger
.PHONY: run_e2e_mcast_tests
run_e2e_mcast_tests:
docker compose -f docker-compose-mcast.yaml down --remove-orphans
docker compose -f docker-compose-mcast.yaml up --build mcast_sidecar blocktx metamorph api tests --scale blocktx=6 --exit-code-from tests
docker compose -f docker-compose-mcast.yaml down
.PHONY: test
test:
go test -race -count=1 ./...
.PHONY: install_lint
install_lint:
go install honnef.co/go/tools/cmd/[email protected]
.PHONY: lint
lint:
golangci-lint run -v ./...
staticcheck ./...
.PHONY: lint_fix
lint_fix:
golangci-lint run -v ./... --fix
.PHONY: gen_go
gen_go:
go generate ./...
.PHONY: gen
gen:
protoc \
--proto_path=. \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
internal/metamorph/metamorph_api/metamorph_api.proto
protoc \
--proto_path=. \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
internal/blocktx/blocktx_api/blocktx_api.proto
protoc \
--proto_path=. \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
internal/callbacker/callbacker_api/callbacker_api.proto
protoc \
--proto_path=. \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
pkg/message_queue/nats/client/test_api/test_api.proto
.PHONY: clean_gen
clean_gen:
rm -f ./internal/metamorph/metamorph_api/*.pb.go
rm -f ./internal/blocktx/blocktx_api/*.pb.go
rm -f ./internal/callbacker/callbacker_api/*.pb.go
.PHONY: coverage
coverage:
rm -f ./cov.out
go test -coverprofile=./cov.out -covermode=atomic ./... 2>&1 > gotest.out
go tool cover -html=cov.out -o coverage-report.html
goverreport -coverprofile cov.out -packages -sort block
.PHONY: install_coverage
install_coverage:
go install github.com/mcubik/goverreport@latest
go install github.com/jstemmer/go-junit-report/v2@latest
.PHONY: clean
clean:
rm -rf build/
.PHONY: install
install:
# arch -arm64 brew install golangci-lint
brew install pre-commit
pre-commit install
pre-commit install --hook-type commit-msg
.PHONY: install_gen
install_gen:
go install google.golang.org/protobuf/cmd/[email protected]
go install google.golang.org/grpc/cmd/[email protected]
go install github.com/oapi-codegen/oapi-codegen/v2/cmd/[email protected]
go install github.com/matryer/[email protected]
.PHONY: docs
docs:
sh scripts/generate_docs.sh
gh-pages:
git push --force origin `git subtree split --prefix doc master`:gh-pages
.PHONY: api
api:
oapi-codegen -config pkg/api/config.yaml pkg/api/arc.yaml > pkg/api/arc.go
.PHONY: compare_config
compare_config:
rm -f ./config/dumped_config.yaml
go run ./cmd/arc/main.go -dump_config "./config/dumped_config.yaml" && go run ./scripts/compare_yamls.go
rm ./config/dumped_config.yaml