-
Notifications
You must be signed in to change notification settings - Fork 44
/
.gitlab-ci.yml
137 lines (118 loc) · 3.56 KB
/
.gitlab-ci.yml
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
image: docker.matchbooklab.com/ci
##########
# STAGES #
##########
stages:
- test
- build
- e2e
- push
- deploy
- cleanup
########
# TEST #
########
test:
stage: test
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
# whatever is built here will be cached for build stage
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.test.yml build --pull app
- docker-compose -f docker-compose.yml -f docker-compose.test.yml run --no-deps --rm app npm run format:ci
- docker-compose -f docker-compose.yml -f docker-compose.test.yml run --no-deps --rm app npm run test
#########
# BUILD #
#########
build:app:
stage: build
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.production.yml build --pull
build:e2e:
stage: build
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.test.yml build --pull e2e
- docker-compose -f docker-compose.yml -f docker-compose.test.yml build --pull mailhog
e2e:
stage: e2e
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
before_script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d app database mailhog
- sleep 10s
- docker-compose -f docker-compose.yml -f docker-compose.test.yml logs
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm e2e npm test
after_script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
# one last log in case of failure
- docker-compose -f docker-compose.yml -f docker-compose.test.yml logs
# this should remove all of the containers running
- docker-compose -f docker-compose.yml -f docker-compose.test.yml down -v
########
# PUSH #
########
push:
stage: push
only:
- master
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.production.yml push
##########
# DEPLOY #
##########
deploy:
stage: deploy
only:
- master
variables:
DOCKER_TAG: $CI_COMMIT_REF_SLUG
script:
# run this on the production host
- eval $(dmport -i "$PANDORA_MACHINE_CONFIG")
- echo "DOCKER_TAG -> $DOCKER_TAG"
- docker-compose -f docker-compose.yml -f docker-compose.production.yml pull
- docker-compose -f docker-compose.yml -f docker-compose.production.yml up -d
###########
# CLEANUP #
###########
cleanup:
stage: cleanup
variables:
GIT_STRATEGY: none
only:
- master
script:
# run this on the runner host
- eval $(dmport -i "$RUNNER_MACHINE_CONFIG")
# leaving off the -a flag allows us to still make use of cache
- docker system prune -f
# run this on the production host
- eval $(dmport -i "$PANDORA_MACHINE_CONFIG")
- docker system prune -af