Make pushing zuul refs upstream optional.
And the default -- so that Zuul doesn't need any special gerrit
privileges to run out of the box.
Change-Id: I36411b299c8363d509498ece8ea21f88665ca39a
Reviewed-on: https://review.openstack.org/11589
Reviewed-by: Clark Boylan <clark.boylan@gmail.com>
Approved: James E. Blair <corvus@inaugust.com>
Tested-by: Jenkins
diff --git a/tests/fixtures/zuul.conf b/tests/fixtures/zuul.conf
index 916cddd..6df15c0 100644
--- a/tests/fixtures/zuul.conf
+++ b/tests/fixtures/zuul.conf
@@ -11,3 +11,4 @@
[zuul]
layout_config=layout.yaml
git_dir=/tmp/zuul-test/git
+push_change_refs=true
diff --git a/zuul/merger.py b/zuul/merger.py
index 2719346..aa640e5 100644
--- a/zuul/merger.py
+++ b/zuul/merger.py
@@ -84,12 +84,13 @@
class Merger(object):
log = logging.getLogger("zuul.Merger")
- def __init__(self, trigger, working_root):
+ def __init__(self, trigger, working_root, push_refs):
self.trigger = trigger
self.repos = {}
self.working_root = working_root
if not os.path.exists(working_root):
os.makedirs(working_root)
+ self.push_refs = push_refs
def addProject(self, project, url):
try:
@@ -145,19 +146,20 @@
self.log.info("Unable to merge %s" % change)
return False
- # Push the results upstream to the zuul ref
- for project, branches in projects.items():
- repo = self.getRepo(project)
- for branch in branches:
- ref = 'refs/zuul/' + branch + '/' + target_ref
- try:
- repo.push(ref, ref)
- complete = self.trigger.waitForRefSha(project, ref)
- except:
- self.log.exception("Unable to push %s" % ref)
- return False
- if not complete:
- self.log.error("Ref %s did not show up in repo" % ref)
- return False
+ if self.push_refs:
+ # Push the results upstream to the zuul ref
+ for project, branches in projects.items():
+ repo = self.getRepo(project)
+ for branch in branches:
+ ref = 'refs/zuul/' + branch + '/' + target_ref
+ try:
+ repo.push(ref, ref)
+ complete = self.trigger.waitForRefSha(project, ref)
+ except:
+ self.log.exception("Unable to push %s" % ref)
+ return False
+ if not complete:
+ self.log.error("Ref %s did not show up in repo" % ref)
+ return False
return True
diff --git a/zuul/scheduler.py b/zuul/scheduler.py
index 4ef7fea..3f0289a 100644
--- a/zuul/scheduler.py
+++ b/zuul/scheduler.py
@@ -163,7 +163,11 @@
merge_root = self.config.get('zuul', 'git_dir')
else:
merge_root = '/var/lib/zuul/git'
- self.merger = merger.Merger(self.trigger, merge_root)
+ if self.config.has_option('zuul', 'push_change_refs'):
+ push_refs = self.config.getboolean('zuul', 'push_change_refs')
+ else:
+ push_refs = False
+ self.merger = merger.Merger(self.trigger, merge_root, push_refs)
for project in self.projects.values():
url = self.trigger.getGitUrl(project)
self.merger.addProject(project, url)