summaryrefslogtreecommitdiff
path: root/buildbot
diff options
context:
space:
mode:
authorSimran Basi <sbasi@chromium.org>2014-05-20 14:40:16 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-05-23 04:59:19 +0000
commit1c2d38ac06521e2b1d7066fc1c76cf91446563be (patch)
treeab7dda7830baa40b40a7361eecf9e74e91eb89b8 /buildbot
parentd379d3bdff707e860beec4455cd1005598827a4f (diff)
downloadchromite-1c2d38ac06521e2b1d7066fc1c76cf91446563be.tar.gz
Copy LATEST markers to extra upload archives.
Currently we don't upload the LATEST markers. This change looks up the board for each builder_run in the report stage and also uploads the LATEST marker to the extra archives if there are any. BUG=chromium:375354 TEST=Rambi-paladin trybot run. sandybridge-ivybridge-release-group trybot run. report_stages_unittest. Change-Id: I2a1110e65b9b83ff3717ef55111c9addff567281 Reviewed-on: https://chromium-review.googlesource.com/200653 Tested-by: Simran Basi <sbasi@chromium.org> Reviewed-by: Don Garrett <dgarrett@chromium.org> Commit-Queue: Simran Basi <sbasi@chromium.org>
Diffstat (limited to 'buildbot')
-rw-r--r--buildbot/cbuildbot_archive.py20
-rw-r--r--buildbot/stages/generic_stages.py9
-rw-r--r--buildbot/stages/report_stages.py5
-rwxr-xr-xbuildbot/stages/report_stages_unittest.py2
4 files changed, 23 insertions, 13 deletions
diff --git a/buildbot/cbuildbot_archive.py b/buildbot/cbuildbot_archive.py
index dd4614793..44092c205 100644
--- a/buildbot/cbuildbot_archive.py
+++ b/buildbot/cbuildbot_archive.py
@@ -155,13 +155,16 @@ class Archive(object):
osutils.SafeMakedirs(self.archive_path)
- def UpdateLatestMarkers(self, manifest_branch, debug):
+ def UpdateLatestMarkers(self, manifest_branch, debug, upload_urls=None):
"""Update the LATEST markers in GS archive area.
Args:
manifest_branch: The name of the branch in the manifest for this run.
debug: Boolean debug value for this run.
+ upload_urls: Google storage urls to upload the Latest Markers to.
"""
+ if not upload_urls:
+ upload_urls = [self.upload_url]
# self.version will be one of these forms, shown through examples:
# R35-1234.5.6 or R35-1234.5.6-b123. In either case, we want "1234.5.6".
version_marker = self.version.split('-')[1]
@@ -169,10 +172,11 @@ class Archive(object):
filenames = ('LATEST-%s' % manifest_branch,
'LATEST-%s' % version_marker)
base_archive_path = os.path.dirname(self.archive_path)
- base_upload_url = os.path.dirname(self.upload_url)
- for filename in filenames:
- latest_path = os.path.join(base_archive_path, filename)
- osutils.WriteFile(latest_path, self.version, mode='w')
- commands.UploadArchivedFile(
- base_archive_path, [base_upload_url], filename,
- debug, acl=self.upload_acl)
+ base_upload_urls = [os.path.dirname(url) for url in upload_urls]
+ for base_upload_url in base_upload_urls:
+ for filename in filenames:
+ latest_path = os.path.join(base_archive_path, filename)
+ osutils.WriteFile(latest_path, self.version, mode='w')
+ commands.UploadArchivedFile(
+ base_archive_path, [base_upload_url], filename,
+ debug, acl=self.upload_acl)
diff --git a/buildbot/stages/generic_stages.py b/buildbot/stages/generic_stages.py
index 365743cc1..f650a0dbd 100644
--- a/buildbot/stages/generic_stages.py
+++ b/buildbot/stages/generic_stages.py
@@ -692,17 +692,20 @@ class ArchivingStageMixin(object):
return True
return False
- def _GetUploadUrls(self, filename):
+ def _GetUploadUrls(self, filename, board=None):
"""Returns a list of all urls for which to upload filename to.
Args:
filename: The filename of the file we want to upload.
+ board: Board whose overlay to search for the artifacts.json file.
+ If none, self._current_board is used if it exists.
"""
urls = [self.upload_url]
if (not self._IsInUploadBlacklist(filename) and
- hasattr(self, '_current_board')):
+ (hasattr(self, '_current_board') or board)):
+ board = board if board else self._current_board
custom_artifacts_file = portage_utilities.ReadOverlayFile(
- 'scripts/artifacts.json', board=self._current_board)
+ 'scripts/artifacts.json', board=board)
if custom_artifacts_file is not None:
json_file = json.loads(custom_artifacts_file)
for url in json_file.get('extra_upload_urls', []):
diff --git a/buildbot/stages/report_stages.py b/buildbot/stages/report_stages.py
index 5e9ded0ee..61bb5d295 100644
--- a/buildbot/stages/report_stages.py
+++ b/buildbot/stages/report_stages.py
@@ -330,9 +330,12 @@ class ReportStage(generic_stages.BuilderStage,
archive_urls.update(run_archive_urls)
# Also update the LATEST files, since this run did archive something.
+ upload_urls = self._GetUploadUrls(
+ 'LATEST-*', board=builder_run.config['boards'][0])
archive = builder_run.GetArchive()
archive.UpdateLatestMarkers(builder_run.manifest_branch,
- builder_run.debug)
+ builder_run.debug,
+ upload_urls=upload_urls)
version = getattr(self._run.attrs, 'release_tag', '')
results_lib.Results.Report(sys.stdout, archive_urls=archive_urls,
diff --git a/buildbot/stages/report_stages_unittest.py b/buildbot/stages/report_stages_unittest.py
index 7952364cf..5505783be 100755
--- a/buildbot/stages/report_stages_unittest.py
+++ b/buildbot/stages/report_stages_unittest.py
@@ -35,7 +35,7 @@ class ReportStageTest(generic_stages_unittest.AbstractStageTest):
RELEASE_TAG = ''
def setUp(self):
- for cmd in ((osutils, 'ReadFile'), (osutils, 'WriteFile'),
+ for cmd in ((osutils, 'WriteFile'),
(commands, 'UploadArchivedFile'),
(alerts, 'SendEmail')):
self.StartPatcher(mock.patch.object(*cmd, autospec=True))