Title: [288911] trunk/Tools
Revision
288911
Author
[email protected]
Date
2022-02-01 13:51:21 -0800 (Tue, 01 Feb 2022)

Log Message

[EWS] Fix infinate retry on PR with red ToT
https://bugs.webkit.org/show_bug.cgi?id=235971
<rdar://problem/88344438>

Reviewed by Aakash Jain.

* Tools/CISupport/ews-build/steps.py:
(AnalyzeCompileWebKitResults.analyzeResults): Update message for PRs,
do not retry if base commit has failed to build.
(AnalyzeCompileWebKitResults.send_email_for_new_build_failure): Only send
emails for patch failures.
* Tools/CISupport/ews-build/steps_unittest.py:

Canonical link: https://commits.webkit.org/246651@main

Modified Paths

Diff

Modified: trunk/Tools/CISupport/ews-build/steps.py (288910 => 288911)


--- trunk/Tools/CISupport/ews-build/steps.py	2022-02-01 21:30:51 UTC (rev 288910)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-02-01 21:51:21 UTC (rev 288911)
@@ -2040,28 +2040,42 @@
             compile_without_patch_step = CompileJSCWithoutPatch.name
         compile_without_patch_result = self.getStepResult(compile_without_patch_step)
 
+        patch_id = self.getProperty('patch_id', '')
+        pr_number = self.getProperty('github.number')
+
         if compile_without_patch_result == FAILURE:
-            message = 'Unable to build WebKit without patch, retrying build'
+            if pr_number:
+                message = 'Unable to build WebKit without PR, please rebase the PR against {}'.format(self.getProperty('basename', 'ToT'))
+            else:
+                message = 'Unable to build WebKit without patch, retrying build'
+
             self.descriptionDone = message
             self.send_email_for_preexisting_build_failure()
             self.finished(FAILURE)
-            self.build.buildFinished([message], RETRY)
+            # Do not retry PRs, we end up in an infinite retry loop because we don't automatically rebase against ToT
+            self.build.buildFinished([message], FAILURE if pr_number else RETRY)
             return defer.succeed(None)
 
         self.build.results = FAILURE
-        patch_id = self.getProperty('patch_id', '')
-        message = 'Patch {} does not build'.format(patch_id)
+        sha = self.getProperty('github.head.sha')
+        if sha and pr_number:
+            message = 'Hash {} for PR {} does not build'.format(sha[:HASH_LENGTH_TO_DISPLAY], pr_number)
+        else:
+            message = 'Patch {} does not build'.format(patch_id)
         self.send_email_for_new_build_failure()
 
         self.descriptionDone = message
         self.finished(FAILURE)
         self.setProperty('build_finish_summary', message)
-        if self.getProperty('buildername', '').lower() == 'commit-queue':
-            self.setProperty('bugzilla_comment_text', message)
-            self.build.addStepsAfterCurrentStep([CommentOnBug(), SetCommitQueueMinusFlagOnPatch()])
-        else:
-            self.build.addStepsAfterCurrentStep([SetCommitQueueMinusFlagOnPatch()])
 
+        # FIXME: Need a cq- equivalent for GitHub
+        if patch_id:
+            if self.getProperty('buildername', '').lower() == 'commit-queue':
+                self.setProperty('bugzilla_comment_text', message)
+                self.build.addStepsAfterCurrentStep([CommentOnBug(), SetCommitQueueMinusFlagOnPatch()])
+            else:
+                self.build.addStepsAfterCurrentStep([SetCommitQueueMinusFlagOnPatch()])
+
     @defer.inlineCallbacks
     def getResults(self, name):
         step = self.getBuildStepByName(name)
@@ -2103,7 +2117,8 @@
     def send_email_for_new_build_failure(self):
         try:
             patch_id = self.getProperty('patch_id', '')
-            if not self.should_send_email(patch_id):
+            # FIXME: Support pull requests
+            if not patch_id or not self.should_send_email(patch_id):
                 return
             builder_name = self.getProperty('buildername', '')
             bug_id = self.getProperty('bug_id', '')

Modified: trunk/Tools/CISupport/ews-build/steps_unittest.py (288910 => 288911)


--- trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-02-01 21:30:51 UTC (rev 288910)
+++ trunk/Tools/CISupport/ews-build/steps_unittest.py	2022-02-01 21:51:21 UTC (rev 288911)
@@ -1224,6 +1224,19 @@
         self.assertEqual(self.getProperty('build_finish_summary'), 'Patch 1234 does not build')
         return rc
 
+    def test_pull_request_with_build_failure(self):
+        previous_steps = [
+            mock_step(CompileWebKit(), results=FAILURE),
+            mock_step(CompileWebKitWithoutPatch(), results=SUCCESS),
+        ]
+        self.setupStep(AnalyzeCompileWebKitResults(), previous_steps=previous_steps)
+        self.setProperty('github.number', '1234')
+        self.setProperty('github.head.sha', '7496f8ecc4cc8011f19c8cc1bc7b18fe4a88ad5c')
+        self.expectOutcome(result=FAILURE, state_string='Hash 7496f8ec for PR 1234 does not build (failure)')
+        rc = self.runStep()
+        self.assertEqual(self.getProperty('build_finish_summary'), 'Hash 7496f8ec for PR 1234 does not build')
+        return rc
+
     def test_patch_with_build_failure_on_commit_queue(self):
         previous_steps = [
             mock_step(CompileWebKit(), results=FAILURE),

Modified: trunk/Tools/ChangeLog (288910 => 288911)


--- trunk/Tools/ChangeLog	2022-02-01 21:30:51 UTC (rev 288910)
+++ trunk/Tools/ChangeLog	2022-02-01 21:51:21 UTC (rev 288911)
@@ -1,3 +1,18 @@
+2022-02-01  Jonathan Bedard  <[email protected]>
+
+        [EWS] Fix infinate retry on PR with red ToT 
+        https://bugs.webkit.org/show_bug.cgi?id=235971
+        <rdar://problem/88344438>
+
+        Reviewed by Aakash Jain.
+
+        * CISupport/ews-build/steps.py:
+        (AnalyzeCompileWebKitResults.analyzeResults): Update message for PRs,
+        do not retry if base commit has failed to build.
+        (AnalyzeCompileWebKitResults.send_email_for_new_build_failure): Only send
+        emails for patch failures.
+        * CISupport/ews-build/steps_unittest.py:
+
 2022-02-01  Eric Carlson  <[email protected]>
 
         [macOS] Expose screen and window capture state to WKWebView
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to