Skip to content

Commit

Permalink
[ews-build.webkit.org] Replace MasterShellCommand with new-style
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=256859
rdar://109421681

Reviewed by Ryan Haddad.

In an effort to modernize our buildbot code, we should deprecate
master.MasterShellCommand in favor of master.MasterShellCommandNewStyle.

* Tools/CISupport/ews-build/steps.py:
(GenerateS3URL):
(TransferToS3):
(ExtractTestResults):

Canonical link: https://commits.webkit.org/267110@main
  • Loading branch information
JonWBedard committed Aug 21, 2023
1 parent df4b7bc commit d74568e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
33 changes: 19 additions & 14 deletions Tools/CISupport/ews-build/steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -4440,7 +4440,7 @@ def doStepIf(self, step):
return CURRENT_HOSTNAME == EWS_BUILD_HOSTNAME


class GenerateS3URL(master.MasterShellCommand):
class GenerateS3URL(master.MasterShellCommandNewStyle):
name = 'generate-s3-url'
descriptionDone = ['Generated S3 URL']
identifier = WithProperties('%(fullPlatform)s-%(architecture)s-%(configuration)s')
Expand All @@ -4453,12 +4453,13 @@ def __init__(self, **kwargs):
kwargs['command'] = self.command
super().__init__(logEnviron=False, **kwargs)

def start(self):
@defer.inlineCallbacks
def run(self):
self.log_observer = logobserver.BufferLogObserver(wantStderr=True)
self.addLogObserver('stdio', self.log_observer)
return super().start()

def finished(self, results):
rc = yield super().run()

log_text = self.log_observer.getStdout() + self.log_observer.getStderr()
match = re.search(r'S3 URL: (?P<url>[^\s]+)', log_text)
# Sample log: S3 URL: https://s3-us-west-2.amazonaws.com/ews-archives.webkit.org/ios-simulator-12-x86_64-release/123456.zip
Expand All @@ -4468,10 +4469,10 @@ def finished(self, results):
if match:
self.build.s3url = match.group('url')
print(f'build: {build_url}, url for GenerateS3URL: {self.build.s3url}')
defer.returnValue(rc)
else:
print(f'build: {build_url}, logs for GenerateS3URL:\n{log_text}')
return super().finished(FAILURE)
return super().finished(results)
defer.returnValue(FAILURE)

def hideStepIf(self, results, step):
return results == SUCCESS
Expand All @@ -4485,7 +4486,7 @@ def getResultSummary(self):
return super().getResultSummary()


class TransferToS3(master.MasterShellCommand):
class TransferToS3(master.MasterShellCommandNewStyle):
name = 'transfer-to-s3'
description = ['transferring to s3']
descriptionDone = ['Transferred archive to S3']
Expand All @@ -4500,18 +4501,20 @@ def __init__(self, **kwargs):
kwargs['command'] = self.command
super().__init__(logEnviron=False, **kwargs)

def start(self):
@defer.inlineCallbacks
def run(self):
self.log_observer = logobserver.BufferLogObserver(wantStderr=True)
self.addLogObserver('stdio', self.log_observer)
return super().start()

def finished(self, results):
rc = yield super().run()

log_text = self.log_observer.getStdout() + self.log_observer.getStderr()
match = re.search(r'S3 URL: (?P<url>[^\s]+)', log_text)
# Sample log: S3 URL: https://s3-us-west-2.amazonaws.com/ews-archives.webkit.org/ios-simulator-12-x86_64-release/123456.zip
if match:
self.addURL('uploaded archive', match.group('url'))
return super().finished(results)

defer.returnValue(rc)

def doStepIf(self, step):
return CURRENT_HOSTNAME == EWS_BUILD_HOSTNAME
Expand Down Expand Up @@ -4940,7 +4943,7 @@ def __init__(self, identifier='', **kwargs):
super().__init__(**kwargs)


class ExtractTestResults(master.MasterShellCommand):
class ExtractTestResults(master.MasterShellCommandNewStyle):
name = 'extract-test-results'
descriptionDone = ['Extracted test results']
renderables = ['resultDirectory', 'zipFile']
Expand Down Expand Up @@ -4978,9 +4981,11 @@ def addCustomURLs(self):
step.addURL('view layout test results', self.resultDirectoryURL() + 'results.html')
step.addURL('download layout test results', self.resultsDownloadURL())

def finished(self, result):
@defer.inlineCallbacks
def run(self):
rc = yield super().run()
self.addCustomURLs()
return master.MasterShellCommand.finished(self, result)
defer.returnValue(rc)


class PrintConfiguration(steps.ShellSequence):
Expand Down
9 changes: 7 additions & 2 deletions Tools/CISupport/ews-build/steps_unittest.py
Original file line number Diff line number Diff line change
Expand Up @@ -4494,8 +4494,13 @@ def test_failure(self):
+ 2,
)
self.expectOutcome(result=FAILURE, state_string='Failed to generate S3 URL')
with current_hostname(EWS_BUILD_HOSTNAME):
return self.runStep()

try:
with current_hostname(EWS_BUILD_HOSTNAME), open(os.devnull, 'w') as null:
sys.stdout = null
return self.runStep()
finally:
sys.stdout = sys.__stdout__

def test_skipped(self):
self.configureStep()
Expand Down

0 comments on commit d74568e

Please sign in to comment.