def getChanges(request, options=None): """ Reponds only to POST events and starts the build process :arguments: request the http request object """ try: payload = json.load(request.content) except Exception as e: raise ValueError("Error loading JSON: " + str(e)) user = payload['user_name'] repo = payload['repository']['name'] repo_url = payload['repository']['url'] project = request.args.get('project', [''])[0] codebase = request.args.get('codebase', None) if codebase: codebase = codebase[0] # This field is unused: # private = payload['repository']['private'] changes = _process_change(payload, user, repo, repo_url, project, codebase=codebase) log.msg("Received %s changes from gitlab" % len(changes)) return (changes, 'git')
def loop(self): """ Main processing loop. Read new items from the queue and run them! """ while True: self.monitor() if len(self.active) >= self.concurrency: # Wait! time.sleep(1) continue while len(self.active) < self.concurrency: item = self.q.pop() if not item: # Don't wait for very long, since we have to check up on # our children if self.active: self.q.wait(1) else: self.q.wait() break item_id, fp = item try: command = json.load(fp) job = Job(command, item_id, self.q.getlog(item_id)) job.max_time = self.max_time self.run(job) except ValueError: # Couldn't parse it as json # There's no hope! self.q.log(item_id, "Couldn't load json; murdering") self.q.murder(item_id) finally: fp.close()
def getChanges(request, options=None): """ Reponds only to POST events and starts the build process :arguments: request the http request object """ try: payload = json.load(request.content) except Exception as e: raise ValueError("Error loading JSON: " + str(e)) user = payload['user_name'] repo = payload['repository']['name'] repo_url = payload['repository']['url'] project = request.args.get('project', [''])[0] codebase = request.args.get('codebase', None) if codebase: codebase = codebase[0] # This field is unused: # private = payload['repository']['private'] changes = _process_change( payload, user, repo, repo_url, project, codebase=codebase) log.msg("Received %s changes from gitlab" % len(changes)) return (changes, 'git')
def getChanges(request, options=None): """ Reponds only to POST events and starts the build process :arguments: request the http request object """ try: payload = json.load(request.content) except Exception, e: raise ValueError("Error loading JSON: " + str(e))
def setUp(self): if requests is None: raise unittest.SkipTest("Need to install requests to test oauth2") if "OAUTHCONF" not in os.environ: raise unittest.SkipTest("Need to pass OAUTHCONF path to json file via environ to run this e2e test") import json config = json.load(open(os.environ['OAUTHCONF']))[self.authClass] from buildbot.www import oauth2 self.auth = self._instantiateAuth(getattr(oauth2, self.authClass), config) # 5000 has to be hardcoded, has oauth clientids are bound to a fully classified web site master = self.make_master(url='http://localhost:5000/', auth=self.auth) self.auth.reconfigAuth(master, master.config)
def setUp(self): if requests is None: raise unittest.SkipTest("Need to install requests to test oauth2") if "OAUTHCONF" not in os.environ: raise unittest.SkipTest( "Need to pass OAUTHCONF path to json file via environ to run this e2e test" ) import json config = json.load(open(os.environ['OAUTHCONF']))[self.authClass] from buildbot.www import oauth2 self.auth = self._instantiateAuth(getattr(oauth2, self.authClass), config) # 5000 has to be hardcoded, has oauth clientids are bound to a fully classified web site master = self.make_master(url='http://localhost:5000/', auth=self.auth) self.auth.reconfigAuth(master, master.config)
from buildbot.util import json from buildbot import manhole master_config = json.load(open('master_config.json')) c = BuildmasterConfig = {} c['slavePortnum'] = master_config.get('pb_port', None) if 'ssh_port' in master_config: c['manhole'] = manhole.PasswordManhole( "tcp:%(ssh_port)i:interface=127.0.0.1" % master_config, "cltbld", "password") QUEUEDIR = "/dev/shm/queue" from config import BRANCH_PROJECTS ACTIVE_RELEASE_BRANCHES = [] ACTIVE_THUNDERBIRD_RELEASE_BRANCHES = [] ACTIVE_MOBILE_RELEASE_BRANCHES = [] ACTIVE_BRANCH_PROJECTS = [ k for k, v in BRANCH_PROJECTS.items() if not v.get('enable_try') ] ENABLE_RELEASES = False if 'release_branches' in master_config: ACTIVE_RELEASE_BRANCHES.extend(master_config['release_branches']) ENABLE_RELEASES = True if 'thunderbird_release_branches' in master_config: ACTIVE_THUNDERBIRD_RELEASE_BRANCHES.extend( master_config['thunderbird_release_branches']) ENABLE_RELEASES = True
from buildbot.util import json from buildbot.status.html import WebStatus from buildbot import manhole from thunderbird_config import PLATFORMS as THUNDERBIRD_PLATFORMS from b2g_config import PLATFORMS as B2G_PLATFORMS from mobile_config import PLATFORMS as MOBILE_PLATFORMS master_config = json.load(open('master_config.json')) c = BuildmasterConfig = {} c['slavePortnum'] = master_config.get('pb_port', None) c['status'] = [] if 'http_port' in master_config: c['status'].append( WebStatus(http_port=master_config['http_port'], allowForce=True)) c['buildbotURL'] = 'http://%(hostname)s:%(http_port)i/' % master_config if 'ssh_port' in master_config: c['manhole'] = manhole.PasswordManhole( "tcp:%(ssh_port)i:interface=127.0.0.1" % master_config, "cltbld", "password") from config import BRANCHES, PLATFORMS, PROJECTS import thunderbird_config import b2g_config from b2g_config import PROJECTS as B2G_PROJECTS import mobile_config # Do everything! ACTIVE_BRANCHES = BRANCHES.keys() ACTIVE_THUNDERBIRD_BRANCHES = thunderbird_config.BRANCHES.keys()
def loop(self): """ Main processing loop. Read new items from the queue, push them to pulse, remove processed items, and then wait for more. """ while True: self.maybe_disconnect() # Grab any new events item_ids = [] events = [] come_back_soon = False try: while True: item = self.queuedir.pop() if not item: break if len(events) > 50: come_back_soon = True break try: item_id, fp = item item_ids.append(item_id) log.debug("Loading %s", item) events.extend(json.load(fp)) except: log.exception("Error loading %s", item_id) raise finally: fp.close() log.info("Loaded %i events", len(events)) self.send(events) for item_id in item_ids: log.info("Removing %s", item_id) try: self.queuedir.remove(item_id) except OSError: # Somebody (re-)moved it already, that's ok! pass except: log.exception("Error processing messages") # Don't try again soon, something has gone horribly wrong! come_back_soon = False for item_id in item_ids: self.queuedir.requeue( item_id, self.retry_time, self.max_retries) if come_back_soon: # Let's do more right now! log.info("Doing more!") continue # Wait for more # don't wait more than our max_idle/max_connect_time now = time.time() to_wait = None if self._disconnect_timer: to_wait = self._disconnect_timer - now if to_wait < 0: to_wait = None log.info("Waiting for %s", to_wait) self.queuedir.wait(to_wait)
def loop(self): """ Main processing loop. Read new items from the queue, push them to pulse, remove processed items, and then wait for more. """ while True: self.maybe_disconnect() # Grab any new events item_ids = [] events = [] come_back_soon = False try: while True: item = self.queuedir.pop() if not item: break if len(events) > 50: come_back_soon = True break try: item_id, fp = item item_ids.append(item_id) log.debug("Loading %s", item) events.extend(json.load(fp)) except: log.exception("Error loading %s", item_id) raise finally: fp.close() log.info("Loaded %i events", len(events)) self.send(events) for item_id in item_ids: log.info("Removing %s", item_id) try: self.queuedir.remove(item_id) except OSError: # Somebody (re-)moved it already, that's ok! pass except: log.exception("Error processing messages") # Don't try again soon, something has gone horribly wrong! come_back_soon = False for item_id in item_ids: self.queuedir.requeue(item_id, self.retry_time, self.max_retries) if come_back_soon: # Let's do more right now! log.info("Doing more!") continue # Wait for more # don't wait more than our max_idle/max_connect_time now = time.time() to_wait = None if self._disconnect_timer: to_wait = self._disconnect_timer - now if to_wait < 0: to_wait = None log.info("Waiting for %s", to_wait) self.queuedir.wait(to_wait)
from buildbot.util import json from buildbot.status.html import WebStatus from buildbot import manhole master_config = json.load(open("master_config.json")) c = BuildmasterConfig = {} c["slavePortnum"] = master_config.get("pb_port", None) c["status"] = [] if "http_port" in master_config: c["status"].append(WebStatus(http_port=master_config["http_port"], allowForce=True)) c["buildbotURL"] = "http://%(hostname)s:%(http_port)i/" % master_config if "ssh_port" in master_config: c["manhole"] = manhole.PasswordManhole("tcp:%(ssh_port)i:interface=127.0.0.1" % master_config, "cltbld", "password") from config import BRANCHES, PROJECTS, TRY_SLAVES, BRANCH_PROJECTS ACTIVE_BRANCHES = ["try"] ACTIVE_THUNDERBIRD_BRANCHES = ["try-comm-central"] ACTIVE_RELEASE_BRANCHES = [] ACTIVE_THUNDERBIRD_RELEASE_BRANCHES = [] ACTIVE_MOBILE_RELEASE_BRANCHES = [] ACTIVE_PROJECTS = [k for k, v in PROJECTS.items() if v.get("enable_try")] ACTIVE_BRANCH_PROJECTS = [k for k, v in BRANCH_PROJECTS.items() if v.get("enable_try")] # Override with TRY_SLAVES SLAVES = TRY_SLAVES ENABLE_RELEASES = False