-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathMakefile
75 lines (56 loc) · 2.45 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
# Add
# export [email protected]
# before calling goals which deploy image to server
.PHONY: check-env download package-docker test push-docker-image-to-registry clean install-graphql push-docker-image-to-server deploy-docker-image run run-demo
BUILDDIR := ./build
EXECUTABLE := event
IMAGE := nkonev/chat-event:changing
IMAGE_TO_PUBLISH := nkonev/chat-event:latest
# should match to compose file from deploy dir
SERVICE_NAME := event
CI_TO_COPY_DIR := /tmp/to-copy
SERVER_TO_COPY_DIR := /tmp/to-deploy/$(SERVICE_NAME)
SSH_OPTIONS := -o BatchMode=yes -o StrictHostKeyChecking=no
SERVER_COMPOSE_DIR := /opt/videochat
STACK_NAME := VIDEOCHATSTACK
download: install-graphql
check-env:
docker version && go env
generate: generate-git generate-graphql
GIT_COMMIT := $(shell git rev-list -1 HEAD)
STATIC_JSON := ./handlers/static/git.json
generate-git:
echo "{\"commit\": \"$(GIT_COMMIT)\", \"microservice\": \"$(SERVICE_NAME)\"}" > $(STATIC_JSON)
install-graphql:
go install github.com/99designs/[email protected]
generate-graphql:
go generate ./...
test:
go test ./... -count=1 -test.v -test.timeout=20s -p 1
package-go:
CGO_ENABLED=0 go build -trimpath -ldflags '-w -extldflags "-static"'
package-docker:
mkdir -p $(BUILDDIR) && \
cp $(EXECUTABLE) $(BUILDDIR) && cp ./Dockerfile $(BUILDDIR) && \
echo "Will build docker $(SERVICE_NAME) image" && \
docker build -t $(IMAGE) $(BUILDDIR)
package: package-go package-docker
push-docker-image-to-registry:
echo "Will push docker $(SERVICE_NAME) image" && \
docker tag $(IMAGE) $(IMAGE_TO_PUBLISH) && \
docker push $(IMAGE_TO_PUBLISH)
push-docker-image-to-server:
echo "Will push docker $(SERVICE_NAME) image directly on the server"
mkdir -p $(CI_TO_COPY_DIR)
docker save $(IMAGE) -o $(CI_TO_COPY_DIR)/$(SERVICE_NAME).tar
ssh $(SSH_OPTIONS) -q ${CONNECT_LINE} 'docker service rm $(STACK_NAME)_$(SERVICE_NAME) ; rm -rf $(SERVER_TO_COPY_DIR) ; mkdir -p $(SERVER_TO_COPY_DIR) && echo "dir created"'
scp $(CI_TO_COPY_DIR)/$(SERVICE_NAME).tar ${CONNECT_LINE}:$(SERVER_TO_COPY_DIR)
ssh $(SSH_OPTIONS) -q ${CONNECT_LINE} 'docker load -i $(SERVER_TO_COPY_DIR)/$(SERVICE_NAME).tar ; rm -rf $(SERVER_TO_COPY_DIR)'
deploy-docker-image:
ssh $(SSH_OPTIONS) -q ${CONNECT_LINE} 'docker stack deploy --compose-file $(SERVER_COMPOSE_DIR)/docker-compose-$(SERVICE_NAME).yml $(STACK_NAME)'
clean:
rm -rf $(STATIC_JSON) $(EXECUTABLE) $(BUILDDIR)
run:
./$(EXECUTABLE)
run-demo: check-env download generate package-go
./$(EXECUTABLE)