forked from insolar/insolar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
202 lines (153 loc) · 5.92 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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
BIN_DIR ?= bin
ARTIFACTS_DIR ?= .artifacts
INSOLAR = insolar
INSOLARD = insolard
INSGOCC = insgocc
PULSARD = pulsard
INSGORUND = insgorund
BENCHMARK = benchmark
PULSEWATCHER = pulsewatcher
APIREQUESTER = apirequester
HEALTHCHECK = healthcheck
CERTGEN = certgen
RECORDBUILDER = protoc-gen-gorecord
ALL_PACKAGES = ./...
MOCKS_PACKAGE = github.com/insolar/insolar/testutils
TESTED_PACKAGES ?= $(shell go list ${ALL_PACKAGES} | grep -v "${MOCKS_PACKAGE}")
COVERPROFILE ?= coverage.txt
TEST_ARGS ?=
BUILD_TAGS ?=
BUILD_NUMBER := $(TRAVIS_BUILD_NUMBER)
BUILD_DATE = $(shell date "+%Y-%m-%d")
BUILD_TIME = $(shell date "+%H:%M:%S")
BUILD_HASH = $(shell git rev-parse --short HEAD)
BUILD_VERSION ?= $(shell git describe --abbrev=0 --tags)
LDFLAGS += -X github.com/insolar/insolar/version.Version=${BUILD_VERSION}
LDFLAGS += -X github.com/insolar/insolar/version.BuildNumber=${BUILD_NUMBER}
LDFLAGS += -X github.com/insolar/insolar/version.BuildDate=${BUILD_DATE}
LDFLAGS += -X github.com/insolar/insolar/version.BuildTime=${BUILD_TIME}
LDFLAGS += -X github.com/insolar/insolar/version.GitHash=${BUILD_HASH}
BININSGOCC=$(BIN_DIR)/$(INSGOCC)
.PHONY: all
all: clean install-deps pre-build build
.PHONY: lint
lint: ci-lint
.PHONY: ci-lint
ci-lint:
golangci-lint run $(ALL_PACKAGES)
.PHONY: metalint
metalint:
gometalinter --vendor $(ALL_PACKAGES)
.PHONY: clean
clean:
go clean $(ALL_PACKAGES)
rm -f $(COVERPROFILE)
rm -rf $(BIN_DIR)
./scripts/insolard/launchnet.sh -l
.PHONY: install-godep
install-godep:
./scripts/build/fetchdeps github.com/golang/dep/cmd/dep 22125cfaa6ddc71e145b1535d4b7ee9744fefff2
.PHONY: install-build-tools
install-build-tools:
./scripts/build/fetchdeps golang.org/x/tools/cmd/stringer 63e6ed9258fa6cbc90aab9b1eef3e0866e89b874
./scripts/build/fetchdeps github.com/gojuno/minimock/cmd/minimock 890c67cef23dd06d694294d4f7b1026ed7bac8e6
./scripts/build/fetchdeps github.com/gogo/protobuf/protoc-gen-gogoslick v1.2.1
.PHONY: install-deps
install-deps: install-godep install-build-tools
.PHONY: pre-build
pre-build: ensure generate
.PHONY: generate
generate:
GOPATH=`go env GOPATH` go generate -x $(ALL_PACKAGES)
.PHONY: test_git_no_changes
test_git_no_changes:
ci/scripts/git_diff_without_comments.sh
.PHONY: ensure
ensure:
dep ensure
.PHONY: build
build: $(BIN_DIR) $(INSOLARD) $(INSOLAR) $(INSGOCC) $(PULSARD) $(INSGORUND) $(HEALTHCHECK) $(BENCHMARK) $(APIREQUESTER) $(PULSEWATCHER) $(CERTGEN)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
.PHONY: $(INSOLARD)
$(INSOLARD):
go build -o $(BIN_DIR)/$(INSOLARD) ${BUILD_TAGS} -ldflags "${LDFLAGS}" cmd/insolard/*.go
.PHONY: $(INSOLAR)
$(INSOLAR):
go build -o $(BIN_DIR)/$(INSOLAR) ${BUILD_TAGS} -ldflags "${LDFLAGS}" cmd/insolar/*.go
.PHONY: $(INSGOCC)
$(INSGOCC): cmd/insgocc/insgocc.go logicrunner/goplugin/preprocessor
go build -o $(BININSGOCC) -ldflags "${LDFLAGS}" cmd/insgocc/*.go
$(BININSGOCC): $(INSGOCC)
.PHONY: $(PULSARD)
$(PULSARD):
go build -o $(BIN_DIR)/$(PULSARD) -ldflags "${LDFLAGS}" cmd/pulsard/*.go
.PHONY: $(INSGORUND)
$(INSGORUND):
CGO_ENABLED=1 go build -o $(BIN_DIR)/$(INSGORUND) -ldflags "${LDFLAGS}" cmd/insgorund/*.go
.PHONY: $(BENCHMARK)
$(BENCHMARK):
go build -o $(BIN_DIR)/$(BENCHMARK) -ldflags "${LDFLAGS}" cmd/benchmark/*.go
.PHONY: $(PULSEWATCHER)
$(PULSEWATCHER):
go build -o $(BIN_DIR)/$(PULSEWATCHER) -ldflags "${LDFLAGS}" cmd/pulsewatcher/*.go
.PHONY: $(APIREQUESTER)
$(APIREQUESTER):
go build -o $(BIN_DIR)/$(APIREQUESTER) -ldflags "${LDFLAGS}" cmd/apirequester/*.go
.PHONY: $(HEALTHCHECK)
$(HEALTHCHECK):
go build -o $(BIN_DIR)/$(HEALTHCHECK) -ldflags "${LDFLAGS}" cmd/healthcheck/*.go
.PHONY: $(CERTGEN)
$(CERTGEN):
go build -o $(BIN_DIR)/$(CERTGEN) -ldflags "${LDFLAGS}" cmd/certgen/*.go
.PHONY: functest
functest:
CGO_ENABLED=1 go test $(TEST_ARGS) -tags functest ./functest -count=1
.PHONY: test
test:
CGO_ENABLED=1 go test $(TEST_ARGS) $(ALL_PACKAGES)
.PHONY: test_fast
test_fast:
go test $(TEST_ARGS) -count 1 -v $(ALL_PACKAGES)
$(ARTIFACTS_DIR):
mkdir -p $(ARTIFACTS_DIR)
.PHONY: test_with_coverage
test_with_coverage: $(ARTIFACTS_DIR)
CGO_ENABLED=1 go test $(TEST_ARGS) --coverprofile=$(ARTIFACTS_DIR)/cover.all --covermode=atomic $(TESTED_PACKAGES)
@cat $(ARTIFACTS_DIR)/cover.all | ./scripts/dev/cover-filter.sh > $(COVERPROFILE)
.PHONY: test_with_coverage_fast
test_with_coverage_fast:
CGO_ENABLED=1 go test $(TEST_ARGS) -count 1 --coverprofile=$(COVERPROFILE) --covermode=atomic $(ALL_PACKAGES)
.PHONY: ci_test_with_coverage
ci_test_with_coverage:
CGO_ENABLED=1 go test -count 1 -parallel 4 --coverprofile=$(COVERPROFILE) --covermode=atomic -v $(ALL_PACKAGES) | tee unit.file
.PHONY: ci_test_func
ci_test_func:
CGO_ENABLED=1 go test $(TEST_ARGS) -tags functest -v ./functest -count=1 | tee func.file
.PHONY: ci_test_integrtest
ci_test_integrtest:
CGO_ENABLED=1 go test $(TEST_ARGS) -timeout 40m -tags networktest -v ./network/servicenetwork -count=1 | tee integr.file
.PHONY: regen-proxies
CONTRACTS = $(wildcard application/contract/*)
regen-proxies: $(BININSGOCC)
$(foreach c, $(CONTRACTS), $(BININSGOCC) proxy application/contract/$(notdir $(c))/$(notdir $(c)).go; )
.PHONY: docker-pulsar
docker-pulsar:
docker build --tag insolar/pulsar -f ./docker/Dockerfile.pulsar .
.PHONY: docker-insolard
docker-insolard:
docker build --target insolard --tag insolar/insolard -f ./docker/Dockerfile .
.PHONY: docker-genesis
docker-genesis:
docker build --target genesis --tag insolar/genesis -f ./docker/Dockerfile .
.PHONY: docker-insgorund
docker-insgorund:
docker build --target insgorund --tag insolar/insgorund -f ./docker/Dockerfile .
.PHONY: docker
docker: docker-insolard docker-genesis docker-insgorund
$(RECORDBUILDER):
go build -o $(BIN_DIR)/$(RECORDBUILDER) -ldflags "${LDFLAGS}" cmd/protobuf-record-gen/*.go
generate-protobuf:
# protoc -I./vendor -I./ --gogoslick_out=./ network/node/internal/node/node.proto
# protoc -I./vendor -I./ --gogoslick_out=./ insolar/record/record.proto
PATH="$(BIN_DIR):$(PATH)" protoc -I./vendor -I./ --gorecord_out=./ insolar/record/record.proto