WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-240461-20220516124244.patch (text/plain), 15.17 KB, created by
Jonathan Bedard
on 2022-05-16 12:42:44 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Jonathan Bedard
Created:
2022-05-16 12:42:44 PDT
Size:
15.17 KB
patch
obsolete
>From bb649dd33fd8c391d14d97520b7e1bb969bd94ce Mon Sep 17 00:00:00 2001 >From: Jonathan Bedard <jbedard@apple.com> >Date: Mon, 16 May 2022 12:40:43 -0700 >Subject: [PATCH] [Commit-Queue] Forbid ChangeLog modification > https://bugs.webkit.org/show_bug.cgi?id=240461 <rdar://93351783> > >Reviewed by NOBODY (OOPS!). > >WIP > >* Tools/CISupport/ews-build/config.json: >* Tools/CISupport/ews-build/factories.py: >(CommitQueueFactory.__init__): >* Tools/CISupport/ews-build/steps.py: >(CommitPatch): >(__init__): >(doStepIf): >(_get_patch): >(run): >(hideStepIf): >(getResultSummary): >(PushCommitToWebKitRepo.evaluateCommand): >(ValidateSquashed.start): >(ValidateSquashed.evaluateCommand): >(AddReviewerToCommitMessage.start): >(AddReviewerToCommitMessage.doStepIf): >(AddAuthorToCommitMessage.start): >(AddAuthorToCommitMessage.doStepIf): >(ValidateCommitMessage.run): >(ValidateCommitMessage.getResultSummary): >(Canonicalize.run): >(ResetGitSvn.getResultSummary): >(ShowCommitMessage): >(ShowCommitMessage.__init__): >(ValidateSquashed.doStepIf): Deleted. >(ValidateSquashed.hideStepIf): Deleted. >(ValidateCommitMessage.doStepIf): Deleted. >(ValidateCommitMessage.hideStepIf): Deleted. >--- > Tools/CISupport/ews-build/config.json | 2 +- > Tools/CISupport/ews-build/factories.py | 28 +++--- > Tools/CISupport/ews-build/steps.py | 125 ++++++++++++++++++------- > 3 files changed, 107 insertions(+), 48 deletions(-) > >diff --git a/Tools/CISupport/ews-build/config.json b/Tools/CISupport/ews-build/config.json >index 9c9e2eb4ab95..381124ba1d9f 100644 >--- a/Tools/CISupport/ews-build/config.json >+++ b/Tools/CISupport/ews-build/config.json >@@ -335,7 +335,7 @@ > "name": "Commit-Queue", "shortname": "commit", "icon": "buildAndTest", > "factory": "CommitQueueFactory", "platform": "mac-bigsur", > "configuration": "release", "architectures": ["x86_64"], >- "workernames": ["webkit-cq-01", "webkit-cq-02", "webkit-cq-03"] >+ "workernames": ["webkit-cq-01", "webkit-cq-02", "webkit-cq-03", "ews151"] > }, > { > "name": "Merge-Queue", "shortname": "merge", "icon": "buildAndTest", >diff --git a/Tools/CISupport/ews-build/factories.py b/Tools/CISupport/ews-build/factories.py >index b67e5c53d104..7a6c769c8d8a 100644 >--- a/Tools/CISupport/ews-build/factories.py >+++ b/Tools/CISupport/ews-build/factories.py >@@ -24,7 +24,7 @@ > from buildbot.process import factory > from buildbot.steps import trigger > >-from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AddReviewerToChangeLog, ApplyPatch, ApplyWatchList, Canonicalize, >+from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AddReviewerToChangeLog, ApplyPatch, ApplyWatchList, Canonicalize, CommitPatch, > CheckOutPullRequest, CheckOutSource, CheckOutSpecificRevision, CheckChangeRelevance, > CheckPatchStatusOnEWSQueues, CheckStyle, CleanGitRepo, CompileJSC, CompileWebKit, ConfigureBuild, CreateLocalGITCommit, > DownloadBuiltProduct, ExtractBuiltProduct, FetchBranches, FindModifiedChangeLogs, FindModifiedLayoutTests, GitSvnFetch, >@@ -34,7 +34,7 @@ from steps import (AddAuthorToCommitMessage, AddReviewerToCommitMessage, AddRevi > RunWebKitPyPython3Tests, RunWebKitTests, RunWebKitTestsRedTree, RunWebKitTestsInStressMode, RunWebKitTestsInStressGuardmallocMode, > SetBuildSummary, ShowIdentifier, TriggerCrashLogSubmission, UpdateWorkingDirectory, > ValidateCommitMessage, ValidateChange, ValidateChangeLogAndReviewer, ValidateCommitterAndReviewer, WaitForCrashCollection, >- InstallBuiltProduct, VerifyGitHubIntegrity, ValidateSquashed) >+ InstallBuiltProduct, VerifyGitHubIntegrity, ValidateSquashed, ShowCommitMessage) > > > class Factory(factory.BuildFactory): >@@ -292,15 +292,22 @@ class CommitQueueFactory(factory.BuildFactory): > self.addStep(ValidateChange(verifycqplus=True)) > self.addStep(ValidateCommitterAndReviewer()) > self.addStep(PrintConfiguration()) >- self.addStep(CleanGitRepo(default_branch='master')) >- self.addStep(CheckOutSource(repourl='https://git.webkit.org/git/WebKit-https')) >+ self.addStep(CleanGitRepo()) >+ self.addStep(CheckOutSource()) >+ self.addStep(GitSvnFetch()) # FIXME: Remove when migrating to pure git > self.addStep(FetchBranches()) > self.addStep(ShowIdentifier()) > self.addStep(VerifyGitHubIntegrity()) > self.addStep(UpdateWorkingDirectory()) >- self.addStep(ApplyPatch()) >- self.addStep(ValidateChangeLogAndReviewer()) >- self.addStep(FindModifiedChangeLogs()) >+ self.addStep(CommitPatch()) >+ >+ self.addStep(ValidateSquashed()) >+ self.addStep(AddReviewerToCommitMessage()) >+ self.addStep(AddAuthorToCommitMessage()) >+ self.addStep(ShowCommitMessage()) >+ self.addStep(ValidateCommitMessage()) >+ self.addStep(ShowCommitMessage()) >+ > self.addStep(KillOldProcesses()) > self.addStep(CompileWebKit(skipUpload=True)) > self.addStep(KillOldProcesses()) >@@ -308,11 +315,8 @@ class CommitQueueFactory(factory.BuildFactory): > self.addStep(CheckPatchStatusOnEWSQueues()) > self.addStep(RunWebKitTests()) > self.addStep(ValidateChange(addURLs=False, verifycqplus=True)) >- self.addStep(CheckOutSource(repourl='https://git.webkit.org/git/WebKit-https')) >- self.addStep(ShowIdentifier()) >- self.addStep(UpdateWorkingDirectory()) >- self.addStep(ApplyPatch()) >- self.addStep(CreateLocalGITCommit()) >+ >+ self.addStep(Canonicalize()) > self.addStep(PushCommitToWebKitRepo()) > self.addStep(SetBuildSummary()) > >diff --git a/Tools/CISupport/ews-build/steps.py b/Tools/CISupport/ews-build/steps.py >index 342fca9fc0ab..58491894c73d 100644 >--- a/Tools/CISupport/ews-build/steps.py >+++ b/Tools/CISupport/ews-build/steps.py >@@ -845,6 +845,62 @@ class ApplyPatch(shell.ShellCommand, CompositeStepMixin, ShellMixin): > return rc > > >+class CommitPatch(steps.ShellSequence, CompositeStepMixin, ShellMixin): >+ name = 'commit-patch' >+ description = ['commit-patch'] >+ descriptionDone = ['Created commit from patch'] >+ haltOnFailure = True >+ env = dict(FILTER_BRANCH_SQUELCH_WARNING='1') >+ FILTER_BRANCH_PROGRAM = '''import re >+import sys >+ >+lines = [l for l in sys.stdin] >+for s in re.split(r' (Need the bug URL \(OOPS!\).)|(\S+:\/\/\S+)', lines[0].rstrip()): >+ if s and s != ' ': >+ print(s) >+for l in lines[1:]: >+ sys.stdout.write(l) >+''' >+ >+ def __init__(self, **kwargs): >+ super(CommitPatch, self).__init__(timeout=10 * 60, logEnviron=False, **kwargs) >+ >+ def doStepIf(self, step): >+ return self.getProperty('patch_id', False) >+ >+ def _get_patch(self): >+ sourcestamp = self.build.getSourceStamp(self.getProperty('codebase', '')) >+ if not sourcestamp or not sourcestamp.patch: >+ return None >+ return sourcestamp.patch[1] >+ >+ def run(self): >+ self.commands = [] >+ patch = self._get_patch() >+ >+ commands = [] >+ if not patch: >+ commands += [['curl', '-L', 'https://bugs.webkit.org/attachment.cgi?id={}'.format(self.getProperty('patch_id', '')), '-o', '.buildbot-diff']] >+ commands += [ >+ ['git', 'am', '.buildbot-diff'], >+ ['git', 'filter-branch', '-f', '--msg-filter', 'python3 -c "{}"'.format(self.FILTER_BRANCH_PROGRAM), 'HEAD...HEAD~1'], >+ ] >+ for command in commands: >+ self.commands.append(util.ShellArg(command=command, logname='stdio', haltOnFailure=True)) >+ >+ return super(CommitPatch, self).run() >+ >+ def hideStepIf(self, results, step): >+ return not self.doStepIf(step) or (results == SUCCESS and self.getProperty('sensitive', False)) >+ >+ def getResultSummary(self): >+ if self.results == SKIPPED: >+ return {'step': "Skipping creating commitsince patch_id isn't provided"} >+ if self.results != SUCCESS: >+ return {'step': 'git am failed to apply patch to trunk'} >+ return super(CommitPatch, self).getResultSummary() >+ >+ > class CheckOutPullRequest(steps.ShellSequence, ShellMixin): > name = 'checkout-pull-request' > description = ['checking-out-pull-request'] >@@ -4576,12 +4632,17 @@ class PushCommitToWebKitRepo(shell.ShellCommand): > ]) > else: > self.build.addStepsAfterCurrentStep([ >- GitResetHard(), >- CheckOutSource(repourl='https://git.webkit.org/git/WebKit-https'), >+ ResetGitSvn(), >+ CleanGitRepo(), >+ CheckOutSource(), >+ GitSvnFetch(), > ShowIdentifier(), > UpdateWorkingDirectory(), >- ApplyPatch(), >- CreateLocalGITCommit(), >+ CommitPatch(), >+ AddReviewerToCommitMessage(), >+ AddAuthorToCommitMessage(), >+ ValidateChange(addURLs=False, verifycqplus=True), >+ Canonicalize(), > PushCommitToWebKitRepo(), > ]) > return rc >@@ -4762,8 +4823,8 @@ class ValidateSquashed(shell.ShellCommand): > super(ValidateSquashed, self).__init__(logEnviron=False, **kwargs) > > def start(self, BufferLogObserverClass=logobserver.BufferLogObserver): >- base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH) >- head_ref = self.getProperty('github.head.ref', DEFAULT_BRANCH) >+ base_ref = self.getProperty('github.base.ref', f'origin/{DEFAULT_BRANCH}') >+ head_ref = self.getProperty('github.head.ref', 'HEAD') > self.command = ['git', 'log', '--oneline', head_ref, f'^{base_ref}', '--max-count=2'] > > self.log_observer = BufferLogObserverClass(wantStderr=True) >@@ -4788,12 +4849,6 @@ class ValidateSquashed(shell.ShellCommand): > return SUCCESS > return FAILURE > >- def doStepIf(self, step): >- return self.getProperty('github.number') >- >- def hideStepIf(self, results, step): >- return not self.doStepIf(step) >- > > class AddReviewerMixin(object): > NOBODY_SED = 's/NOBODY (OO*PP*S!*)/{}/g' >@@ -4831,8 +4886,8 @@ class AddReviewerToCommitMessage(shell.ShellCommand, AddReviewerMixin): > super(AddReviewerToCommitMessage, self).__init__(logEnviron=False, timeout=60, **kwargs) > > def start(self, BufferLogObserverClass=logobserver.BufferLogObserver): >- base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH) >- head_ref = self.getProperty('github.head.ref', DEFAULT_BRANCH) >+ base_ref = self.getProperty('github.base.ref', f'origin/{DEFAULT_BRANCH}') >+ head_ref = self.getProperty('github.head.ref', 'HEAD') > > gmtoffset = int(time.localtime().tm_gmtoff * 100 / (60 * 60)) > date = f'{int(time.time())} {gmtoffset}' >@@ -4856,7 +4911,7 @@ class AddReviewerToCommitMessage(shell.ShellCommand, AddReviewerMixin): > return super(AddReviewerToCommitMessage, self).getResultSummary() > > def doStepIf(self, step): >- return self.getProperty('github.number') and self.getProperty('reviewers_full_names') >+ return self.getProperty('reviewers_full_names') > > def hideStepIf(self, results, step): > return not self.doStepIf(step) >@@ -4886,8 +4941,8 @@ class AddAuthorToCommitMessage(shell.ShellCommand, AddReviewerMixin): > return None, None > > def start(self): >- base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH) >- head_ref = self.getProperty('github.head.ref', DEFAULT_BRANCH) >+ base_ref = self.getProperty('github.base.ref', f'origin/{DEFAULT_BRANCH}') >+ head_ref = self.getProperty('github.head.ref', 'HEAD') > > gmtoffset = int(time.localtime().tm_gmtoff * 100 / (60 * 60)) > timestamp = f'{int(time.time())} {gmtoffset}' >@@ -4916,9 +4971,6 @@ class AddAuthorToCommitMessage(shell.ShellCommand, AddReviewerMixin): > return super(AddAuthorToCommitMessage, self).getResultSummary() > > def doStepIf(self, step): >- if not self.getProperty('github.number'): >- return False >- > name, email = self.author() > return name and email > >@@ -4991,8 +5043,8 @@ class ValidateCommitMessage(steps.ShellSequence, ShellMixin): > > @defer.inlineCallbacks > def run(self, BufferLogObserverClass=logobserver.BufferLogObserver): >- base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH) >- head_ref = self.getProperty('github.head.ref', DEFAULT_BRANCH) >+ base_ref = self.getProperty('github.base.ref', f'origin/{DEFAULT_BRANCH}') >+ head_ref = self.getProperty('github.head.ref', 'HEAD') > > self.commands = [] > commands = [ >@@ -5027,7 +5079,7 @@ class ValidateCommitMessage(steps.ShellSequence, ShellMixin): > if rc == FAILURE: > self.setProperty('comment_text', f"{self.summary}, blocking PR #{self.getProperty('github.number')}") > self.setProperty('build_finish_summary', 'Commit message validation failed') >- self.build.addStepsAfterCurrentStep([LeaveComment(), BlockPullRequest()]) >+ self.build.addStepsAfterCurrentStep([LeaveComment(), SetCommitQueueMinusFlagOnPatch(), BlockPullRequest()]) > return rc > > def getResultSummary(self): >@@ -5035,12 +5087,6 @@ class ValidateCommitMessage(steps.ShellSequence, ShellMixin): > return {'step': self.summary} > return super(ValidateCommitMessage, self).getResultSummary() > >- def doStepIf(self, step): >- return self.getProperty('github.number') >- >- def hideStepIf(self, results, step): >- return not self.doStepIf(step) >- > > class Canonicalize(steps.ShellSequence, ShellMixin): > name = 'canonicalize-commit' >@@ -5056,15 +5102,14 @@ class Canonicalize(steps.ShellSequence, ShellMixin): > self.commands = [] > > base_ref = self.getProperty('github.base.ref', DEFAULT_BRANCH) >- head_ref = self.getProperty('github.head.ref', DEFAULT_BRANCH) >+ head_ref = self.getProperty('github.head.ref', None) > > commands = [] > if self.rebase_enabled: >- commands = [ >- ['git', 'pull', 'origin', base_ref, '--rebase'], >- ['git', 'branch', '-f', base_ref, head_ref], >- ['git', 'checkout', base_ref], >- ] >+ commands = [['git', 'pull', 'origin', base_ref, '--rebase']] >+ if head_ref: >+ commands += [['git', 'branch', '-f', base_ref, head_ref]] >+ commands += [['git', 'checkout', base_ref]] > commands.append(['python3', 'Tools/Scripts/git-webkit', 'canonicalize', '-n', '1' if self.rebase_enabled else '3']) > > for command in commands: >@@ -5246,3 +5291,13 @@ class ResetGitSvn(shell.ShellCommand): > if self.results == FAILURE: > return {'step': 'Failed to remove git-svn references'} > return super(GitSvnFetch, self).getResultSummary() >+ >+ >+class ShowCommitMessage(shell.ShellCommand): >+ name = 'show-commit-message' >+ haltOnFailure = False >+ flunkOnFailure = False >+ command = ['git', 'log', '-1'] >+ >+ def __init__(self, **kwargs): >+ super(ShowCommitMessage, self).__init__(logEnviron=False, timeout=300, **kwargs) >-- >2.32.0 (Apple Git-132) >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 240461
:
459431
|
459449
|
459495
|
459496
|
459500
|
459503
|
459505
|
459508