Title: [247364] trunk/Tools
Revision
247364
Author
aakash_j...@apple.com
Date
2019-07-11 14:12:39 -0700 (Thu, 11 Jul 2019)

Log Message

[ews-build] Add build step to clean up .git/index.lock file
https://bugs.webkit.org/show_bug.cgi?id=199722

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(CheckOutSource.getResultSummary): Run CleanUpGitIndexLock step when CheckOutSource fails.
(CleanUpGitIndexLock.__init__): Configure timeout and logEnviron.
(CleanUpGitIndexLock.evaluateCommand): Always RETRY the build after this step is run.
* BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.

Modified Paths

Diff

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

Modified: trunk/Tools/ChangeLog (247363 => 247364)


--- trunk/Tools/ChangeLog	2019-07-11 21:08:36 UTC (rev 247363)
+++ trunk/Tools/ChangeLog	2019-07-11 21:12:39 UTC (rev 247364)
@@ -1,3 +1,16 @@
+2019-07-11  Aakash Jain  <aakash_j...@apple.com>
+
+        [ews-build] Add build step to clean up .git/index.lock file
+        https://bugs.webkit.org/show_bug.cgi?id=199722
+
+        Reviewed by Jonathan Bedard.
+
+        * BuildSlaveSupport/ews-build/steps.py:
+        (CheckOutSource.getResultSummary): Run CleanUpGitIndexLock step when CheckOutSource fails.
+        (CleanUpGitIndexLock.__init__): Configure timeout and logEnviron.
+        (CleanUpGitIndexLock.evaluateCommand): Always RETRY the build after this step is run.
+        * BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
+
 2019-07-11  Jonathan Bedard  <jbed...@apple.com>
 
         [iOS 13] Enable WebKit build
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to