-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
145 lines (117 loc) · 4.13 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
BUILD_DIR = build
SERVICES = gateway usersvc
DOCKERS_CLEANBUILD = $(addprefix docker_prod_,$(SERVICES))
DOCKERS_DEV = $(addprefix docker_dev_,$(SERVICES))
DOCKERS_DEBUG = $(addprefix docker_debug_,$(SERVICES))
STAGES = dev debug prod
COMPOSEUP = $(addsuffix -compose-up,$(STAGES))
COMPOSEDOWN = $(addsuffix -compose-down,$(STAGES))
CGO_ENABLED ?= 0
GOOS ?= linux
# GOOS ?= darwin
TAG_PREFIX = mircosvc
define compile_service
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) go build -ldflags "-s -w" -o \
${BUILD_DIR}/$(TAG_PREFIX)-$(1) servers/$(1)/cmd/main.go
endef
define compile_debug_service
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) go build -gcflags "all=-N -l" -o \
${BUILD_DIR}/$(TAG_PREFIX)-$(1) cmd/$(1)/main.go
endef
define make_docker_cleanbuild
docker build --no-cache --build-arg SVC_NAME=$(subst docker_prod_,,$(1)) --tag=kum0/$(TAG_PREFIX)-$(subst \
docker_prod_,,$(1)) -f deployments/docker/Dockerfile .
endef
define make_docker_dev
docker build --build-arg SVC_NAME=$(subst docker_dev_,,$(1)) --tag=kum0/$(TAG_PREFIX)-$(subst docker_dev_,,$(1)) \
-f deployments/docker/Dockerfile.dev ./build
endef
define make_docker_debug
docker build --build-arg SVC_NAME=$(subst docker_debug_,,$(1)) --tag=kum0/$(TAG_PREFIX)-debug-$(subst \
docker_debug_,,$(1)) -f deployments/docker/Dockerfile.debug ./build
endef
all: $(SERVICES)
.PHONY: all $(SERVICES) dockers dockers_dev dockers_debug
cleandocker: cleanghost
# Stop all containers (if running)
docker-compose -f deployments/docker/docker-compose.yaml stop
# Remove containers
docker ps -f name=gokitconsul -aq | xargs docker rm
# Remove old images
docker images -q kum0/$(TAG_PREFIX)-* | xargs docker rmi
# Clean ghost docker images
cleanghost:
# Remove exited containers
docker ps -f status=dead -f status=exited -aq | xargs docker rm -v
# Remove unused images
docker images -f dangling=true -q | xargs docker rmi
# Remove unused volumes
docker volume ls -f dangling=true -q | xargs docker volume rm
install:
cp ${BUILD_DIR}/* $(GOBIN)
test:
go test -v -race -tags test $(shell go list ./... | grep -v 'vendor\|cmd')
# compile proto
PD_SOURCES:=$(shell find ./pb -type d)
proto:
@for var in $(PD_SOURCES); do \
if [ -f "$$var/compile.sh" ]; then \
cd $$var && ./compile.sh; \
echo "complie $$var/$$(basename $$var).proto"; \
cd $(PWD); \
fi \
done
# Regenerates OPA data from rego files
HAVE_GO_BINDATA := $(shell command -v go-bindata 2> /dev/null)
generate:
ifndef HAVE_GO_BINDATA
@echo "requires 'go-bindata' (go get -u github.com/kevinburke/go-bindata/go-bindata)"
@exit 1 # fail
else
go generate ./...
endif
$(SERVICES):
$(call compile_service,$(@))
$(DOCKERS_CLEANBUILD):
$(call make_docker_cleanbuild,$(@))
$(DOCKERS_DEV):
$(call compile_service,$(subst docker_dev_,,$(@)))
$(call make_docker_dev,$(subst docker_dev_,,$(@)))
$(DOCKERS_DEBUG):
$(call compile_debug_service,$(subst docker_debug_,,$(@)))
$(call make_docker_debug,$(subst docker_debug_,,$(@)))
services: $(SERVICES)
dockers: $(DOCKERS_CLEANBUILD)
dockers_debug: $(DOCKERS_DEBUG)
dockers_dev: $(DOCKERS_DEV)
define make_docker_compose_up
@if [ $(1) == prod ]; then \
echo "docker-compose -f deployments/docker/docker-compose.yaml up -d"; \
docker-compose -f deployments/docker/docker-compose.yaml up -d; \
else \
echo "docker-compose -f deployments/docker/docker-compose-$(1).yaml up -d"; \
docker-compose -f deployments/docker/docker-compose-$(1).yaml up -d; \
fi
endef
define make_docker_compose_down
@if [ $(1) == prod ]; then \
echo "docker-compose -f deployments/docker/docker-compose.yaml down"; \
docker-compose -f deployments/docker/docker-compose.yaml down; \
else \
echo "docker-compose -f deployments/docker/docker-compose-$(1).yaml down"; \
docker-compose -f deployments/docker/docker-compose-$(1).yaml down; \
fi
endef
$(COMPOSEUP):
$(call make_docker_compose_up,$(subst -compose-up,,$(@)))
$(COMPOSEDOWN):
$(call make_docker_compose_down,$(subst -compose-down,,$(@)))
u:
make dev-compose-up
# make debug-compose-up
# make prod-compose-up
d:
make dev-compose-down
# make debug-compose-down
# make prod-compose-down
restart: d u