Index: master/skia_master_scripts/factory.py |
diff --git a/master/skia_master_scripts/factory.py b/master/skia_master_scripts/factory.py |
index a5c78d433721d0fc658647cb4bbbca9f7f6ca064..f4b8479067aef3c69421a5c3fffde4759ffe852d 100644 |
--- a/master/skia_master_scripts/factory.py |
+++ b/master/skia_master_scripts/factory.py |
@@ -241,7 +241,7 @@ class SkiaFactory(BuildFactory): |
halt_on_failure=False, is_upload_step=False, |
is_rebaseline_step=False, get_props_from_stdout=None, |
workdir=None, do_step_if=None, always_run=False, |
- flunk_on_failure=True): |
+ flunk_on_failure=True, exception_on_failure=False): |
""" Add a BuildStep consisting of a python script. |
script: which slave-side python script to run. |
@@ -267,6 +267,11 @@ class SkiaFactory(BuildFactory): |
previous step which had halt_on_failure has failed. |
flunk_on_failure: boolean indicating whether the whole build fails if this |
step fails. |
+ exception_on_failure: boolean indicating whether to raise an exception if |
+ this step fails. This causes the step to go purple instead of red, and |
+ causes the build to stop. Should be used if the build step's failure is |
+ typically transient or results from an infrastructure failure rather |
+ than a code change. |
""" |
arguments = list(self._common_args) |
if args: |
@@ -283,7 +288,8 @@ class SkiaFactory(BuildFactory): |
workdir=workdir, |
do_step_if=do_step_if, |
always_run=always_run, |
- flunk_on_failure=flunk_on_failure) |
+ flunk_on_failure=flunk_on_failure, |
+ exception_on_failure=exception_on_failure) |
def AddFlavoredSlaveScript(self, script, args=None, **kwargs): |
""" Add a flavor-specific BuildStep. |
@@ -433,23 +439,24 @@ class SkiaFactory(BuildFactory): |
def Install(self): |
""" Install the compiled executables. """ |
self.AddFlavoredSlaveScript(script='install.py', description='Install', |
- halt_on_failure=True) |
+ halt_on_failure=True, exception_on_failure=True) |
def DownloadSKPs(self): |
""" Download the SKPs. """ |
self.AddSlaveScript(script='download_skps.py', description='DownloadSKPs', |
- halt_on_failure=True) |
+ halt_on_failure=True, exception_on_failure=True) |
def DownloadSKImageFiles(self): |
""" Download image files for running skimage. """ |
self.AddSlaveScript(script='download_skimage_files.py', |
description='DownloadSKImageFiles', |
- halt_on_failure=True) |
+ halt_on_failure=True, exception_on_failure=True) |
def DownloadBaselines(self): |
""" Download the GM baselines. """ |
self.AddSlaveScript(script='download_baselines.py', |
- description='DownloadBaselines', halt_on_failure=True) |
+ description='DownloadBaselines', halt_on_failure=True, |
+ exception_on_failure=True) |
def RunTests(self): |
""" Run the unit tests. """ |
@@ -467,7 +474,8 @@ class SkiaFactory(BuildFactory): |
def PreRender(self): |
""" Step to run before the render steps. """ |
- self.AddFlavoredSlaveScript(script='prerender.py', description='PreRender') |
+ self.AddFlavoredSlaveScript(script='prerender.py', description='PreRender', |
+ exception_on_failure=True) |
def RenderPictures(self): |
""" Run the "render_pictures" tool to generate images from .skp's. """ |
@@ -482,19 +490,25 @@ class SkiaFactory(BuildFactory): |
def PostRender(self): |
""" Step to run after the render steps. """ |
self.AddFlavoredSlaveScript(script='postrender.py', |
- description='PostRender') |
+ description='PostRender', |
+ exception_on_failure=True) |
def PreBench(self): |
""" Step to run before the benchmarking steps. """ |
- self.AddFlavoredSlaveScript(script='prebench.py', description='PreBench') |
+ self.AddFlavoredSlaveScript(script='prebench.py', |
+ description='PreBench', |
+ exception_on_failure=True) |
def PostBench(self): |
""" Step to run after the benchmarking steps. """ |
- self.AddFlavoredSlaveScript(script='postbench.py', description='PostBench') |
+ self.AddFlavoredSlaveScript(script='postbench.py', |
+ description='PostBench', |
+ exception_on_failure=True) |
def CompareGMs(self): |
"""Compare the actually-generated GM images to the checked-in baselines.""" |
- self.AddSlaveScript(script='compare_gms.py', description='CompareGMs', |
+ self.AddSlaveScript(script='compare_gms.py', |
+ description='CompareGMs', |
is_rebaseline_step=True) |
def CompareAndUploadWebpageGMs(self): |
@@ -530,7 +544,8 @@ class SkiaFactory(BuildFactory): |
halt_on_failure=True, |
get_props_from_stdout={'buildbot_revision': |
'Skiabot scripts updated to (\w+)'}, |
- workdir='build') |
+ workdir='build', |
+ exception_on_failure=True) |
def Update(self): |
""" Update the Skia code on the build slave. """ |
@@ -545,7 +560,8 @@ class SkiaFactory(BuildFactory): |
is_upload_step=False, |
is_rebaseline_step=True, |
get_props_from_stdout={'got_revision':'Skia updated to (\w+)'}, |
- workdir='build') |
+ workdir='build', |
+ exception_on_failure=True) |
def ApplyPatch(self, alternate_workdir=None, alternate_script=None): |
""" Apply a patch to the Skia code on the build slave. """ |
@@ -586,12 +602,18 @@ class SkiaFactory(BuildFactory): |
' together.') |
args = ['--patch', WithProperties('%(patch)s', patch=_GetPatch)] |
if alternate_script: |
- self.AddSlaveScript(script=alternate_script, description='ApplyPatch', |
- args=args, halt_on_failure=True, |
- workdir=alternate_workdir) |
+ self.AddSlaveScript(script=alternate_script, |
+ description='ApplyPatch', |
+ args=args, |
+ halt_on_failure=True, |
+ workdir=alternate_workdir, |
+ exception_on_failure=True) |
else: |
- self.AddSlaveScript(script='apply_patch.py', description='ApplyPatch', |
- args=args, halt_on_failure=True) |
+ self.AddSlaveScript(script='apply_patch.py', |
+ description='ApplyPatch', |
+ args=args, |
+ halt_on_failure=True, |
+ exception_on_failure=True) |
def UpdateSteps(self): |
""" Update the Skia sources. """ |
@@ -603,17 +625,20 @@ class SkiaFactory(BuildFactory): |
def UploadBenchResults(self): |
""" Upload bench results (performance data). """ |
self.AddSlaveScript(script='upload_bench_results.py', |
- description='UploadBenchResults') |
+ description='UploadBenchResults', |
+ exception_on_failure=True) |
def UploadBenchResultsToAppEngine(self): |
""" Upload bench results (performance data) to AppEngine. """ |
self.AddSlaveScript(script='upload_bench_results_appengine.py', |
- description='UploadBenchResultsToAppengine') |
+ description='UploadBenchResultsToAppengine', |
+ exception_on_failure=True) |
def UploadWebpagePictureBenchResults(self): |
""" Upload webpage picture bench results (performance data). """ |
self.AddSlaveScript(script='upload_webpage_picture_bench_results.py', |
- description='UploadWebpagePictureBenchResults') |
+ description='UploadWebpagePictureBenchResults', |
+ exception_on_failure=True) |
def UploadGMResults(self): |
@@ -622,11 +647,13 @@ class SkiaFactory(BuildFactory): |
'--autogen_svn_password_file', self._autogen_svn_password_file] |
self.AddSlaveScript(script='upload_gm_results.py', args=args, |
description='UploadGMResults', timeout=5400, |
- is_rebaseline_step=True) |
+ is_rebaseline_step=True, |
+ exception_on_failure=True) |
def UploadSKImageResults(self): |
self.AddSlaveScript(script='upload_skimage_results.py', |
- description="UploadSKImageResults") |
+ description='UploadSKImageResults', |
+ exception_on_failure=True) |
def CommonSteps(self, clobber=None): |
""" Steps which are run at the beginning of all builds. """ |