Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: master/skia_master_scripts/skia_build_step.py

Issue 313203003: on CompareGMs failure, show link to most recent results on this builder (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: now displayed as a clickable link next to buildstep name Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « master/skia_master_scripts/factory.py ('k') | site_config/global_variables.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """ Skia-specific subclass of BuildStep """ 5 """ Skia-specific subclass of BuildStep """
6 6
7 7
8 from buildbot.status.logfile import STDOUT 8 from buildbot.status.logfile import STDOUT
9 from master.log_parser import retcode_command 9 from master.log_parser import retcode_command
10 import re 10 import re
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 def IsUploadStep(self): 50 def IsUploadStep(self):
51 return self._is_upload_step 51 return self._is_upload_step
52 52
53 def IsRebaselineStep(self): 53 def IsRebaselineStep(self):
54 return self._is_rebaseline_step 54 return self._is_rebaseline_step
55 55
56 def commandComplete(self, cmd): 56 def commandComplete(self, cmd):
57 """ Override of BuildStep's commandComplete method which allows us to parse 57 """ Override of BuildStep's commandComplete method which allows us to parse
58 build properties from the output of this step. """ 58 build properties from the output of this step. """
59 if (cmd.rc not in (0, retcode_command.ReturnCodeCommand.RETCODE_WARNINGS) 59
60 and self._exception_on_failure): 60 # We make a best effort to parse the properties out of stdout, whether
61 raise Exception('Command marked exception_on_failure failed.') 61 # the command succeeded or failed. If the command succeeded, we
62 if self._get_props_from_stdout and cmd.rc == 0: 62 # definitely expect the property to be found in stdout--if not, raise
63 # an exception.
64 if self._get_props_from_stdout:
63 log = cmd.logs['stdio'] 65 log = cmd.logs['stdio']
64 stdout = ''.join(log.getChunks([STDOUT], onlyText=True)) 66 stdout = ''.join(log.getChunks([STDOUT], onlyText=True))
65 self._changed_props = {} 67 self._changed_props = {}
66 for prop, regex in self._get_props_from_stdout.iteritems(): 68 for prop, regex in self._get_props_from_stdout.iteritems():
67 matches = re.search(regex, stdout) 69 matches = re.search(regex, stdout)
68 if not matches: 70 if not matches:
69 raise Exception('Unable to parse %s from stdout.' % prop) 71 if cmd.rc == 0:
72 raise Exception('Unable to parse %s from stdout.' % prop)
73 continue
70 groups = matches.groups() 74 groups = matches.groups()
71 if len(groups) != 1: 75 if len(groups) != 1:
72 raise Exception('Multiple matches for "%s"' % regex) 76 if cmd.rc == 0:
77 raise Exception('Multiple matches for "%s"' % regex)
78 continue
73 prop_value = groups[0] 79 prop_value = groups[0]
74 self.setProperty(prop, prop_value, ''.join(self.description)) 80 self.setProperty(prop, prop_value, ''.join(self.description))
75 self._changed_props[prop] = prop_value 81 self._changed_props[prop] = prop_value
82
83 if (cmd.rc not in (0, retcode_command.ReturnCodeCommand.RETCODE_WARNINGS)
84 and self._exception_on_failure):
85 raise Exception('Command marked exception_on_failure failed.')
76 retcode_command.ReturnCodeCommand.commandComplete(self, cmd) 86 retcode_command.ReturnCodeCommand.commandComplete(self, cmd)
77 87
78 def getText(self, cmd, results): 88 def getText(self, cmd, results):
79 """ Override of BuildStep's getText method which appends any changed build 89 """ Override of BuildStep's getText method which appends any changed build
80 properties to the description of the BuildStep. """ 90 properties to the description of the BuildStep. """
81 text = self.description 91 text = self.description
82 if self._changed_props: 92 if self._changed_props:
83 text.extend(['%s: %s' % ( 93 text.extend(['%s: %s' % (
84 key, self._changed_props.get(key)) for key in self._changed_props]) 94 key, self._changed_props.get(key)) for key in self._changed_props])
85 return text 95 return text
(...skipping 27 matching lines...) Expand all
113 # If this step uploads results (and thus overwrites the most recently uploaded 123 # If this step uploads results (and thus overwrites the most recently uploaded
114 # results), only run it on scheduled builds (i.e. most recent revision) or if 124 # results), only run it on scheduled builds (i.e. most recent revision) or if
115 # the "force_upload" property was set. 125 # the "force_upload" property was set.
116 if step.IsUploadStep() and \ 126 if step.IsUploadStep() and \
117 not _HasProperty(step, 'scheduler') and \ 127 not _HasProperty(step, 'scheduler') and \
118 not _HasProperty(step, 'force_upload'): 128 not _HasProperty(step, 'force_upload'):
119 return False 129 return False
120 130
121 # Unless we have determined otherwise, run the step. 131 # Unless we have determined otherwise, run the step.
122 return True 132 return True
OLDNEW
« no previous file with comments | « master/skia_master_scripts/factory.py ('k') | site_config/global_variables.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698