-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
120 lines (98 loc) · 3.38 KB
/
Copy pathMakefile
File metadata and controls
120 lines (98 loc) · 3.38 KB
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
ifndef GOARCH
GOARCH=$(shell go env GOARCH)
endif
ifndef GOOS
GOOS := $(shell go env GOOS)
endif
COMMAND_DIRS := $(wildcard cmd/*)
BUILD_TARGETS := $(addprefix build-,$(notdir $(COMMAND_DIRS)))
MYSQL_PASSWORD_PATH := ./secrets/mysql_user_password
# Database variables
DB_HOST ?= localhost
DB_PORT ?= 3306
DB_NAME ?= taskapp
DB_USERNAME ?= taskapp_user
DB_PASSWORD := $(shell if [ -f $(MYSQL_PASSWORD_PATH) ]; then cat $(MYSQL_PASSWORD_PATH); else echo "password"; fi )
ROOT_PACKAGE := github.com/gihyodocker/taskapp
.PHONY: install-tools
install-tools:
@sh hack/install-tools.sh
.PHONY: tidy
tidy:
GO111MODULE=on go mod tidy
.PHONY: vendor
vendor:
GO111MODULE=on go mod vendor
.PHONY: mod
mod:
GO111MODULE=on go mod download
.PHONY: setup-db-tools
setup-db-tools:
go install -tags 'mysql' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.17.0
go install github.com/volatiletech/sqlboiler/v4@v4.15.0
go install github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-mysql@v4.15.0
.PHONY: migrate-schema-up
migrate-schema-up: setup-db-tools
migrate -path ./containers/migrator/history -database mysql://$(DB_USERNAME):$(DB_PASSWORD)@tcp\($(DB_HOST):$(DB_PORT)\)/$(DB_NAME) up
migrate-schema-down: setup-db-tools
migrate -path ./containers/migrator/history -database mysql://$(DB_USERNAME):$(DB_PASSWORD)@tcp\($(DB_HOST):$(DB_PORT)\)/$(DB_NAME) down
define SQLBOILER_CONFIG
pkgname="model"
output="pkg/model"
[mysql]
dbname = "$(DB_NAME)"
host = "$(DB_HOST)"
port = $(DB_PORT)
user = "$(DB_USERNAME)"
pass = "$(DB_PASSWORD)"
sslmode = "false"
blacklist = ["schema_migrations"]
endef
export SQLBOILER_CONFIG
.PHONY: sqlboiler.toml
sqlboiler.toml:
@echo "$$SQLBOILER_CONFIG" > $@
.PHONY: generate-db-model
generate-db-model: sqlboiler.toml
@sqlboiler mysql --no-tests
@rm sqlboiler.toml
.PHONY: $(BUILD_TARGETS)
$(BUILD_TARGETS): build-%:
CGO_ENABLED=0 GO111MODULE=on GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o ./bin/$* -mod=vendor cmd/$*/main.go
.PHONY: make-mysql-passwords
make-mysql-passwords:
@mkdir -p ./secrets
@go run cmd/tools/main.go mysql generate-password
@cp -R ./secrets ./k8s/kustomize/base/mysql/
@cp -R ./secrets ./k8s/kustomize/base/migrator/
.PHONY: api-config-local.yaml
api-config-local.yaml:
@go run cmd/api/main.go config \
--database-password $(DB_PASSWORD) \
--output-file ./api-config-local.yaml
.PHONY: api-config.yaml
api-config.yaml:
@go run cmd/api/main.go config \
--database-host mysql \
--database-password $(DB_PASSWORD) \
--output-file ./api-config.yaml
@cp ./api-config.yaml ./k8s/kustomize/base/api/
.PHONY: serve-api
serve-api:
@go run cmd/api/main.go server \
--config-file ./api-config-local.yaml
.PHONY: serve-web
serve-web:
@go run cmd/web/main.go server \
--assets-dir $(PWD)/assets \
.PHONY: make-k8s-mysql-secret
make-k8s-mysql-secret:
@kubectl create secret generic mysql --dry-run=client -o yaml \
--from-literal=root_password=$(shell cat ./secrets/mysql_root_password) \
--from-literal=user_password=$(DB_PASSWORD) > ./k8s/plain/local/mysql-secret.yaml
@cp ./k8s/plain/local/mysql-secret.yaml ./k8s/plain/aks/mysql-secret.yaml
.PHONY: make-k8s-api-config
make-k8s-api-config:
@kubectl create secret generic api-config --dry-run=client -o yaml \
--from-file=api-config.yaml=./api-config.yaml > ./k8s/plain/local/api-config-secret.yaml
@cp ./k8s/plain/local/api-config-secret.yaml ./k8s/plain/aks/api-config-secret.yaml