@@ -27,6 +27,7 @@ variables:
27
27
GET_SOURCES_ATTEMPTS : " 3"
28
28
KNAPSACK_RSPEC_SUITE_REPORT_PATH : knapsack/${CI_PROJECT_NAME}/rspec_report-master.json
29
29
KNAPSACK_SPINACH_SUITE_REPORT_PATH : knapsack/${CI_PROJECT_NAME}/spinach_report-master.json
30
+ FLAKY_RSPEC_SUITE_REPORT_PATH : rspec_flaky/${CI_PROJECT_NAME}/report-master.json
30
31
31
32
before_script :
32
33
- bundle --version
@@ -45,16 +46,17 @@ stages:
45
46
tags :
46
47
- gitlab-org
47
48
48
- .knapsack- state : &knapsack -state
49
+ .tests-metadata- state : &tests-metadata -state
49
50
services : []
50
51
variables :
51
52
SETUP_DB : " false"
52
53
USE_BUNDLE_INSTALL : " false"
53
- KNAPSACK_S3_BUCKET : " gitlab-ce-cache"
54
+ TESTS_METADATA_S3_BUCKET : " gitlab-ce-cache"
54
55
artifacts :
55
56
expire_in : 31d
56
57
paths :
57
58
- knapsack/
59
+ - rspec_flaky/
58
60
59
61
.use-pg : &use-pg
60
62
services :
@@ -86,7 +88,7 @@ stages:
86
88
except :
87
89
- /(^docs[\/-].*|.*-docs$)/
88
90
89
- .rspec-knapsack : &rspec-knapsack
91
+ .rspec-metadata : &rspec-metadata
90
92
<< : *dedicated-runner
91
93
<< : *pull-cache
92
94
stage : test
@@ -96,8 +98,13 @@ stages:
96
98
- export CI_NODE_TOTAL=${JOB_NAME[-1]}
97
99
- export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
98
100
- export KNAPSACK_GENERATE_REPORT=true
101
+ - export ALL_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/${CI_PROJECT_NAME}/all_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
102
+ - export NEW_FLAKY_RSPEC_REPORT_PATH=rspec_flaky/${CI_PROJECT_NAME}/new_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json
103
+ - export FLAKY_RSPEC_GENERATE_REPORT=true
99
104
- export CACHE_CLASSES=true
100
105
- cp ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH}
106
+ - cp ${FLAKY_RSPEC_SUITE_REPORT_PATH} ${ALL_FLAKY_RSPEC_REPORT_PATH}
107
+ - ' [[ -f $NEW_FLAKY_RSPEC_REPORT_PATH ]] || echo "{}" > ${NEW_FLAKY_RSPEC_REPORT_PATH}'
101
108
- scripts/gitaly-test-spawn
102
109
- knapsack rspec "--color --format documentation"
103
110
artifacts :
@@ -106,20 +113,21 @@ stages:
106
113
paths :
107
114
- coverage/
108
115
- knapsack/
116
+ - rspec_flaky/
109
117
- tmp/capybara/
110
118
111
- .rspec-knapsack -pg : &rspec-knapsack -pg
112
- << : *rspec-knapsack
119
+ .rspec-metadata -pg : &rspec-metadata -pg
120
+ << : *rspec-metadata
113
121
<< : *use-pg
114
122
<< : *except-docs
115
123
116
- .rspec-knapsack -mysql : &rspec-knapsack -mysql
117
- << : *rspec-knapsack
124
+ .rspec-metadata -mysql : &rspec-metadata -mysql
125
+ << : *rspec-metadata
118
126
<< : *use-mysql
119
127
<< : *only-if-want-mysql
120
128
<< : *except-docs
121
129
122
- .spinach-knapsack : &spinach-knapsack
130
+ .spinach-metadata : &spinach-metadata
123
131
<< : *dedicated-runner
124
132
<< : *pull-cache
125
133
stage : test
@@ -140,13 +148,13 @@ stages:
140
148
- knapsack/
141
149
- tmp/capybara/
142
150
143
- .spinach-knapsack -pg : &spinach-knapsack -pg
144
- << : *spinach-knapsack
151
+ .spinach-metadata -pg : &spinach-metadata -pg
152
+ << : *spinach-metadata
145
153
<< : *use-pg
146
154
<< : *except-docs
147
155
148
- .spinach-knapsack -mysql : &spinach-knapsack -mysql
149
- << : *spinach-knapsack
156
+ .spinach-metadata -mysql : &spinach-metadata -mysql
157
+ << : *spinach-metadata
150
158
<< : *use-mysql
151
159
<< : *only-if-want-mysql
152
160
<< : *except-docs
@@ -176,40 +184,70 @@ build-package:
176
184
- //@gitlab-org/gitlab-ce
177
185
- //@gitlab-org/gitlab-ee
178
186
179
- # Prepare and merge knapsack tests
180
- knapsack :
181
- << : *knapsack -state
187
+ # Retrieve knapsack and rspec_flaky reports
188
+ retrieve-tests-metadata :
189
+ << : *tests-metadata -state
182
190
<< : *dedicated-runner
183
191
<< : *except-docs
184
192
stage : prepare
185
193
cache :
186
- key : knapsack
187
- paths :
188
- - knapsack/
194
+ key : tests_metadata
189
195
policy : pull
190
196
script :
191
197
- mkdir -p knapsack/${CI_PROJECT_NAME}/
192
- - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${KNAPSACK_S3_BUCKET }.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH
193
- - wget -O $KNAPSACK_SPINACH_SUITE_REPORT_PATH http://${KNAPSACK_S3_BUCKET }.s3.amazonaws.com/$KNAPSACK_SPINACH_SUITE_REPORT_PATH || rm $KNAPSACK_SPINACH_SUITE_REPORT_PATH
198
+ - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET }.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH
199
+ - wget -O $KNAPSACK_SPINACH_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET }.s3.amazonaws.com/$KNAPSACK_SPINACH_SUITE_REPORT_PATH || rm $KNAPSACK_SPINACH_SUITE_REPORT_PATH
194
200
- ' [[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}'
195
201
- ' [[ -f $KNAPSACK_SPINACH_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_SPINACH_SUITE_REPORT_PATH}'
202
+ - mkdir -p rspec_flaky/${CI_PROJECT_NAME}/
203
+ - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH
204
+ - ' [[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}'
196
205
197
- update-knapsack :
198
- << : *knapsack -state
206
+ update-tests-metadata :
207
+ << : *tests-metadata -state
199
208
<< : *dedicated-runner
200
209
<< : *only-canonical-masters
201
210
stage : post-test
202
211
cache :
203
- key : knapsack
212
+ key : tests_metadata
204
213
paths :
205
214
- knapsack/
215
+ - rspec_flaky/
206
216
policy : push
207
217
script :
208
218
- retry gem install fog-aws mime-types
209
219
- scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json
210
220
- scripts/merge-reports ${KNAPSACK_SPINACH_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/spinach-pg_node_*.json
211
- - ' [[ -z ${KNAPSACK_S3_BUCKET} ]] || scripts/sync-reports put $KNAPSACK_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH $KNAPSACK_SPINACH_SUITE_REPORT_PATH'
221
+ - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/${CI_PROJECT_NAME}/all_node_*.json
222
+ - ' [[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH $KNAPSACK_SPINACH_SUITE_REPORT_PATH'
223
+ - ' [[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH'
212
224
- rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json
225
+ - rm -f rspec_flaky/${CI_PROJECT_NAME}/all_node_*.json
226
+
227
+ flaky-examples-check :
228
+ << : *dedicated-runner
229
+ image : ruby:2.3-alpine
230
+ services : []
231
+ before_script : []
232
+ cache : {}
233
+ variables :
234
+ SETUP_DB : " false"
235
+ USE_BUNDLE_INSTALL : " false"
236
+ NEW_FLAKY_SPECS_REPORT : rspec_flaky/${CI_PROJECT_NAME}/new_rspec_flaky_examples.json
237
+ stage : post-test
238
+ allow_failure : yes
239
+ only :
240
+ - branches
241
+ except :
242
+ - master
243
+ artifacts :
244
+ expire_in : 30d
245
+ paths :
246
+ - rspec_flaky/
247
+ script :
248
+ - ' [[ -f $NEW_FLAKY_SPECS_REPORT ]] || echo "{}" > ${NEW_FLAKY_SPECS_REPORT}'
249
+ - scripts/merge-reports $NEW_FLAKY_SPECS_REPORT rspec_flaky/${CI_PROJECT_NAME}/new_node_*.json
250
+ - scripts/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT
213
251
214
252
setup-test-env :
215
253
<< : *use-pg
@@ -232,69 +270,69 @@ setup-test-env:
232
270
- public/assets
233
271
- tmp/tests
234
272
235
- rspec-pg 0 25 : *rspec-knapsack -pg
236
- rspec-pg 1 25 : *rspec-knapsack -pg
237
- rspec-pg 2 25 : *rspec-knapsack -pg
238
- rspec-pg 3 25 : *rspec-knapsack -pg
239
- rspec-pg 4 25 : *rspec-knapsack -pg
240
- rspec-pg 5 25 : *rspec-knapsack -pg
241
- rspec-pg 6 25 : *rspec-knapsack -pg
242
- rspec-pg 7 25 : *rspec-knapsack -pg
243
- rspec-pg 8 25 : *rspec-knapsack -pg
244
- rspec-pg 9 25 : *rspec-knapsack -pg
245
- rspec-pg 10 25 : *rspec-knapsack -pg
246
- rspec-pg 11 25 : *rspec-knapsack -pg
247
- rspec-pg 12 25 : *rspec-knapsack -pg
248
- rspec-pg 13 25 : *rspec-knapsack -pg
249
- rspec-pg 14 25 : *rspec-knapsack -pg
250
- rspec-pg 15 25 : *rspec-knapsack -pg
251
- rspec-pg 16 25 : *rspec-knapsack -pg
252
- rspec-pg 17 25 : *rspec-knapsack -pg
253
- rspec-pg 18 25 : *rspec-knapsack -pg
254
- rspec-pg 19 25 : *rspec-knapsack -pg
255
- rspec-pg 20 25 : *rspec-knapsack -pg
256
- rspec-pg 21 25 : *rspec-knapsack -pg
257
- rspec-pg 22 25 : *rspec-knapsack -pg
258
- rspec-pg 23 25 : *rspec-knapsack -pg
259
- rspec-pg 24 25 : *rspec-knapsack -pg
260
-
261
- rspec-mysql 0 25 : *rspec-knapsack -mysql
262
- rspec-mysql 1 25 : *rspec-knapsack -mysql
263
- rspec-mysql 2 25 : *rspec-knapsack -mysql
264
- rspec-mysql 3 25 : *rspec-knapsack -mysql
265
- rspec-mysql 4 25 : *rspec-knapsack -mysql
266
- rspec-mysql 5 25 : *rspec-knapsack -mysql
267
- rspec-mysql 6 25 : *rspec-knapsack -mysql
268
- rspec-mysql 7 25 : *rspec-knapsack -mysql
269
- rspec-mysql 8 25 : *rspec-knapsack -mysql
270
- rspec-mysql 9 25 : *rspec-knapsack -mysql
271
- rspec-mysql 10 25 : *rspec-knapsack -mysql
272
- rspec-mysql 11 25 : *rspec-knapsack -mysql
273
- rspec-mysql 12 25 : *rspec-knapsack -mysql
274
- rspec-mysql 13 25 : *rspec-knapsack -mysql
275
- rspec-mysql 14 25 : *rspec-knapsack -mysql
276
- rspec-mysql 15 25 : *rspec-knapsack -mysql
277
- rspec-mysql 16 25 : *rspec-knapsack -mysql
278
- rspec-mysql 17 25 : *rspec-knapsack -mysql
279
- rspec-mysql 18 25 : *rspec-knapsack -mysql
280
- rspec-mysql 19 25 : *rspec-knapsack -mysql
281
- rspec-mysql 20 25 : *rspec-knapsack -mysql
282
- rspec-mysql 21 25 : *rspec-knapsack -mysql
283
- rspec-mysql 22 25 : *rspec-knapsack -mysql
284
- rspec-mysql 23 25 : *rspec-knapsack -mysql
285
- rspec-mysql 24 25 : *rspec-knapsack -mysql
286
-
287
- spinach-pg 0 5 : *spinach-knapsack -pg
288
- spinach-pg 1 5 : *spinach-knapsack -pg
289
- spinach-pg 2 5 : *spinach-knapsack -pg
290
- spinach-pg 3 5 : *spinach-knapsack -pg
291
- spinach-pg 4 5 : *spinach-knapsack -pg
292
-
293
- spinach-mysql 0 5 : *spinach-knapsack -mysql
294
- spinach-mysql 1 5 : *spinach-knapsack -mysql
295
- spinach-mysql 2 5 : *spinach-knapsack -mysql
296
- spinach-mysql 3 5 : *spinach-knapsack -mysql
297
- spinach-mysql 4 5 : *spinach-knapsack -mysql
273
+ rspec-pg 0 25 : *rspec-metadata -pg
274
+ rspec-pg 1 25 : *rspec-metadata -pg
275
+ rspec-pg 2 25 : *rspec-metadata -pg
276
+ rspec-pg 3 25 : *rspec-metadata -pg
277
+ rspec-pg 4 25 : *rspec-metadata -pg
278
+ rspec-pg 5 25 : *rspec-metadata -pg
279
+ rspec-pg 6 25 : *rspec-metadata -pg
280
+ rspec-pg 7 25 : *rspec-metadata -pg
281
+ rspec-pg 8 25 : *rspec-metadata -pg
282
+ rspec-pg 9 25 : *rspec-metadata -pg
283
+ rspec-pg 10 25 : *rspec-metadata -pg
284
+ rspec-pg 11 25 : *rspec-metadata -pg
285
+ rspec-pg 12 25 : *rspec-metadata -pg
286
+ rspec-pg 13 25 : *rspec-metadata -pg
287
+ rspec-pg 14 25 : *rspec-metadata -pg
288
+ rspec-pg 15 25 : *rspec-metadata -pg
289
+ rspec-pg 16 25 : *rspec-metadata -pg
290
+ rspec-pg 17 25 : *rspec-metadata -pg
291
+ rspec-pg 18 25 : *rspec-metadata -pg
292
+ rspec-pg 19 25 : *rspec-metadata -pg
293
+ rspec-pg 20 25 : *rspec-metadata -pg
294
+ rspec-pg 21 25 : *rspec-metadata -pg
295
+ rspec-pg 22 25 : *rspec-metadata -pg
296
+ rspec-pg 23 25 : *rspec-metadata -pg
297
+ rspec-pg 24 25 : *rspec-metadata -pg
298
+
299
+ rspec-mysql 0 25 : *rspec-metadata -mysql
300
+ rspec-mysql 1 25 : *rspec-metadata -mysql
301
+ rspec-mysql 2 25 : *rspec-metadata -mysql
302
+ rspec-mysql 3 25 : *rspec-metadata -mysql
303
+ rspec-mysql 4 25 : *rspec-metadata -mysql
304
+ rspec-mysql 5 25 : *rspec-metadata -mysql
305
+ rspec-mysql 6 25 : *rspec-metadata -mysql
306
+ rspec-mysql 7 25 : *rspec-metadata -mysql
307
+ rspec-mysql 8 25 : *rspec-metadata -mysql
308
+ rspec-mysql 9 25 : *rspec-metadata -mysql
309
+ rspec-mysql 10 25 : *rspec-metadata -mysql
310
+ rspec-mysql 11 25 : *rspec-metadata -mysql
311
+ rspec-mysql 12 25 : *rspec-metadata -mysql
312
+ rspec-mysql 13 25 : *rspec-metadata -mysql
313
+ rspec-mysql 14 25 : *rspec-metadata -mysql
314
+ rspec-mysql 15 25 : *rspec-metadata -mysql
315
+ rspec-mysql 16 25 : *rspec-metadata -mysql
316
+ rspec-mysql 17 25 : *rspec-metadata -mysql
317
+ rspec-mysql 18 25 : *rspec-metadata -mysql
318
+ rspec-mysql 19 25 : *rspec-metadata -mysql
319
+ rspec-mysql 20 25 : *rspec-metadata -mysql
320
+ rspec-mysql 21 25 : *rspec-metadata -mysql
321
+ rspec-mysql 22 25 : *rspec-metadata -mysql
322
+ rspec-mysql 23 25 : *rspec-metadata -mysql
323
+ rspec-mysql 24 25 : *rspec-metadata -mysql
324
+
325
+ spinach-pg 0 5 : *spinach-metadata -pg
326
+ spinach-pg 1 5 : *spinach-metadata -pg
327
+ spinach-pg 2 5 : *spinach-metadata -pg
328
+ spinach-pg 3 5 : *spinach-metadata -pg
329
+ spinach-pg 4 5 : *spinach-metadata -pg
330
+
331
+ spinach-mysql 0 5 : *spinach-metadata -mysql
332
+ spinach-mysql 1 5 : *spinach-metadata -mysql
333
+ spinach-mysql 2 5 : *spinach-metadata -mysql
334
+ spinach-mysql 3 5 : *spinach-metadata -mysql
335
+ spinach-mysql 4 5 : *spinach-metadata -mysql
298
336
299
337
# Static analysis jobs
300
338
.ruby-static-analysis : &ruby-static-analysis
0 commit comments