Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps.py (247363 => 247364)
--- trunk/Tools/BuildSlaveSupport/ews-build/steps.py 2019-07-11 21:08:36 UTC (rev 247363)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps.py 2019-07-11 21:12:39 UTC (rev 247364)
@@ -102,6 +102,9 @@
**kwargs)
def getResultSummary(self):
+ if self.results == FAILURE:
+ self.build.addStepsAfterCurrentStep([CleanUpGitIndexLock()])
+
if self.results != SUCCESS:
return {u'step': u'Failed to updated working directory'}
else:
@@ -108,6 +111,19 @@
return {u'step': u'Cleaned and updated working directory'}
+class CleanUpGitIndexLock(shell.ShellCommand):
+ name = 'clean-git-index-lock'
+ command = ['rm', '-f', '.git/index.lock']
+ descriptionDone = ['Deleted .git/index.lock']
+
+ def __init__(self, **kwargs):
+ super(CleanUpGitIndexLock, self).__init__(timeout=2 * 60, logEnviron=False, **kwargs)
+
+ def evaluateCommand(self, cmd):
+ self.build.buildFinished(['Git issue, retrying build'], RETRY)
+ return super(CleanUpGitIndexLock, self).evaluateCommand(cmd)
+
+
class CheckOutSpecificRevision(shell.ShellCommand):
name = 'checkout-specific-revision'
descriptionDone = ['Checked out required revision']
Modified: trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py (247363 => 247364)
--- trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py 2019-07-11 21:08:36 UTC (rev 247363)
+++ trunk/Tools/BuildSlaveSupport/ews-build/steps_unittest.py 2019-07-11 21:12:39 UTC (rev 247364)
@@ -35,7 +35,7 @@
from twisted.trial import unittest
from steps import (AnalyzeAPITestsResults, AnalyzeCompileWebKitResults, ApplyPatch, ArchiveBuiltProduct, ArchiveTestResults,
- CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance, CheckStyle, CleanBuild, CleanWorkingDirectory,
+ CheckOutSource, CheckOutSpecificRevision, CheckPatchRelevance, CheckStyle, CleanBuild, CleanUpGitIndexLock, CleanWorkingDirectory,
CompileJSCOnly, CompileJSCOnlyToT, CompileWebKit, CompileWebKitToT, ConfigureBuild,
DownloadBuiltProduct, ExtractBuiltProduct, ExtractTestResults, InstallGtkDependencies, InstallWpeDependencies, KillOldProcesses,
PrintConfiguration, ReRunAPITests, ReRunJavaScriptCoreTests, RunAPITests, RunAPITestsWithoutPatch,
@@ -478,6 +478,42 @@
return self.runStep()
+class TestCleanUpGitIndexLock(BuildStepMixinAdditions, unittest.TestCase):
+ def setUp(self):
+ self.longMessage = True
+ return self.setUpBuildStep()
+
+ def tearDown(self):
+ return self.tearDownBuildStep()
+
+ def test_success(self):
+ self.setupStep(CleanUpGitIndexLock())
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ timeout=120,
+ logEnviron=False,
+ command=['rm', '-f', '.git/index.lock'],
+ )
+ + 0,
+ )
+ self.expectOutcome(result=SUCCESS, state_string='Deleted .git/index.lock')
+ return self.runStep()
+
+ def test_failure(self):
+ self.setupStep(CleanUpGitIndexLock())
+ self.expectRemoteCommands(
+ ExpectShell(workdir='wkdir',
+ timeout=120,
+ logEnviron=False,
+ command=['rm', '-f', '.git/index.lock'],
+ )
+ + ExpectShell.log('stdio', stdout='Unexpected error.')
+ + 1,
+ )
+ self.expectOutcome(result=FAILURE, state_string='Deleted .git/index.lock (failure)')
+ return self.runStep()
+
+
class TestInstallGtkDependencies(BuildStepMixinAdditions, unittest.TestCase):
def setUp(self):
self.longMessage = True