-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDeployfile
executable file
·131 lines (111 loc) · 3.27 KB
/
Deployfile
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
---
version: 0.4
env:
## Environment variables for all commands
SLACK_WEBHOOK_URL: https://hooks.slack.com/services/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
NAME: keyphrase-extraction
BRANCH: $(git rev-parse HEAD || echo -e '$CI_COMMIT_SHA')
IMAGE: registry.gitlab.com/etherlabs/ether/keyphrase-server
TAG: staging
HOST_PORT: 8080
CONTAINER_PORT: 8080
ACTIVE_ENV: staging
DEBUG: 1
networks:
staging:
env:
ACTIVE_ENV: staging
DEBUG: 1
TAG: staging
NATS_URL: nats://ip-172-30-1-51.ec2.internal:4222
bastion: [email protected]:22
hosts:
production:
env:
ACTIVE_ENV: production
DEBUG: 1
TAG: latest
REDIS_HOST: ether-api-redis-master.production.etherlabs.internal
bastion: [email protected]:22
hosts:
commands:
# Named set of commands to be run remotely
pre-build:
desc: Initialize directory
local: make clean
build:
desc: Build Docker image from current directory, push to Docker Hub
local: make $ACTIVE_ENV
once: true
pull:
desc: Pull latest Docker image
run: docker pull $IMAGE:$TAG
stop:
desc: Stop Docker container
run: docker stop $NAME || exit 0
rm:
desc: Remove Docker container
run: docker rm $NAME || exit 0
start:
desc: Start a stopped Docker container
run: docker start $NAME || exit 0
restart:
desc: Restart Docker container
run: docker restart $NAME || exit 0
stop-rm-run:
desc: Rolling update (stop & remove old Docker container, run new one)
run: >
docker stop $NAME || :; \
docker rm $NAME || :; \
docker run -dit \
-e ACTIVE_ENV=$ACTIVE_ENV \
-e DEBUG=$DEBUG \
-e NATS_URL=$NATS_URL \
--restart=always \
--log-driver=syslog \
--log-opt syslog-address=tcp://127.0.0.1:601 \
--name $NAME $IMAGE:$TAG
serial: 1
ps:
desc: List running Docker containers
run: docker ps | grep $NAME
logs:
desc: Docker logs --tail 500
run: docker logs $NAME
tail-logs:
desc: Tail Docker logs
run: docker logs --tail=200 -f $NAME
bash:
desc: Interactive shell on all hosts
stdin: true
run: bash
exec:
desc: Interactive docker exec on all hosts
stdin: true
run: docker exec -i $NAME sh
pre-deploy-notify:
desc: Notify Slack about pending deployment
local: >
curl -X POST --data-urlencode 'payload={"text": "['$SUP_NETWORK'] ['$BRANCH'] '$SUP_USER': '$NAME' is being deployed"}' \
$SLACK_WEBHOOK_URL
post-deploy-notify:
desc: Notify Slack about deployment status
local: >
curl -X POST --data-urlencode 'payload={"text": "['$SUP_NETWORK'] ['$BRANCH'] '$SUP_USER': '$NAME' has been deployed"}' \
$SLACK_WEBHOOK_URL
post-deploy:
desc: Cleanup resources on the hosts
run: >
docker rmi $(docker images -q --filter dangling=true) || :; \
docker rm $(docker ps -qa --no-trunc --filter "status=exited")
# Aliases to run multiple commands at once
targets:
deploy:
- pre-deploy-notify
- build
- pull
- stop-rm-run
- ps
- post-deploy-notify