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