-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.yml
104 lines (91 loc) · 4.56 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
version: 2.1
orbs:
coverage-reporter: codacy/[email protected]
parameters:
release:
type: boolean
default: false
jobs:
build:
docker:
- image: cimg/node:lts
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "server/package.json" }}
- v1-dependencies-{{ checksum "client/package.json" }}
- v1-dependencies-
- run:
name: Install Server Dependencies
command: cd server; npm install
- run:
name: Install Client Dependencies
command: cd client; npm install --force
- save_cache:
paths:
- server/node_modules
key: v1-dependencies-{{ checksum "server/package.json" }}
- save_cache:
paths:
- client/node_modules
key: v1-dependencies-{{ checksum "client/package.json" }}
# BUILD: SERVER
- run:
name: Generate Public APIDOC
command: cd server; npm run apidoc:public
- run:
name: Test Server API
command: cd server; npm run test; sed -i 's/.cjs/.js/g' reports/coverage/lcov.info
- store_test_results:
path: server/reports
- store_artifacts:
path: server/reports
- coverage-reporter/send_report:
project-token: ${CODACY_PROJECT_TOKEN}
coverage-reports: server/reports/coverage/lcov.info
skip: false
- run:
name: Install Server Dependencies Prod
command: |
rm -rf server/node_modules
cd server; npm install --production
# BUILD: CLIENT
- run:
name: Build Angular Application
command: cd client; npm run build:prod
- run:
name: Run Client Lint
command: cd client; npm run lint
# BUILD: DOCKER
- setup_remote_docker
- run:
name: Run Docker Build
command: |
VERSION=$(node -p -e "require('./server/package.json').version")
# pack application
rm -rf server/public; mv ./client/dist/stjorna ./server/public
cd server && tar -czf ../stjorna-$VERSION.tar.gz *
docker login -u ${DOCKER_USER} -p ${DOCKER_PASS} docker.io
cd ../ && docker build --pull --build-arg VERSION=$VERSION -t docker.io/secanis/stjorna:$VERSION -t docker.io/secanis/stjorna:latest -t docker.io/secanis/stjorna:dev-${CIRCLE_BRANCH/\//-} .
# copy file to store it in circle ci
cp stjorna-$VERSION.tar.gz stjorna.tar.gz
# docker build: if RELEASE then push it
RELEASE=<< pipeline.parameters.release >>
if [ -n "$RELEASE" ]; then
# docker push
docker push docker.io/secanis/stjorna:$VERSION
docker push docker.io/secanis/stjorna:latest
# # github tagging / create release
# API_JSON=$(printf '{"tag_name": "v%s","target_commitish": "master","name": "%s","body": "Release of version %s","draft": false,"prerelease": false}' $VERSION $VERSION $VERSION)
# curl --data "$API_JSON" https://api.github.com/repos/secanis/stjorna/releases?access_token=$GITHUB_KEY >> ./release.json
# # github upload assets
# RELID=$(node -p -e "require('./release.json').id")
# echo "got release id from github $RELID"
# curl --user "$GITHUB_USERNAME:$GITHUB_KEY" -H "Authorization: token $GITHUB_KEY" -H "Content-Type: $(file -b --mime-type stjorna-${VERSION}.tar.gz)" --data-binary @stjorna-${VERSION}.tar.gz https://uploads.github.com/repos/secanis/stjorna/releases/${RELID}/assets?name=stjorna-${VERSION}.tar.gz
fi
# otherwise publish the current branch build
docker push docker.io/secanis/stjorna:dev-${CIRCLE_BRANCH/\//-}
- store_artifacts:
path: stjorna.tar.gz