Title: [287719] trunk/Tools
Revision
287719
Author
jbed...@apple.com
Date
2022-01-06 15:18:46 -0800 (Thu, 06 Jan 2022)

Log Message

[EWS] Support pull-requests in ConfigureBuild
https://bugs.webkit.org/show_bug.cgi?id=234848
<rdar://problem/87094989>

Reviewed by Dewei Zhu.

* Tools/CISupport/ews-build/steps.py:
(GitHubMixin.pr_url): Map pull-request number to URL.
(GitHubMixin.get_pull_request_number): Check if the event triggering
this was a pull_request, and the specified branch can be mapped to a
pull-request.
(ConfigureBuild.start): Add pull-request details.
(ConfigureBuild.add_pr_details): Ditto.

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

Modified Paths

Diff

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


--- trunk/Tools/CISupport/ews-build/steps.py	2022-01-06 23:00:36 UTC (rev 287718)
+++ trunk/Tools/CISupport/ews-build/steps.py	2022-01-06 23:18:46 UTC (rev 287719)
@@ -54,6 +54,8 @@
 RESULTS_DB_URL = 'https://results.webkit.org/'
 WithProperties = properties.WithProperties
 Interpolate = properties.Interpolate
+BRANCH_PR_RE = re.compile(r'^refs/pull/(?P<id>\d+)/merge$')
+GITHUB_REPOSITORIES = ['https://github.com/WebKit/WebKit']
 
 
 class BufferLogHeaderObserver(logobserver.BufferLogObserver):
@@ -69,7 +71,32 @@
         return self._get(self.headers)
 
 
-class ConfigureBuild(buildstep.BuildStep):
+class GitHubMixin(object):
+    def pr_url(self, pr_number=None):
+        pr_number = pr_number or self.get_pull_request_number()
+        if not pr_number:
+            return ''
+        return '{}/pull/{}'.format(self.getProperty('repository', '-'), pr_number)
+
+    def get_pull_request_number(self):
+        pr_number = self.getProperty('pull_request')
+        if pr_number:
+            return int(pr_number)
+
+        if self.getProperty('event') != 'pull_request':
+            return None
+        if self.getProperty('repository') not in GITHUB_REPOSITORIES:
+            return None
+
+        match = BRANCH_PR_RE.match(self.getProperty('branch', ''))
+        if not match:
+            return None
+        pr_number = int(match.group('id'))
+        self.setProperty('pull_request', pr_number)
+        return pr_number
+
+
+class ConfigureBuild(buildstep.BuildStep, GitHubMixin):
     name = 'configure-build'
     description = ['configuring build']
     descriptionDone = ['Configured build']
@@ -109,6 +136,8 @@
             self.setProperty('additionalArguments', self.additionalArguments, 'config.json')
 
         self.add_patch_id_url()
+        self.add_pr_details()
+
         self.finished(SUCCESS)
         return defer.succeed(None)
 
@@ -117,7 +146,12 @@
         if patch_id:
             self.addURL('Patch {}'.format(patch_id), Bugzilla.patch_url(patch_id))
 
+    def add_pr_details(self):
+        pr_number = self.get_pull_request_number()
+        if pr_number:
+            self.addURL('Pull request {}'.format(pr_number), self.pr_url(pr_number=pr_number))
 
+
 class CheckOutSource(git.Git):
     name = 'clean-and-update-working-directory'
     CHECKOUT_DELAY_AND_MAX_RETRIES_PAIR = (0, 2)

Modified: trunk/Tools/ChangeLog (287718 => 287719)


--- trunk/Tools/ChangeLog	2022-01-06 23:00:36 UTC (rev 287718)
+++ trunk/Tools/ChangeLog	2022-01-06 23:18:46 UTC (rev 287719)
@@ -1,3 +1,19 @@
+2022-01-04  Jonathan Bedard  <jbed...@apple.com>
+
+        [EWS] Support pull-requests in ConfigureBuild
+        https://bugs.webkit.org/show_bug.cgi?id=234848
+        <rdar://problem/87094989>
+
+        Reviewed by Dewei Zhu.
+
+        * CISupport/ews-build/steps.py:
+        (GitHubMixin.pr_url): Map pull-request number to URL.
+        (GitHubMixin.get_pull_request_number): Check if the event triggering
+        this was a pull_request, and the specified branch can be mapped to a
+        pull-request.
+        (ConfigureBuild.start): Add pull-request details.
+        (ConfigureBuild.add_pr_details): Ditto.
+
 2022-01-06  Alex Christensen  <achristen...@webkit.org>
 
         Start using C++20
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to