/
circle.yml
134 lines (122 loc) · 3.95 KB
/
circle.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
version: 2.1
jobs:
test:
docker:
- image: node:12.14.1
- image: selenium/standalone-chrome
- image: redis:4.0.1
- image: postgres:11.1
environment:
POSTGRES_USER: docker
POSTGRES_PASSWORD: docker
steps:
- checkout
# download and cache dependencies
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Install Dependencies
command: yarn install --frozen-lockfile
- save_cache:
name: Save Yarn Package Cache
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
# run repo tests
# - run: npm run test
# run api tests in docker-compose
- setup_remote_docker
- run:
name: Install Docker Compose
command: |
set -x
curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
- run:
name: Start docker resources
command: |
set -e
docker-compose -f circleci-docker-compose.yml up -d redis
docker-compose -f circleci-docker-compose.yml up -d chrome
docker-compose -f circleci-docker-compose.yml up -d postgres
- run:
name: Run epoch migration
command: |
set -e
docker-compose -f circleci-docker-compose.yml up epoch
- run:
name: Start epochtalk
command: |
set -e
docker-compose -f circleci-docker-compose.yml up -d epochtalk
- run:
name: Create admin user
command: |
set -e
docker-compose -f circleci-docker-compose.yml exec epochtalk /bin/bash -c "./wait-for-it.sh localhost:8080 -t 120 && node cli create-user admin admin@epochtalk.com --password password --admin"
- run:
name: run test
command: |
set -eo pipefail
docker-compose -f circleci-docker-compose.yml up --exit-code-from epochtalk-api-tests epochtalk-api-tests
- run:
name: run test-client
command: |
set -eo pipefail
docker-compose -f circleci-docker-compose.yml up --exit-code-from protractor protractor
- run:
name: "Failure: output container logs to console"
command: |
docker-compose -f circleci-docker-compose.yml logs epochtalk
when: on_fail
- run:
name: "Failure: output directory to console"
command: |
docker-compose -f circleci-docker-compose.yml exec epochtalk /bin/bash -c "ls; pwd"
when: on_fail
- slack/status:
fail_only: false
- slack/status:
fail_only: true
channel: 'epochtalk-build-fails'
release:
docker:
- image: circleci/node:12.14.1
steps:
- checkout
- run: yarn install
- run:
command: npx semantic-release
no_output_timeout: 20m
- run:
name: Get aws cli
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& sudo ./aws/install
fi
- run:
name: build docs
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
yarn run docs:build:all
fi
- run:
name: deploy docs
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
aws s3 sync docs/.vuepress/dist $DOCS_S3_URI --region $DOCS_S3_REGION --delete
fi
orbs:
slack: circleci/slack@3.4.2
workflows:
version: 2
release:
jobs:
- test
- release:
requires:
- test