This repository has been archived by the owner on Apr 17, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
164 lines (132 loc) · 3.93 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
APP_NAME = mobile-security-service
ORG_NAME = aerogear
PKG = github.com/$(ORG_NAME)/$(APP_NAME)
APP_FILE=./cmd/mobile-security-service/main.go
APP_FILE_DIR=cmd/mobile-security-service
TOP_SRC_DIRS = pkg
PACKAGES ?= $(shell sh -c "find $(TOP_SRC_DIRS) -name \\*_test.go \
-exec dirname {} \\; | sort | uniq")
BIN_DIR := $(GOPATH)/bin
BINARY ?= mobile-security-service
RELEASE_TAG = $(CIRCLE_TAG)
# This follows the output format for goreleaser
BINARY_LINUX_64 = ./dist/linux_amd64/$(BINARY)
IMAGE_REGISTRY=quay.io
IMAGE_LATEST_TAG = $(IMAGE_REGISTRY)/$(ORG_NAME)/$(APP_NAME):latest
IMAGE_MASTER_TAG = $(IMAGE_REGISTRY)/$(ORG_NAME)/$(APP_NAME):master
IMAGE_RELEASE_TAG = $(IMAGE_REGISTRY)/$(ORG_NAME)/$(APP_NAME):$(RELEASE_TAG)
LDFLAGS=-ldflags "-w -s -X main.Version=${TAG}"
# SERVER
# SERVER setup
.PHONY: setup
setup: setup-githooks
@echo Installing application dependencies:
dep ensure
make build-swagger-api
.PHONY: build-swagger-api
build-swagger-api:
@echo Installing Swagger dep:
go get -u github.com/go-swagger/go-swagger/cmd/swagger
@echo Updating Swagger api:
cd $(APP_FILE_DIR); $(BIN_DIR)/swagger generate spec -m -o ../../api/swagger.yaml
.PHONY: setup-githooks
setup-githooks:
@echo Installing errcheck dependence:
go get -u github.com/kisielk/errcheck
@echo Setting up Git hooks:
ln -sf $$PWD/.githooks/* $$PWD/.git/hooks/
# SERVER build/release
.PHONY: build
build: setup
go build -o $(BINARY) $(APP_FILE)
.PHONY: build-linux
build-linux: setup
env GOOS=linux GOARCH=amd64 go build -o $(BINARY_LINUX_64) $(APP_FILE)
.PHONY: build-image
build-image: build-linux
docker build -t $(IMAGE_LATEST_TAG) --build-arg BINARY=$(BINARY_LINUX_64) .
.PHONY: build-release-image
build-release-image:
docker build -t $(IMAGE_LATEST_TAG) -t $(IMAGE_RELEASE_TAG) --build-arg BINARY=$(BINARY_LINUX_64) .
.PHONY: build-master-image
build-master-image:
docker build -t $(IMAGE_MASTER_TAG) --build-arg BINARY=$(BINARY_LINUX_64) .
.PHONY: push-release-image
push-release-image:
@docker login --username $(QUAY_USERNAME) --password $(QUAY_PASSWORD) $(IMAGE_REGISTRY)
docker push $(IMAGE_LATEST_TAG)
docker push $(IMAGE_RELEASE_TAG)
.PHONY: push-master-image
push-master-image:
@docker login --username $(QUAY_USERNAME) --password $(QUAY_PASSWORD) $(IMAGE_REGISTRY)
docker push $(IMAGE_MASTER_TAG)
.PHONY: release
release: setup
goreleaser --rm-dist
# SERVER test
.PHONY: test-all
test-all: test-unit
make test-integration
.PHONY: test
test: test-unit
.PHONY: test-unit
test-unit:
@echo Running tests:
go test -cover \
$(addprefix $(PKG)/,$(PACKAGES))
.PHONY: test-integration
test-integration:
@echo Running tests:
go test -failfast -cover -tags=integration \
$(addprefix $(PKG)/,$(PACKAGES))
.PHONY: test-integration-cover
test-integration-cover:
echo "mode: count" > coverage-all.out
$(foreach pkg,$(PACKAGES),\
go test -failfast -tags=integration -coverprofile=coverage.out -covermode=count $(addprefix $(PKG)/,$(pkg)) || exit 1;\
tail -n +2 coverage.out >> coverage-all.out;)
make cleanup-coverage-file
.PHONY: cleanup-coverage-file
cleanup-coverage-file:
@echo "Cleaning up output of coverage report"
./scripts/cleanup-coverage-file.sh
# SERVER misc
.PHONY: generate
generate:
go generate $(APP_FILE)
.PHONY: errcheck
errcheck:
@echo errcheck
@errcheck -ignoretests $$(go list ./...)
.PHONY: vet
vet:
@echo go vet
go vet $$(go list ./... | grep -v /vendor/)
.PHONY: fmt
fmt:
@echo go fmt
go fmt $$(go list ./... | grep -v /vendor/)
.PHONY: clean
clean:
-rm -f ${BINARY}
-rm -rf .vendor-new
-rm -rf vendor/
## UI
.PHONY:
ui-npm-install:
cd ui && npm install
.PHONY:
ui-npm-ci:
cd ui && npm ci
.PHONY: ui
ui: ui-npm-ci
cd ui && npm run build
.PHONY: ui-check-code-style
ui-check-code-style: ui
cd ui && npm run lint
.PHONY: ui-test-cover
ui-test-cover: ui-npm-ci
cd ui && npm run coverage
.PHONY: serve
serve: build ui
export STATIC_FILES_DIR=$(CURDIR)/ui/build; ./mobile-security-service -kubeconfig ~/.kube/config