-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.common
110 lines (89 loc) · 3.21 KB
/
Makefile.common
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
# this file was generated by atlas-cli
# changes to this file will be overriden by atlas-cli update
#
PROJECT_ROOT ?= $(PWD)
BUILD_PATH ?= bin
DOCKERFILE_PATH ?= $(CURDIR)/docker
# configuration for image names
USERNAME ?= $(USER)
GIT_COMMIT ?= $(shell git describe --dirty=-unsupported --always --tags || echo pre-commit)
IMAGE_VERSION ?= $(GIT_COMMIT)-$(USERNAME)
# configuration for server binary and image
SERVER_BINARY ?= $(BUILD_PATH)/server
SERVER_PATH ?= $(PROJECT_ROOT)/cmd/server
SERVER_DOCKERFILE ?= $(DOCKERFILE_PATH)/Dockerfile
# configuration for the protobuf gentool
SRCROOT_ON_HOST ?= $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
SRCROOT_IN_CONTAINER ?= /go/src/$(PROJECT_ROOT)
DOCKER_RUNNER ?= docker run -u `id -u`:`id -g` --rm -v $(SRCROOT_ON_HOST):$(SRCROOT_IN_CONTAINER)
DOCKER_GENERATOR ?= infoblox/atlas-gentool:latest
GENERATOR ?= $(DOCKER_RUNNER) $(DOCKER_GENERATOR)
# configuration for building on host machine
GO_CACHE ?= -pkgdir $(BUILD_PATH)/go-cache
GO_BUILD_FLAGS ?= $(GO_CACHE) -i -v
GO_TEST_FLAGS ?= -v -cover
GO_PACKAGES ?= $(shell go list ./... | grep -v vendor)
PROTOBUF_ARGS = -I=$(PROJECT_ROOT)/vendor
PROTOBUF_ARGS += --go_out=plugins=grpc:.
PROTOBUF_ARGS += --validate_out="lang=go:."
WITH_DATABASE ?= false
WITH_GATEWAY ?= false
PROTOBUF_FILES = $(PROJECT_ROOT)/api/service.proto
PROTOBUF_FILES += $(PROJECT_ROOT)/api/certificate.proto
ifeq ($(WITH_DATABASE), true)
PROTOBUF_ARGS += --gorm_out=.
endif
ifeq ($(WITH_EXPAND), true)
PROTOBUF_ARGS += --grpc-gateway_out=logtostderr=true:.
endif
ifeq ($(WITH_GATEWAY), true)
PROTOBUF_ARGS += --grpc-gateway_out=logtostderr=true:.
PROTOBUF_ARGS += --swagger_out="atlas_patch=true:."
endif
.PHONY all: all-atlas
all-atlas: vendor-atlas protobuf-atlas docker-atlas
.PHONY fmt: fmt-atlas
fmt-atlas:
@go fmt $(GO_PACKAGES)
.PHONY test: test-atlas
test-atlas: fmt-atlas
@go test $(GO_TEST_FLAGS) $(GO_PACKAGES)
.PHONY docker: docker-atlas
docker-atlas:
@docker build -f $(SERVER_DOCKERFILE) -t $(SERVER_IMAGE):$(IMAGE_VERSION) .
@docker image prune -f --filter label=stage=server-intermediate
.PHONY push: push-atlas
push-atlas:
ifndef IMAGE_REGISTRY
@echo "Please set IMAGE_REGISTRY variable in Makefile.vars to use push command"
else
@docker push $(SERVER_IMAGE)
endif
.PHONY protobuf: protobuf-atlas
protobuf-atlas: vendor-atlas
@$(GENERATOR) \
$(PROTOBUF_ARGS) \
$(PROTOBUF_FILES)
.PHONY vendor: vendor-atlas
vendor-atlas:
@go mod vendor
.PHONY vendor-update: vendor-update-atlas
vendor-update-atlas:
@go mod tidy
.PHONY clean: clean-atlas
clean-atlas:
@docker rmi -f $(shell docker images -q $(SERVER_IMAGE)) || true
.PHONY migrate-up: migrate-up-atlas
migrate-up-atlas:
ifeq ($(WITH_DATABASE), true)
@$(DOCKER_RUNNER) --net="host" ${MIGRATETOOL_IMAGE} --verbose --path=$(MIGRATION_PATH_IN_CONTAINER)/ --database.dsn=$(DATABASE_URL) up
else
@echo "Your application doesn't has database migrations not supprted"
endif
.PHONY migrate-down: migrate-down-atlas
migrate-down-atlas:
ifeq ($(WITH_DATABASE), true)
@$(DOCKER_RUNNER) --net="host" ${MIGRATETOOL_IMAGE} --verbose --path=$(MIGRATION_PATH_IN_CONTAINER)/ --database.dsn=$(DATABASE_URL) down
else
@echo "Your application doesn't has database migrations not supprted"
endif