forked from influxdata/chronograf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
138 lines (104 loc) · 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
ifeq ($(OS), Windows_NT)
VERSION := $(shell git describe --exact-match --tags 2>nil)
else
VERSION := $(shell git describe --exact-match --tags 2>/dev/null)
endif
COMMIT ?= $(shell git rev-parse --short=8 HEAD)
YARN := $(shell command -v yarn 2> /dev/null)
SOURCES := $(shell find . -name '*.go' ! -name '*_gen.go' -not -path "./vendor/*" )
UISOURCES := $(shell find ui -type f -not \( -path ui/build/\* -o -path ui/node_modules/\* -o -path ui/cypress/\* -prune \) )
unexport LDFLAGS
ifdef VERSION
TMP_BUILD_VERSION = -X main.version=$(VERSION)
endif
LDFLAGS=-ldflags "-s -X main.commit=${COMMIT} ${TMP_BUILD_VERSION}"
unexport TMP_BUILD_VERSION
BINARY=chronograf
CTLBINARY=chronoctl
.DEFAULT_GOAL := all
.PHONY: assets dep clean test gotest gotestrace jstest run run-dev ctags
all: dep build
build: assets ${BINARY}
${BINARY}: $(SOURCES) .bindata .jsdep .godep
go build -o ${BINARY} ${LDFLAGS} ./cmd/chronograf/main.go
go build -o ${CTLBINARY} ${LDFLAGS} ./cmd/chronoctl
define CHRONOGIRAFFE
._ o o
\_`-)|_
,"" _\_
," ## | 0 0.
," ## ,-\__ `.
," / `--._;) - "HAI, I'm Chronogiraffe. Let's be friends!"
," ## /
," ## /
endef
export CHRONOGIRAFFE
chronogiraffe: ${BINARY}
@echo "$$CHRONOGIRAFFE"
docker-${BINARY}: $(SOURCES)
CGO_ENABLED=0 GOOS=linux go build -installsuffix cgo -o ${BINARY} ${LDFLAGS} \
./cmd/chronograf/main.go
docker: dep assets docker-${BINARY}
docker build -t chronograf .
assets: .jssrc .bindata
.bindata: server/swagger.json canned/*.json protoboards/*.json $(UISOURCES)
@touch .bindata
.jssrc: $(UISOURCES)
cd ui && yarn run clean && yarn run build
@touch .jssrc
dep: .jsdep .godep
.godep:
go get
@touch .godep
.jsdep: ./yarn.lock
ifndef YARN
$(error Please install yarn 1.19.1+)
else
cd ui && yarn --no-progress --no-emoji
@touch .jsdep
endif
gen: internal.pb.go
internal.pb.go: kv/internal/internal.proto
go generate -x ./kv/internal
test: gochecktidy gocheckfmt jstest gotest gotestrace lint-ci
gochecktidy:
go version
go mod tidy
if ! git --no-pager diff --exit-code -- go.mod go.sum; then\
echo Modules are not tidy, please run \`go mod tidy\` ! ;\
exit 1;\
fi
gocheckfmt:
NOFMTFILES=`go fmt './...'` ; \
if [ ! -z "$$NOFMTFILES" ] ; then\
echo Unformatted files: $$NOFMTFILES ;\
echo Run \`go fmt ./...\` to fix it ! ;\
exit 1;\
fi
gotest:
go test -timeout 10s ./...
gotestrace:
go test -race ./...
jstest:
cd ui && yarn test --runInBand
lint:
cd ui && yarn run lint
lint-ci:
cd ui && yarn run eslint && yarn run tsc # fail fast for ci process
run: ${BINARY}
./chronograf
run-dev: chronogiraffe
mkdir -p ui/build
./chronograf -d --log-level=debug
e2e-prepare:
./ui/cypress/local-chronograf-influxdb-enterprise.sh
e2e:
cd ui && yarn test:e2e
clean:
if [ -f ${BINARY} ] ; then rm ${BINARY} ; fi
cd ui && yarn run clean
rm -rf node_modules
cd ui && rm -rf node_modules
@rm -f .godep .jsdep .jssrc .bindata
ctags:
ctags -R --languages="Go" --exclude=.git --exclude=ui .