Merge lp:~1chb1n/ubuntu-openstack-ci/mp-deploy into lp:ubuntu-openstack-ci
- mp-deploy
- Merge into trunk
Proposed by
Ryan Beisner
Status: | Merged |
---|---|
Merged at revision: | 35 |
Proposed branch: | lp:~1chb1n/ubuntu-openstack-ci/mp-deploy |
Merge into: | lp:ubuntu-openstack-ci |
Diff against target: |
630 lines (+278/-96) 8 files modified
admin/820-tarmac-credentials-distribute.sh (+32/-0) job-parts/amulet_test.sh (+14/-5) job-parts/lint_check.sh (+8/-6) job-parts/trigger_by_mp_scanner.sh (+5/-5) job-parts/unit_test.sh (+14/-5) mp_comment.py (+124/-56) populate/mappings.yaml (+66/-9) populate/mp-comment.tmpl (+15/-10) |
To merge this branch: | bzr merge lp:~1chb1n/ubuntu-openstack-ci/mp-deploy |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ryan Beisner (community) | Approve | ||
Review via email: mp+238763@code.launchpad.net |
Commit message
Description of the change
unleash mp commentator
To post a comment you must log in.
Revision history for this message
Ryan Beisner (1chb1n) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'admin/820-tarmac-credentials-distribute.sh' |
2 | --- admin/820-tarmac-credentials-distribute.sh 1970-01-01 00:00:00 +0000 |
3 | +++ admin/820-tarmac-credentials-distribute.sh 2014-10-17 19:16:56 +0000 |
4 | @@ -0,0 +1,32 @@ |
5 | +#!/bin/bash -e |
6 | +echo $0 |
7 | + |
8 | +# Copy launchpad credentials file to all nodes |
9 | +# Requires that you have placed credentials in the populate dir |
10 | + |
11 | +. $(dirname $0)/../env-common |
12 | + |
13 | +f_name="credentials" |
14 | +f_dst_dir="${JENKINS_HOME}/.config/tarmac" |
15 | +f_dst="${f_dst_dir}/${f_name}" |
16 | +f_tmp="${U_HOME}/${f_name}" |
17 | +f_src_dir="../populate" |
18 | +f_src="${f_src_dir}/${f_name}" |
19 | + |
20 | +if [ ! -f "$f_src" ]; then |
21 | + echo "Local source file ${f_src} not found." |
22 | + pwd |
23 | + exit 1 |
24 | +fi |
25 | + |
26 | +for unit in $UNITS; do |
27 | + echo "making tarmac config directory on ${unit}!" |
28 | + juju ssh $unit "sudo su - jenkins -c 'mkdir -p /var/lib/jenkins/.config/tarmac'" |
29 | + echo "copying ${f_src} into ${unit}" |
30 | + juju scp $f_src ${unit}:${f_tmp} |
31 | + echo "adjusting permissions" |
32 | + juju ssh $unit "sudo mv $f_tmp $f_dst &&\ |
33 | + sudo chown jenkins:jenkins -R ${f_dst} &&\ |
34 | + sudo chmod 600 ${f_dst}" |
35 | +done |
36 | + |
37 | |
38 | === modified file 'job-parts/amulet_test.sh' |
39 | --- job-parts/amulet_test.sh 2014-10-09 20:54:32 +0000 |
40 | +++ job-parts/amulet_test.sh 2014-10-17 19:16:56 +0000 |
41 | @@ -1,11 +1,13 @@ |
42 | #!/bin/bash -e |
43 | |
44 | +touch $WORKSPACE/try-amul |
45 | + |
46 | env | grep -v "PASSWORD" | sort 2>&1 | tee env.$BUILD_NUMBER |
47 | |
48 | # Make sure expected env vars exist |
49 | if [[ -z "$BASE_NAME" ]] || [[ -z "$BRANCH" ]]; then |
50 | echo "No BRANCH and/or BASE_NAME env vars." |
51 | - touch $WORKSPACE/fyi.env-vars.bad |
52 | + touch $WORKSPACE/fyi-amul.env-vars.bad |
53 | else |
54 | # env vars are ok |
55 | mkdir -pv $JENKINS_HOME/checkout || true |
56 | @@ -27,7 +29,7 @@ |
57 | |
58 | if [[ ! -f $MAKEFILE ]]; then |
59 | echo "No Makefile found." |
60 | - touch $WORKSPACE/fyi.makefile.missing |
61 | + touch $WORKSPACE/fyi-amul.makefile.missing |
62 | else |
63 | # makefile exists |
64 | cd $CO_DIR |
65 | @@ -38,13 +40,13 @@ |
66 | |
67 | if [[ -z $has_amulet ]]; then |
68 | echo "No amulet test detected in Makefile." |
69 | - touch $WORKSPACE/fyi.amulet-test.missing |
70 | + touch $WORKSPACE/fyi-amul.amulet-test.missing |
71 | else |
72 | # amulet test |
73 | make test 2>&1 | tee $WORKSPACE/make-test.$BUILD_NUMBER |
74 | if [[ "${PIPESTATUS[0]}" != "0" ]]; then |
75 | echo "Amulet test failed." |
76 | - touch $WORKSPACE/fyi.amulet-test.failed |
77 | + touch $WORKSPACE/fyi-amul.amulet-test.failed |
78 | fi |
79 | fi |
80 | fi |
81 | @@ -53,10 +55,17 @@ |
82 | # Set build description |
83 | ${OSCI_ROOT}/job-parts/b_d.sh || true |
84 | |
85 | +# Post mp comment if triggered by a merge proposal |
86 | +if [[ -n "$MP_TRIGGER" ]]; then |
87 | + # Dry run, debug enabled, ftm. |
88 | + cd $OSCI_ROOT |
89 | + ./mp_comment.py || true |
90 | +fi |
91 | + |
92 | # Check for failures |
93 | if [[ "$(ls $WORKSPACE -1)" == *.failed* ]] || \ |
94 | [[ "$(ls $WORKSPACE -1)" == *.missing* ]] || \ |
95 | [[ "$(ls $WORKSPACE -1)" == *.bad* ]]; then |
96 | - ls $WORKSPACE -1 |
97 | + echo "Exiting 1" |
98 | exit 1 |
99 | fi |
100 | |
101 | === modified file 'job-parts/lint_check.sh' |
102 | --- job-parts/lint_check.sh 2014-10-17 14:15:17 +0000 |
103 | +++ job-parts/lint_check.sh 2014-10-17 19:16:56 +0000 |
104 | @@ -1,11 +1,13 @@ |
105 | #!/bin/bash -e |
106 | |
107 | +touch $WORKSPACE/try-lint |
108 | + |
109 | env | grep -v "PASSWORD" | sort 2>&1 | tee env.$BUILD_NUMBER |
110 | |
111 | # Make sure expected env vars exist |
112 | if [[ -z "$BASE_NAME" ]] || [[ -z "$BRANCH" ]]; then |
113 | echo "No BRANCH and/or BASE_NAME env vars." |
114 | - touch $WORKSPACE.fyi.env-vars.bad |
115 | + touch $WORKSPACE.fyi-lint.env-vars.bad |
116 | else |
117 | # env vars are ok |
118 | mkdir -pv $JENKINS_HOME/checkout || true |
119 | @@ -27,7 +29,7 @@ |
120 | |
121 | if [[ ! -f $MAKEFILE ]]; then |
122 | echo "No Makefile found." |
123 | - touch $WORKSPACE/fyi.makefile.missing |
124 | + touch $WORKSPACE/fyi-lint.makefile.missing |
125 | else |
126 | # makefile exists |
127 | cd $CO_DIR |
128 | @@ -38,13 +40,13 @@ |
129 | |
130 | if [[ -z $has_flake ]]; then |
131 | echo "No lint test detected in Makefile." |
132 | - touch $WORKSPACE/fyi.lint-check.missing |
133 | + touch $WORKSPACE/fyi-lint.lint-check.missing |
134 | else |
135 | # lint check |
136 | make lint 2>&1 | tee $WORKSPACE/make-lint.$BUILD_NUMBER |
137 | if [[ "${PIPESTATUS[0]}" != "0" ]]; then |
138 | echo "Lint check test failed." |
139 | - touch $WORKSPACE/fyi.lint-check.failed |
140 | + touch $WORKSPACE/fyi-lint.lint-check.failed |
141 | fi |
142 | fi |
143 | fi |
144 | @@ -57,13 +59,13 @@ |
145 | if [[ -n "$MP_TRIGGER" ]]; then |
146 | # Dry run, debug enabled, ftm. |
147 | cd $OSCI_ROOT |
148 | - ./mp_comment.py -0d || true |
149 | + ./mp_comment.py || true |
150 | fi |
151 | |
152 | # Check for failures |
153 | if [[ "$(ls $WORKSPACE -1)" == *.failed* ]] || \ |
154 | [[ "$(ls $WORKSPACE -1)" == *.missing* ]] || \ |
155 | [[ "$(ls $WORKSPACE -1)" == *.bad* ]]; then |
156 | - ls $WORKSPACE -1 |
157 | + echo "Exiting 1" |
158 | exit 1 |
159 | fi |
160 | |
161 | === modified file 'job-parts/trigger_by_mp_scanner.sh' |
162 | --- job-parts/trigger_by_mp_scanner.sh 2014-10-10 06:07:20 +0000 |
163 | +++ job-parts/trigger_by_mp_scanner.sh 2014-10-17 19:16:56 +0000 |
164 | @@ -10,19 +10,19 @@ |
165 | ./scan_merge_props.py -0 -d |
166 | ;; |
167 | FORCE_AMULET_ONLY) |
168 | - ./scan_merge_props.py -F -N --XD --XL --XU |
169 | + ./scan_merge_props.py -F -N --XD --XL --XU -d |
170 | ;; |
171 | FORCE_UNIT_ONLY) |
172 | - ./scan_merge_props.py -F -N --XD --XL --XA |
173 | + ./scan_merge_props.py -F -N --XD --XL --XA -d |
174 | ;; |
175 | FORCE_DEPLOY_ONLY) |
176 | - ./scan_merge_props.py -F -N --XA --XL --XU |
177 | + ./scan_merge_props.py -F -N --XA --XL --XU -d |
178 | ;; |
179 | FORCE_LINT_ONLY) |
180 | - ./scan_merge_props.py -F -N --XD --XA --XU |
181 | + ./scan_merge_props.py -F -N --XD --XA --XU -d |
182 | ;; |
183 | FORCE_ALL) |
184 | - ./scan_merge_props.py -F -N |
185 | + ./scan_merge_props.py -F -N -d |
186 | ;; |
187 | FORCE_ALL_DRY_RUN) |
188 | ./scan_merge_props.py -F0d |
189 | |
190 | === modified file 'job-parts/unit_test.sh' |
191 | --- job-parts/unit_test.sh 2014-10-09 20:54:32 +0000 |
192 | +++ job-parts/unit_test.sh 2014-10-17 19:16:56 +0000 |
193 | @@ -1,11 +1,13 @@ |
194 | #!/bin/bash -e |
195 | |
196 | +touch $WORKSPACE/try-unit |
197 | + |
198 | env | grep -v "PASSWORD" | sort 2>&1 | tee env.$BUILD_NUMBER |
199 | |
200 | # Make sure expected env vars exist |
201 | if [[ -z "$BASE_NAME" ]] || [[ -z "$BRANCH" ]]; then |
202 | echo "No BRANCH and/or BASE_NAME env vars." |
203 | - touch $WORKSPACE/fyi.env-vars.bad |
204 | + touch $WORKSPACE/fyi-unit.env-vars.bad |
205 | else |
206 | # env vars are ok |
207 | mkdir -pv $JENKINS_HOME/checkout || true |
208 | @@ -27,7 +29,7 @@ |
209 | |
210 | if [[ ! -f $MAKEFILE ]]; then |
211 | echo "No Makefile found." |
212 | - touch $WORKSPACE/fyi.makefile.missing |
213 | + touch $WORKSPACE/fyi-unit.makefile.missing |
214 | else |
215 | # makefile exists |
216 | cd $CO_DIR |
217 | @@ -39,7 +41,7 @@ |
218 | |
219 | if [[ -z "$nose_in_unit_test" ]] && [[ -z "$nose_in_test" ]]; then |
220 | echo "No unit test detected in Makefile." |
221 | - touch $WORKSPACE/fyi.unit-test.missing |
222 | + touch $WORKSPACE/fyi-unit.unit-test.missing |
223 | else |
224 | # unit test |
225 | if [[ -n "$nose_in_unit_test" ]]; then |
226 | @@ -51,7 +53,7 @@ |
227 | fi |
228 | if [[ "${PIPESTATUS[0]}" != "0" ]]; then |
229 | echo "Unit test failed." |
230 | - touch $WORKSPACE/fyi.unit-test.failed |
231 | + touch $WORKSPACE/fyi-unit.unit-test.failed |
232 | fi |
233 | fi |
234 | fi |
235 | @@ -61,10 +63,17 @@ |
236 | # Set build description |
237 | ${OSCI_ROOT}/job-parts/b_d.sh || true |
238 | |
239 | +# Post mp comment if triggered by a merge proposal |
240 | +if [[ -n "$MP_TRIGGER" ]]; then |
241 | + # Dry run, debug enabled, ftm. |
242 | + cd $OSCI_ROOT |
243 | + ./mp_comment.py || true |
244 | +fi |
245 | + |
246 | # Check for failures |
247 | if [[ "$(ls $WORKSPACE -1)" == *.failed* ]] || \ |
248 | [[ "$(ls $WORKSPACE -1)" == *.missing* ]] || \ |
249 | [[ "$(ls $WORKSPACE -1)" == *.bad* ]]; then |
250 | - ls $WORKSPACE -1 |
251 | + echo "Exiting 1" |
252 | exit 1 |
253 | fi |
254 | |
255 | === modified file 'mp_comment.py' |
256 | --- mp_comment.py 2014-10-16 22:22:32 +0000 |
257 | +++ mp_comment.py 2014-10-17 19:16:56 +0000 |
258 | @@ -16,18 +16,20 @@ |
259 | USAGE = '''Usage: %prog [options] |
260 | |
261 | Default behavior: |
262 | - Constructs merge proposal message and posts it as a comment on the MP. |
263 | + Constructs merge proposal message by examining WORKSPACE files. Posts |
264 | + comment on the merge proposal. |
265 | |
266 | For example: |
267 | - |
268 | - %prog |
269 | + %prog -0d |
270 | + Dry run with debug output. Displays comment but does not save or post it. |
271 | + |
272 | + %prog -Xd |
273 | + Dry run with debug output. Creates comment file but does not post it. |
274 | + |
275 | + %prog -q |
276 | + Less noisy output. Create message, comment file, and post it. |
277 | ''' |
278 | |
279 | -LLIMIT = 25 |
280 | -TTYPES = {'lint': 'make-lint.*', |
281 | - 'unit': 'unit-test.*', |
282 | - 'amulet': 'make-test.*' |
283 | - } |
284 | |
285 | try: |
286 | WORKSPACE = os.environ['WORKSPACE'] |
287 | @@ -54,13 +56,19 @@ |
288 | JOB_NAME = 'manual-job' |
289 | |
290 | |
291 | -def create_mp_comment_file(contexts, source, out_file): |
292 | +def create_mp_comment_file(contexts, source, out_file, params): |
293 | '''Create MP comment file, return comment filename |
294 | ''' |
295 | + (opts, args) = params |
296 | + |
297 | + if opts.dry: |
298 | + out_file = tempfile.mktemp() |
299 | + logging.info('Dry run, rendering to {} instead'.format(out_file)) |
300 | + |
301 | templates_dir = 'populate' |
302 | for idx, context in enumerate(contexts): |
303 | target = os.path.join(WORKSPACE, out_file.format(idx)) |
304 | - logging.debug('Rendering file: {}'.format(target)) |
305 | + logging.info('Rendering file: {}'.format(target)) |
306 | osci_utils.render(source, target, context, templates_dir) |
307 | return target |
308 | |
309 | @@ -74,9 +82,12 @@ |
310 | help="Enable debug logging", |
311 | dest="debug", action="store_true", default=False) |
312 | parser.add_option('-0', '--dry-run', |
313 | - help='Construct and display the message, but do not ' |
314 | + help='Construct and display the message, but do not' |
315 | 'create comment file and do not post comment.', |
316 | dest='dry', action='store_true', default=False) |
317 | + parser.add_option('-X', '--no-post', |
318 | + help='Do not post comment.', |
319 | + dest='no_post', action='store_true', default=False) |
320 | parser.add_option('-q', '--quiet', |
321 | help='Do not display the message to console.', |
322 | dest='quiet', action='store_true', default=False) |
323 | @@ -96,6 +107,8 @@ |
324 | |
325 | logging.info('Workspace dir: {}'.format(WORKSPACE)) |
326 | |
327 | + conf_map = osci_utils.read_yaml(osci_utils.MAP_FILE) |
328 | + |
329 | # gather info and results for comment |
330 | logging.info('Gathering env var items') |
331 | contexts = [] |
332 | @@ -110,71 +123,126 @@ |
333 | 'JOB_NAME': JOB_NAME |
334 | }) |
335 | |
336 | + # construct results blurb by examining artifacts |
337 | logging.info('Constructing results blurb') |
338 | + summary = [] |
339 | results = [] |
340 | - fyis = glob(os.path.join(WORKSPACE, 'fyi.*.*')) |
341 | - if len(fyis) > 0: |
342 | - for fyi in fyis: |
343 | - _line = ' FYI: {}'.format( |
344 | - os.path.split(fyi)[1][4:].replace('.', ' ')) |
345 | - logging.debug(_line) |
346 | - results.append(_line) |
347 | - else: |
348 | - logging.info('No "fyi" files found to include.') |
349 | - |
350 | - for ttype, glob_str in TTYPES.iteritems(): |
351 | - res_files = glob(os.path.join(WORKSPACE, glob_str)) |
352 | - for res_file in res_files: |
353 | - _line = ' Test type: {}\n'.format(ttype) |
354 | - logging.debug(_line) |
355 | - results.append(_line) |
356 | - _line = ('Results (limited to the last ' |
357 | - '{} lines) from {}:'.format(LLIMIT, res_file)) |
358 | - logging.debug(_line) |
359 | - results.append(_line) |
360 | - with open(res_file) as _file: |
361 | - res_lines = [f_line.rstrip() for f_line in _file][-LLIMIT:] |
362 | - logging.debug(res_lines) |
363 | - results.extend(res_lines) |
364 | - |
365 | - contexts[0]['results_summary'] = '\n'.join(results) |
366 | - |
367 | - logging.debug('contexts: {}'.format(contexts)) |
368 | + something_ran = False |
369 | + for trigger_test, tt_attrs in conf_map['mp-trigger-tests'].iteritems(): |
370 | + # look for try touchfiles |
371 | + try_files = [] |
372 | + logging.debug('Checking for {} try files'.format(trigger_test)) |
373 | + for try_masq in tt_attrs['try-masq']: |
374 | + these_try_files = glob(os.path.join(WORKSPACE, try_masq)) |
375 | + try_files.extend(these_try_files) |
376 | + if len(try_files) > 0: |
377 | + something_ran = True |
378 | + logging.info('Found {} try file(s)'.format(trigger_test)) |
379 | + else: |
380 | + # did not run |
381 | + logging.info('No {} try file(s) found'.format(trigger_test)) |
382 | + continue |
383 | + # look for result files |
384 | + res_files = [] |
385 | + logging.debug('Checking result masq for {}'.format(trigger_test)) |
386 | + for res_masq in tt_attrs['result-masq']: |
387 | + these_res_files = glob(os.path.join(WORKSPACE, res_masq)) |
388 | + res_files.extend(these_res_files) |
389 | + if len(res_files) > 0: |
390 | + logging.info('Found {} results file(s)'.format(trigger_test)) |
391 | + # handle results files |
392 | + for res_file in res_files: |
393 | + llimit = conf_map['mp-conf']['line-limit'] |
394 | + _line = ('\n{} Results (max last {} lines) from \n{}:'.format( |
395 | + trigger_test.upper(), llimit, res_file)) |
396 | + results.append(_line) |
397 | + with open(res_file) as _file: |
398 | + res_lines = [f_line.rstrip() for f_line in _file][-llimit:] |
399 | + results.extend(res_lines) |
400 | + else: |
401 | + _line = ('\n{} Results not found.'.format(trigger_test.upper())) |
402 | + results.append(_line) |
403 | + logging.info('No {} results files found to ' |
404 | + 'include'.format(trigger_test)) |
405 | + # look for fail touchfiles |
406 | + logging.debug('Checking for {} fyi files'.format(trigger_test)) |
407 | + passed = True |
408 | + for fail_masq in tt_attrs['fail-masq']: |
409 | + logging.debug('Checking fail masq: {}'.format(fail_masq)) |
410 | + fyis = glob(os.path.join(WORKSPACE, fail_masq)) |
411 | + if len(fyis) > 0: |
412 | + passed = False |
413 | + logging.debug('Found {} fyi file(s)'.format(trigger_test)) |
414 | + # handle fyi files |
415 | + for fyi in fyis: |
416 | + _line = ' {} FAIL: {}'.format( |
417 | + trigger_test.upper(), |
418 | + os.path.split(fyi)[1][8:].replace('.', ' ')) |
419 | + logging.debug(_line) |
420 | + summary.append(_line) |
421 | + else: |
422 | + logging.info('No "fyi" files found to ' |
423 | + 'include {}'.format(fail_masq)) |
424 | + # ran and didn't fail |
425 | + if passed: |
426 | + _line = (' {} OK: believed to pass, but you should ' |
427 | + 'confirm results'.format(trigger_test.upper())) |
428 | + summary.append(_line) |
429 | + |
430 | + if not something_ran: |
431 | + logging.error('It appears that nothing ran here.') |
432 | + sys.exit(1) |
433 | + |
434 | + # add summary and results to context for template |
435 | + contexts[0]['results_summary'] = '\n'.join(summary) |
436 | + contexts[0]['results_summary'] += '\n' |
437 | + contexts[0]['results_summary'] += '\n'.join(results) |
438 | |
439 | # create mp comment file |
440 | logging.info('Creating mp-comment file') |
441 | comment_filename = create_mp_comment_file(contexts, |
442 | source='mp-comment.tmpl', |
443 | - out_file='mp-comment.{}') |
444 | + out_file='mp-comment.{}', |
445 | + params=params) |
446 | |
447 | - # read mp comment file |
448 | + # read mp comment file and display to console |
449 | + subject = '[UOSCI] test result for {}'.format(DISPLAY_NAME) |
450 | + logging.debug('Subject: {}'.format(subject)) |
451 | f = open(comment_filename, 'r') |
452 | comment = f.read() |
453 | f.close() |
454 | - |
455 | if not opts.quiet: |
456 | logging.info('Comment:\n') |
457 | + print '-' * 80 |
458 | + print subject |
459 | print comment |
460 | + print '-' * 80 |
461 | + |
462 | + # check for sandbox override (a noise avoider during dev) |
463 | + if conf_map['mp-conf']['mp-comment-sandbox']: |
464 | + lp_branch_url = conf_map['mp-conf']['sandbox-lp-branch-url'] |
465 | + mp_url = conf_map['mp-conf']['sandbox-mp-url'] |
466 | + logging.info('Sandbox is ENABLED: comments, if ' |
467 | + 'enabled, will hit {} instead'.format(mp_url)) |
468 | |
469 | # post mp comment |
470 | - if not opts.dry: |
471 | - logging.debug('Connecting to Launchpad API') |
472 | - launchpad = osci_utils.lpl_connect(anonymous=False) |
473 | - |
474 | - lp_branch_url = "lp:ubuntu-openstack-ci" |
475 | - mp_url = 'https://code.launchpad.net/~1chb1n/ubuntu-openstack-ci/mptest0/+merge/238615' |
476 | - |
477 | - logging.debug('Looking up MP object from LP API') |
478 | - mp = osci_utils.lpl_get_mp(launchpad, mp_url, lp_branch_url) |
479 | - if mp: |
480 | + logging.debug('Connecting to LP via API') |
481 | + launchpad = osci_utils.lpl_connect(anonymous=False) |
482 | + |
483 | + logging.debug('Looking up MP object from LP API') |
484 | + mp = osci_utils.lpl_get_mp(launchpad, mp_url, lp_branch_url) |
485 | + if mp: |
486 | + if not opts.dry and not opts.no_post: |
487 | logging.info('Posting comment to {}'.format(mp_url)) |
488 | - subject = '[UOSCI] test result for {}'.format(DISPLAY_NAME) |
489 | osci_utils.lpl_mp_post_comment(launchpad, mp, subject, comment) |
490 | else: |
491 | - logging.error('Merge proposal not found for ' |
492 | - '{} on {}'.format(mp_url, lp_branch_url)) |
493 | - sys.exit(1) |
494 | + logging.info('Not posting comment due to options') |
495 | + else: |
496 | + logging.error('Merge proposal not found for ' |
497 | + '{} on {}'.format(mp_url, lp_branch_url)) |
498 | + sys.exit(1) |
499 | |
500 | |
501 | if __name__ == '__main__': |
502 | + print 'Ubuntu OSCI Merge Proposal Commentator' |
503 | main() |
504 | |
505 | === modified file 'populate/mappings.yaml' |
506 | --- populate/mappings.yaml 2014-10-10 15:16:27 +0000 |
507 | +++ populate/mappings.yaml 2014-10-17 19:16:56 +0000 |
508 | @@ -13,17 +13,24 @@ |
509 | state-file: 'branch-state' |
510 | mp-state-file: 'mp-state' |
511 | |
512 | +mp-conf: |
513 | + line-limit: 25 |
514 | +# post ALL MP comments to this alternate MP when mp-comment-sandbox is True |
515 | +# ie. contain the noise during osci dev |
516 | + mp-comment-sandbox: False |
517 | + sandbox-lp-branch-url: 'lp:ubuntu-openstack-ci' |
518 | + sandbox-mp-url: 'https://code.launchpad.net/~1chb1n/ubuntu-openstack-ci/mptest0/+merge/238615' |
519 | + |
520 | # merge proposal status to trigger tests |
521 | mp-status-filter: |
522 | - - "Needs review" |
523 | -# - "Work in progress" |
524 | -# - "Approved" |
525 | -# - "Needs review" |
526 | -# - "Rejected" |
527 | -# - "Merged" |
528 | -# - "Code failed to merge" |
529 | -# - "Queued" |
530 | -# - "Superseded" |
531 | + - 'Needs review' |
532 | +# - 'Work in progress' |
533 | +# - 'Approved' |
534 | +# - 'Rejected' |
535 | +# - 'Merged' |
536 | +# - 'Code failed to merge' |
537 | +# - 'Queued' |
538 | +# - 'Superseded' |
539 | |
540 | # the openstack version which shipped with an ubuntu release |
541 | # not used by OSCI code yet |
542 | @@ -105,3 +112,53 @@ |
543 | # - trusty-juno-staging |
544 | - utopic-juno |
545 | # - utopic-juno-proposed |
546 | + |
547 | +mp-trigger-tests: |
548 | + lint: |
549 | + order: 100 |
550 | + funcs: |
551 | + - 'run_lint_test' |
552 | + try-masq: |
553 | + - 'try-lint*' |
554 | + result-masq: |
555 | + - 'make-lint.*' |
556 | + fail-masq: |
557 | + - 'fyi-lint.*.failed' |
558 | + - 'fyi-lint.*.missing' |
559 | + unit: |
560 | + order: 120 |
561 | + funcs: |
562 | + - 'run_un_test' |
563 | + try-masq: |
564 | + - 'try-unit*' |
565 | + result-masq: |
566 | + - 'unit-test.*' |
567 | + fail-masq: |
568 | + - 'fyi-unit.*.failed' |
569 | + - 'fyi-unit.*.missing' |
570 | + amulet: |
571 | + order: 180 |
572 | + funcs: |
573 | + - 'run_amulet_test' |
574 | + try-masq: |
575 | + - 'try-amul*' |
576 | + result-masq: |
577 | + - 'make-test.*' |
578 | + fail-masq: |
579 | + - 'fyi-amul.*.failed' |
580 | + - 'fyi-amul.*.missing' |
581 | + deploy: |
582 | + order: 199 |
583 | + funcs: |
584 | + - 'run_deploy_test' |
585 | + try-masq: |
586 | + - 'try-depl*' |
587 | + result-masq: |
588 | + - 'deployer.*' |
589 | + - 'configure.*' |
590 | + - 'tempstack-configure.*' |
591 | + - 'tempest.*' |
592 | + fail-masq: |
593 | + - 'fyi-depl.*.failed' |
594 | + - 'fyi-depl.*.missing' |
595 | +# - 'fyi-depl.*.bad' |
596 | |
597 | === modified file 'populate/mp-comment.tmpl' |
598 | --- populate/mp-comment.tmpl 2014-10-16 22:14:46 +0000 |
599 | +++ populate/mp-comment.tmpl 2014-10-17 19:16:56 +0000 |
600 | @@ -1,15 +1,20 @@ |
601 | +UOSCI bot says: |
602 | +This MP triggered a test on the Ubuntu OSCI system. Here is a summary of results. |
603 | + |
604 | +{{BUILD_DISPLAY_NAME}} |
605 | {{JOB_NAME}} |
606 | -This MP triggered a test on the Ubuntu OSCI system ({{JENKINS_URL}}), which is currently on a Canonical private network while it is in development. We wanted you to have feedback now, so here is a summary of a test which was triggered by this MP. Tests are triggered if the proposed branch revno/revid changes, or if this MP is placed into "Needs review" status after being otherwise for > 1hr. Human review of results is recommended. |
607 | - |
608 | -{{DISPLAY_NAME}} |
609 | - MP URL: {{MP_TRIGGER}} |
610 | - Build name: {{BUILD_DISPLAY_NAME}} |
611 | - Proposed branch: {{MP_SRC_BR}} |
612 | - |
613 | -Additional details and artifacts are available internally: |
614 | - {{BUILD_URL}} |
615 | + |
616 | +This build: |
617 | +{{BUILD_URL}} |
618 | + |
619 | +MP URL: |
620 | +{{MP_TRIGGER}} |
621 | + |
622 | +Proposed branch: |
623 | +{{MP_SRC_BR}} |
624 | |
625 | Results summary: |
626 | {{results_summary}} |
627 | |
628 | -{{BUILD_URL}} |
629 | +Ubuntu OSCI Jenkins is currently in development on a Canonical private network, but we plan to publish results to a public instance soon. Tests are triggered if the proposed branch rev changes, or if the MP is placed into "Needs review" status after being otherwise for >= 1hr. Human review of results is still recommended. |
630 | +{{JENKINS_URL}} |