@@ -25,7 +25,7 @@ main_branches_filter: &main_branches_filter
25
25
- master
26
26
27
27
jobs :
28
- # ####################### PACKAGE MANAGER REGRESSION TESTS ########################
28
+ # ####################### PR OR MERGE TO STAGING ########################
29
29
package_manager_test_apk :
30
30
<< : *default_machine_config
31
31
steps :
@@ -37,10 +37,18 @@ jobs:
37
37
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
38
38
nvm install v10 &&
39
39
npm install &&
40
+ export IMAGE_TAG=$([[ "$CIRCLE_BRANCH" == "staging" ]] && echo "staging-candidate" || echo "discardable") &&
41
+ export KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=snyk/kubernetes-monitor:${IMAGE_TAG}-${CIRCLE_SHA1} &&
42
+ docker pull ${KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG} &&
40
43
npm run test:apk
41
44
- run :
42
45
name : Notify Slack on failure
43
- command : ./scripts/slack-notify-failure.sh "apk-tests"
46
+ command : |
47
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
48
+ ./scripts/slack-notify-failure.sh "staging-apk-tests-${CIRCLE_SHA1}"
49
+ else
50
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
51
+ fi
44
52
when : on_fail
45
53
46
54
package_manager_test_apt :
@@ -54,11 +62,20 @@ jobs:
54
62
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
55
63
nvm install v10 &&
56
64
npm install &&
65
+ export IMAGE_TAG=$([[ "$CIRCLE_BRANCH" == "staging" ]] && echo "staging-candidate" || echo "discardable") &&
66
+ export KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=snyk/kubernetes-monitor:${IMAGE_TAG}-${CIRCLE_SHA1} &&
67
+ docker pull ${KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG} &&
57
68
npm run test:apt
58
69
- run :
59
70
name : Notify Slack on failure
60
- command : ./scripts/slack-notify-failure.sh "apt-tests"
71
+ command : |
72
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
73
+ ./scripts/slack-notify-failure.sh "staging-apt-tests-${CIRCLE_SHA1}"
74
+ else
75
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
76
+ fi
61
77
when : on_fail
78
+
62
79
package_manager_test_rpm :
63
80
<< : *default_machine_config
64
81
steps :
@@ -70,51 +87,93 @@ jobs:
70
87
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
71
88
nvm install v10 &&
72
89
npm install &&
90
+ export IMAGE_TAG=$([[ "$CIRCLE_BRANCH" == "staging" ]] && echo "staging-candidate" || echo "discardable") &&
91
+ export KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=snyk/kubernetes-monitor:${IMAGE_TAG}-${CIRCLE_SHA1} &&
92
+ docker pull ${KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG} &&
73
93
npm run test:rpm
74
94
- run :
75
95
name : Notify Slack on failure
76
- command : ./scripts/slack-notify-failure.sh "rpm-tests"
96
+ command : |
97
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
98
+ ./scripts/slack-notify-failure.sh "staging-rpm-tests-${CIRCLE_SHA1}"
99
+ else
100
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
101
+ fi
77
102
when : on_fail
78
103
79
- # ####################### PR TO STAGING ########################
80
- test_discardable :
104
+ build_image :
81
105
<< : *default_machine_config
82
106
steps :
83
107
- checkout
84
108
- run :
85
- name : TEST DISCARDABLE
109
+ name : BUILD IMAGE
110
+ command : |
111
+ docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} &&
112
+ export IMAGE_TAG=$([[ "$CIRCLE_BRANCH" == "staging" ]] && echo "staging-candidate" || echo "discardable") &&
113
+ IMAGE_NAME_CANDIDATE=snyk/kubernetes-monitor:${IMAGE_TAG}-${CIRCLE_SHA1} &&
114
+ ./scripts/build-image.sh ${IMAGE_NAME_CANDIDATE} &&
115
+ docker push ${IMAGE_NAME_CANDIDATE}
116
+ - run :
117
+ name : Notify Slack on failure
118
+ command : |
119
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
120
+ ./scripts/slack-notify-failure.sh "staging-build-image-${CIRCLE_SHA1}"
121
+ else
122
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
123
+ fi
124
+ when : on_fail
125
+
126
+ unit_tests :
127
+ << : *default_machine_config
128
+ steps :
129
+ - checkout
130
+ - run :
131
+ name : UNIT TESTS
86
132
command : |
87
133
export NVM_DIR="/opt/circleci/.nvm" &&
88
134
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
89
135
nvm install v10 &&
90
136
npm install &&
91
- npm test
137
+ npm run lint &&
138
+ npm run build &&
139
+ npm run test:unit
140
+ - run :
141
+ name : Notify Slack on failure
142
+ command : |
143
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
144
+ ./scripts/slack-notify-failure.sh "staging-unit-tests-${CIRCLE_SHA1}"
145
+ else
146
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
147
+ fi
148
+ when : on_fail
92
149
93
- # ####################### MERGE TO STAGING ########################
94
- test_and_build :
150
+ integration_tests :
95
151
<< : *default_machine_config
96
152
steps :
97
153
- checkout
98
154
- run :
99
- name : TEST AND BUILD
155
+ name : INTEGRATION TESTS
100
156
command : |
101
157
export NVM_DIR="/opt/circleci/.nvm" &&
102
158
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
103
159
nvm install v10 &&
104
160
npm install &&
105
- npm run lint &&
106
- npm run build &&
107
- npm run test:unit &&
108
161
docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} &&
109
- IMAGE_NAME_CANDIDATE=snyk/kubernetes-monitor:staging-candidate-${CIRCLE_SHA1} &&
110
- ./scripts/build-image.sh ${IMAGE_NAME_CANDIDATE} &&
111
- docker push ${IMAGE_NAME_CANDIDATE} &&
112
- ./scripts/slack-notify-push.sh ${IMAGE_NAME_CANDIDATE} &&
113
- KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=${IMAGE_NAME_CANDIDATE} npm run test:integration
162
+ export IMAGE_TAG=$([[ "$CIRCLE_BRANCH" == "staging" ]] && echo "staging-candidate" || echo "discardable") &&
163
+ export KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=snyk/kubernetes-monitor:${IMAGE_TAG}-${CIRCLE_SHA1} &&
164
+ docker pull ${KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG} &&
165
+ npm run test:integration
114
166
- run :
115
167
name : Notify Slack on failure
116
- command : ./scripts/slack-notify-failure.sh "staging-test"
168
+ command : |
169
+ if [[ "$CIRCLE_BRANCH" == "staging" ]]; then
170
+ ./scripts/slack-notify-failure.sh "staging-integration-tests-${CIRCLE_SHA1}"
171
+ else
172
+ echo "Current branch is $CIRCLE_BRANCH so skipping notifying Slack"
173
+ fi
117
174
when : on_fail
175
+
176
+ # ####################### MERGE TO STAGING ########################
118
177
tag_and_push :
119
178
<< : *default_container_config
120
179
steps :
@@ -213,28 +272,54 @@ workflows:
213
272
version : 2
214
273
PR_TO_STAGING :
215
274
jobs :
216
- - test_discardable :
275
+ - build_image :
276
+ << : *main_branches_filter
277
+ - unit_tests :
278
+ << : *main_branches_filter
279
+ - integration_tests :
280
+ requires :
281
+ - build_image
217
282
<< : *main_branches_filter
218
283
- package_manager_test_apk :
284
+ requires :
285
+ - build_image
219
286
<< : *main_branches_filter
220
287
- package_manager_test_apt :
288
+ requires :
289
+ - build_image
221
290
<< : *main_branches_filter
222
291
- package_manager_test_rpm :
292
+ requires :
293
+ - build_image
223
294
<< : *main_branches_filter
224
295
225
296
MERGE_TO_STAGING :
226
297
jobs :
227
- - test_and_build :
298
+ - build_image :
299
+ << : *staging_branch_only_filter
300
+ - unit_tests :
301
+ << : *staging_branch_only_filter
302
+ - integration_tests :
303
+ requires :
304
+ - build_image
228
305
<< : *staging_branch_only_filter
229
306
- package_manager_test_apk :
307
+ requires :
308
+ - build_image
230
309
<< : *staging_branch_only_filter
231
310
- package_manager_test_apt :
311
+ requires :
312
+ - build_image
232
313
<< : *staging_branch_only_filter
233
314
- package_manager_test_rpm :
315
+ requires :
316
+ - build_image
234
317
<< : *staging_branch_only_filter
235
318
- tag_and_push :
236
319
requires :
237
- - test_and_build
320
+ - build_image
321
+ - unit_tests
322
+ - integration_tests
238
323
- package_manager_test_apk
239
324
- package_manager_test_apt
240
325
- package_manager_test_rpm
0 commit comments