-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathconfig.yml
162 lines (155 loc) · 3.99 KB
/
config.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
version: 2.1
orbs:
aws-s3: circleci/[email protected]
commands:
deploy:
parameters:
aws_default_region_env:
type: env_var_name
aws_access_key_env:
type: env_var_name
aws_secret_key_env:
type: env_var_name
aws_s3_bucket_env:
type: env_var_name
environment:
type: string
steps:
- checkout
- restore_cache:
name: Restore yarn package cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Set up dependencies
command: yarn install
- run:
name: Build the project
command: yarn run predeploy:<<parameters.environment>>
- aws-s3/sync:
arguments: |
--delete
from: './build'
aws-region: <<parameters.aws_default_region_env>>
aws-access-key-id: <<parameters.aws_access_key_env>>
aws-secret-access-key: <<parameters.aws_secret_key_env>>
to: 's3://$<<parameters.aws_s3_bucket_env>>'
jobs:
test:
working_directory: ~/repo
docker:
- image: 'circleci/node:14-browsers'
steps:
- checkout
- run: sudo apt-get update
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Set up Dependencies
command: |
yarn install
- run:
name: Test Server
command: |
yarn start
background: true
environment:
NODE_OPTIONS: --max_old_space_size=4096
- run:
name: Build and Lint
command: |
yarn build
- run:
name: Test Frontend
command: |
export CI=true
yarn test-ci
environment:
NODE_OPTIONS: --max_old_space_size=4096
test-coverage:
working_directory: ~/repo
docker:
- image: 'circleci/node:14-browsers'
steps:
- checkout
- run: sudo apt-get update
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Run Jest and Collect Coverage Reports
command: |
export CI=true
yarn install
yarn test-cov-ci
environment:
NODE_OPTIONS: --max_old_space_size=4096
- store_artifacts:
path: coverage
deploy-staging:
docker:
- image: 'circleci/node:14'
steps:
- deploy:
aws_access_key_env: STAGING_AWS_ACCESS_KEY_ID
aws_secret_key_env: STAGING_AWS_SECRET_ACCESS_KEY
aws_default_region_env: STAGING_AWS_DEFAULT_REGION
aws_s3_bucket_env: STAGING_S3_BUCKET_NAME
environment: staging
deploy-production:
docker:
- image: 'circleci/node:14'
steps:
- deploy:
aws_access_key_env: PRODUCTION_AWS_ACCESS_KEY_ID
aws_secret_key_env: PRODUCTION_AWS_SECRET_ACCESS_KEY
aws_default_region_env: PRODUCTION_AWS_DEFAULT_REGION
aws_s3_bucket_env: PRODUCTION_S3_BUCKET_NAME
environment: production
workflows:
version: 2
build_and_test:
jobs:
- test:
filters:
branches:
ignore:
- develop
- main
- test-coverage:
filters:
branches:
ignore:
- develop
- main
deploy-staging:
jobs:
- test:
filters:
branches:
only:
- develop
- deploy-staging:
requires:
- test
filters:
branches:
only:
- develop
deploy-production:
jobs:
- test:
filters:
branches:
only:
- main
- deploy-production:
requires:
- test
filters:
branches:
only:
- main