Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Unified Diff: scripts/master/cros_try_job_git.py

Issue 8305010: Add ChromiumOS Trybot support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build/
Patch Set: Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scripts/master/cros_try_job_git.py
===================================================================
--- scripts/master/cros_try_job_git.py (revision 0)
+++ scripts/master/cros_try_job_git.py (revision 0)
@@ -0,0 +1,61 @@
+# Copyright (c) 2010 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import tempfile
+
+import buildbot
+from twisted.python import log
+
+from master import tryjob_git_poller
+from master.try_job_base import TryJobBase
+
+buildbot_0_8 = int(buildbot.version.split('.')[1]) >= 8
+if buildbot_0_8:
+ from master.try_job_base_bb8 import BadJobfile
+else:
+ from master.try_job_base_bb7 import BadJobfile
+
+class CrOSTryJobGit(TryJobBase):
+ """Poll a Git server to grab patches to try."""
+ def __init__(self, name, pools, repo_url, properties=None):
+ TryJobBase.__init__(self, name, pools, properties, None, None)
+ self.repo_url = repo_url
+ self.watcher = tryjob_git_poller.GitPoller(
+ repourl=repo_url,
+ workdir=tempfile.mkdtemp(prefix='gitpoller'),
+ pollinterval=10)
+ self.watcher.setServiceParent(self)
+
+ def ParseJob(self, stuff_tuple):
+ _, contents = stuff_tuple
+ # TODO: item.partition if python > 2.5.
+ options = dict(item.split('=') for item in contents.splitlines())
+ log.msg('Tryjob dict:\n%s' % str(options))
+
+ if not options.get('gerrit_patches', None):
+ raise BadJobfile('No patches specified!')
+
+ if not options.get('bot'):
+ raise BadJobfile('No configs specified!')
+
+ return TryJobBase.ParseJob(self, options)
+
+ def get_props(self, options):
+ base_props = TryJobBase.get_props(self, options)
+ base_props.setProperty('gerrit_patches', options.get('gerrit_patches'),
+ 'Scheduler')
+ log.msg('props[clobber]=%s' % base_props.getProperty('clobber'))
+ return base_props
+
+ def addChange(self, change):
+ """Process the received data and send the queue buildset."""
+ # Implicitly skips over non-files like directories.
+ if len(change.files) != 1:
+ # We only accept changes with 1 diff file.
+ log.msg("Tryjob with too many files %s" % (','.join(change.files)))
+ return
+
+ output = self.watcher.get_file_contents(change.files[0])
+ log.msg('Tryjob contents:\n%s' % output)
+ self.SubmitJob((change.comments, output))
Property changes on: scripts/master/cros_try_job_git.py
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698