-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
157 lines (147 loc) · 5.11 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# first, install Cypress & build Nextjs Production, then run all tests
stages:
- build
- test
- deploy
# to cache, we use environment variables
# to point at the folders we can list as paths in "cache" job settings
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm"
CYPRESS_CACHE_FOLDER: "$CI_PROJECT_DIR/cache/Cypress"
# cache using branch name
# https://gitlab.com/help/ci/caching/index.md
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .npm
- cache/Cypress
- node_modules
- package-lock.json
- .next
# this job installs NPM dependencies, Cypress, and builds Nextjs
install:
image: cypress/base:16.5.0
stage: build
script:
- rm -rf .next
- npm ci
# check Cypress binary path and cached versions
# useful to make sure we are not carrying around old versions
- npx cypress cache path
- npx cypress cache list
- npm run cy:verify
- npm run cy:info
- npm run build
# all jobs that actually run tests can use the same definition
cypress:
image: cypress/base:16.5.0
stage: test
script:
# print CI environment variables for reference
# start the server in the background
- npm run test
artifacts:
when: always
paths:
- coverage/
expire_in: 1 day
linter:
image: node:16.5.0
stage: test
needs: [install]
script:
- npm run lint
cache:
key: ${CI_COMMIT_REF_SLUG}
policy: pull
paths:
- node_modules
- package-lock.json
- .next
when: on_success
#staging:
# stage: deploy
# image: ubuntu:latest
# needs: [cypress, linter]
# before_script:
# # Setup SSH deploy keys
# - apt-get update -y
# - 'which ssh-agent || ( apt-get install -y openssh-client )'
# - 'which rsync || ( apt-get install -y rsync )'
# - eval $(ssh-agent -s)
# - ssh-add <(echo "$SSH_STAGING_PRIVATE_KEY" | base64 -d)
# - mkdir -p ~/.ssh
# - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
# cache:
# key: ${CI_COMMIT_REF_SLUG}
# policy: pull
# paths:
# - node_modules
# - package-lock.json
# - .next
# script:
# - rsync -chvrPt ./markaz-pillar-fe/.env [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt ./markaz-pillar-fe/package.json [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt ./markaz-pillar-fe/next.config.js [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt --delete --links --copy-links ./markaz-pillar-fe/node_modules/ [email protected]:/home/deploy-ci/apps/frontend/node_modules/
# - rsync -chvrPt --delete --links --copy-links ./markaz-pillar-fe/.next/ [email protected]:/home/deploy-ci/apps/frontend/.next/
# - ssh -i staging-key [email protected] "systemctl restart nginx.service && systemctl restart frontend.service"
# when: on_success
# only:
# - master
#
#production:
# stage: deploy
# image: ubuntu:latest
# needs: [cypress, linter]
# before_script:
# # Setup SSH deploy keys
# - apt-get update -y
# - 'which ssh-agent || ( apt-get install -y openssh-client )'
# - 'which rsync || ( apt-get install -y rsync )'
# - eval $(ssh-agent -s)
# - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
# - mkdir -p ~/.ssh
# - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
# cache:
# key: ${CI_COMMIT_REF_SLUG}
# policy: pull
# paths:
# - node_modules
# - package-lock.json
# - .next
# script:
# - rsync -chvrPt ./markaz-pillar-fe/.env [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt ./markaz-pillar-fe/package.json [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt ./markaz-pillar-fe/next.config.js [email protected]:/home/deploy-ci/apps/frontend/
# - rsync -chvrPt --delete --links --copy-links ./markaz-pillar-fe/node_modules/ [email protected]:/home/deploy-ci/apps/frontend/node_modules/
# - rsync -chvrPt --delete --links --copy-links ./markaz-pillar-fe/.next/ [email protected]:/home/deploy-ci/apps/frontend/.next/
# - ssh -i staging-key [email protected] "systemctl restart nginx.service && systemctl restart frontend.service"
# when: on_success
# only:
# - production
sonarCheck:
image: node:16.5.0
stage: deploy
needs: [cypress]
variables:
SONARQUBE_URL: $SONARQUBE_URL
SONARQUBE_PROJECT_KEY: $SONARQUBE_PROJECT_KEY
SONARQUBE_TOKEN: $SONARQUBE_TOKEN
cache:
key: ${CI_COMMIT_REF_SLUG}
policy: pull
paths:
- node_modules
- package-lock.json
- .next
before_script:
- npm install -g sonarqube-scanner
script:
- echo "$SONARQUBE_URL"
- echo "$SONARQUBE_PROJECT_KEY"
- echo "$SONARQUBE_TOKEN"
- sonar-scanner -Dsonar.projectName="Markazpillar FE App" -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.host.url=$SONARQUBE_URL -Dsonar.projectKey=$SONARQUBE_PROJECT_KEY -Dsonar.sources=src
only:
- master
- production