Skip to content

Commit a773c73

Browse files
author
Ido Shamun
authored
ci: migrate to circleci (#10)
* Add CircleCI configuration with full CI/CD pipeline * Remove Cloud Build configuration * Add CircleCI badge to readme Closes #9
1 parent 9e25a46 commit a773c73

File tree

6 files changed

+162
-51
lines changed

6 files changed

+162
-51
lines changed

.circleci/config.yml

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
version: 2.1
2+
orbs:
3+
gcp-gcr: circleci/[email protected]
4+
helm: circleci/[email protected]
5+
gcp-cli: circleci/[email protected]
6+
7+
jobs:
8+
build:
9+
docker:
10+
- image: circleci/node:10.12.0
11+
- image: mysql:5.7
12+
environment:
13+
MYSQL_DATABASE: test
14+
MYSQL_ROOT_PASSWORD: 12345
15+
steps:
16+
- checkout
17+
- restore_cache:
18+
key: dependency-cache-{{ checksum "yarn.lock" }}
19+
- run:
20+
name: Install dependencies
21+
command: yarn install
22+
- save_cache:
23+
key: dependency-cache-{{ checksum "yarn.lock" }}
24+
paths:
25+
- ./node_modules
26+
- run:
27+
name: Wait for MySQL
28+
command: |
29+
for i in `seq 1 10`;
30+
do
31+
nc -z localhost 3306 && echo Success && exit 0
32+
echo -n .
33+
sleep 1
34+
done
35+
echo Failed waiting for Postgress && exit 1
36+
- run:
37+
name: Test
38+
command: yarn test --reporter mocha-junit-reporter
39+
environment:
40+
MOCHA_FILE: ./test-results/mocha/results.xml
41+
MYSQL_HOST: localhost
42+
MYSQL_USER: root
43+
MYSQL_PASSWORD: 12345
44+
MYSQL_DATABASE: test
45+
NODE_ENV: test
46+
ADMIN_KEY: 12345
47+
DEFAULT_IMAGE_URL: https://cdn.com/image
48+
DEFAULT_IMAGE_RATIO: 1.2
49+
DEFAULT_IMAGE_PLACEHOLDER: data:image/png;base64,asddasdqw
50+
- store_test_results:
51+
path: ./test-results
52+
- store_artifacts:
53+
path: ./test-results
54+
- run:
55+
name: Build
56+
command: yarn build
57+
- persist_to_workspace:
58+
root: .
59+
paths:
60+
- build
61+
build_and_push_docker:
62+
machine: true
63+
steps:
64+
- checkout
65+
- attach_workspace:
66+
at: .
67+
- gcp-gcr/build-image:
68+
image: $CIRCLE_PROJECT_REPONAME
69+
tag: $CIRCLE_SHA1
70+
- gcp-gcr/gcr-auth
71+
- gcp-gcr/push-image:
72+
image: $CIRCLE_PROJECT_REPONAME
73+
tag: $CIRCLE_SHA1
74+
deploy_helm:
75+
docker:
76+
- image: google/cloud-sdk
77+
steps:
78+
- checkout
79+
- gcp-cli/initialize
80+
- run:
81+
name: Decrypt variables
82+
command: gcloud kms decrypt --ciphertext-file=./helm/values/prod.yaml.enc --plaintext-file=./helm/values/prod.yaml --location=global --keyring=daily-ci --key=daily-api-ci --project daily-ops
83+
- run:
84+
name: Get cluster credentials
85+
command: gcloud container clusters get-credentials prod
86+
- helm/install-helm-client:
87+
version: v2.9.1
88+
- run:
89+
name: Update Helm release
90+
command: helm upgrade $CIRCLE_PROJECT_REPONAME ./helm/$CIRCLE_PROJECT_REPONAME --namespace daily -f ./helm/values/prod.yaml --set-string image.tag=$CIRCLE_SHA1 -i
91+
workflows:
92+
build:
93+
jobs:
94+
- build
95+
- build_and_push_docker:
96+
requires:
97+
- build
98+
context: GCR
99+
- deploy_helm:
100+
requires:
101+
- build_and_push_docker
102+
context: PROD
103+
filters:
104+
branches:
105+
only:
106+
- master
107+
- gcp-gcr/add-image-tag:
108+
requires:
109+
- build_and_push_docker
110+
context: GCR
111+
image: $CIRCLE_PROJECT_REPONAME
112+
source-tag: $CIRCLE_SHA1
113+
target-tag: latest
114+
filters:
115+
branches:
116+
only:
117+
- master

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Daily API
2+
3+
[![CircleCI](https://circleci.com/gh/dailynowco/daily-api.svg?style=svg)](https://circleci.com/gh/dailynowco/daily-api)

cloudbuild.yaml

-50
This file was deleted.

helm/values/prod.yaml.enc

0 Bytes
Binary file not shown.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
"husky": "^1.0.0-rc.14",
6666
"knex-cleaner": "^1.1.4",
6767
"mocha": "^4.0.1",
68+
"mocha-junit-reporter": "^1.23.0",
6869
"nock": "^9.4.2",
6970
"nodemon": "^1.12.1",
7071
"sinon": "^4.0.1",

yarn.lock

+41-1
Original file line numberDiff line numberDiff line change
@@ -1490,6 +1490,11 @@ chalk@^1.1.3:
14901490
strip-ansi "^3.0.0"
14911491
supports-color "^2.0.0"
14921492

1493+
charenc@~0.0.1:
1494+
version "0.0.2"
1495+
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
1496+
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
1497+
14931498
check-error@^1.0.1, check-error@^1.0.2:
14941499
version "1.0.2"
14951500
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
@@ -1780,6 +1785,11 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
17801785
shebang-command "^1.2.0"
17811786
which "^1.2.9"
17821787

1788+
crypt@~0.0.1:
1789+
version "0.0.2"
1790+
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
1791+
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
1792+
17831793
17841794
version "2.0.5"
17851795
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
@@ -3576,6 +3586,11 @@ is-buffer@^1.1.5:
35763586
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
35773587
integrity sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=
35783588

3589+
is-buffer@~1.1.1:
3590+
version "1.1.6"
3591+
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
3592+
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
3593+
35793594
is-builtin-module@^1.0.0:
35803595
version "1.0.0"
35813596
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
@@ -4504,6 +4519,15 @@ map-visit@^1.0.0:
45044519
dependencies:
45054520
object-visit "^1.0.0"
45064521

4522+
md5@^2.1.0:
4523+
version "2.2.1"
4524+
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
4525+
integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
4526+
dependencies:
4527+
charenc "~0.0.1"
4528+
crypt "~0.0.1"
4529+
is-buffer "~1.1.1"
4530+
45074531
45084532
version "0.3.0"
45094533
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -4646,13 +4670,24 @@ mixin-deep@^1.2.0:
46464670
for-in "^1.0.2"
46474671
is-extendable "^1.0.1"
46484672

4649-
[email protected], "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1:
4673+
[email protected], "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
46504674
version "0.5.1"
46514675
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
46524676
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
46534677
dependencies:
46544678
minimist "0.0.8"
46554679

4680+
mocha-junit-reporter@^1.23.0:
4681+
version "1.23.0"
4682+
resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.0.tgz#c5ad7f10b5aa9a7cc6e169b6bf15baf2700266ca"
4683+
integrity sha512-pmpnEO4iDTmLfrT2RKqPsc5relG4crnDSGmXPuGogdda27A7kLujDNJV4EbTbXlVBCZXggN9rQYPEWMkOv4AAA==
4684+
dependencies:
4685+
debug "^2.2.0"
4686+
md5 "^2.1.0"
4687+
mkdirp "~0.5.1"
4688+
strip-ansi "^4.0.0"
4689+
xml "^1.0.0"
4690+
46564691
mocha@^4.0.1:
46574692
version "4.0.1"
46584693
resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b"
@@ -7173,6 +7208,11 @@ xdg-basedir@^3.0.0:
71737208
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
71747209
integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
71757210

7211+
xml@^1.0.0:
7212+
version "1.0.1"
7213+
resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
7214+
integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=
7215+
71767216
xtend@^4.0.0, xtend@~4.0.1:
71777217
version "4.0.1"
71787218
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"

0 commit comments

Comments
 (0)