Merge "Check out implicit branch in timer jobs" into feature/zuulv3
This commit is contained in:
@@ -26,7 +26,7 @@ import queue
|
||||
import voluptuous as v
|
||||
|
||||
from zuul.connection import BaseConnection
|
||||
from zuul.model import Ref
|
||||
from zuul.model import Ref, Tag, Branch
|
||||
from zuul import exceptions
|
||||
from zuul.driver.gerrit.gerritmodel import GerritChange, GerritTriggerEvent
|
||||
|
||||
@@ -293,7 +293,34 @@ class GerritConnection(BaseConnection):
|
||||
if event.change_number:
|
||||
change = self._getChange(event.change_number, event.patch_number,
|
||||
refresh=refresh)
|
||||
elif event.ref and event.ref.startswith('refs/tags/'):
|
||||
project = self.source.getProject(event.project_name)
|
||||
change = Tag(project)
|
||||
change.tag = event.ref[len('refs/tags/'):]
|
||||
change.ref = event.ref
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.url = self._getGitwebUrl(project, sha=event.newrev)
|
||||
elif event.ref and not event.ref.startswith('refs/'):
|
||||
# Gerrit ref-updated events don't have branch prefixes.
|
||||
project = self.source.getProject(event.project_name)
|
||||
change = Branch(project)
|
||||
change.branch = event.ref
|
||||
change.ref = 'refs/heads/' + event.ref
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.url = self._getGitwebUrl(project, sha=event.newrev)
|
||||
elif event.ref and event.ref.startswith('refs/heads/'):
|
||||
# From the timer trigger
|
||||
project = self.source.getProject(event.project_name)
|
||||
change = Branch(project)
|
||||
change.ref = event.ref
|
||||
change.branch = event.branch
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.url = self._getGitwebUrl(project, sha=event.newrev)
|
||||
elif event.ref:
|
||||
# catch-all ref (ie, not a branch or head)
|
||||
project = self.source.getProject(event.project_name)
|
||||
change = Ref(project)
|
||||
change.ref = event.ref
|
||||
@@ -301,14 +328,8 @@ class GerritConnection(BaseConnection):
|
||||
change.newrev = event.newrev
|
||||
change.url = self._getGitwebUrl(project, sha=event.newrev)
|
||||
else:
|
||||
project = self.source.getProject(event.project_name)
|
||||
change = Ref(project)
|
||||
branch = event.branch or 'master'
|
||||
change.ref = 'refs/heads/%s' % branch
|
||||
refs = self.getInfoRefs(project)
|
||||
change.oldrev = refs[change.ref]
|
||||
change.newrev = refs[change.ref]
|
||||
change.url = self._getGitwebUrl(project, sha=change.newrev)
|
||||
self.log.warning("Unable to get change for %s" % (event,))
|
||||
change = None
|
||||
return change
|
||||
|
||||
def _getChange(self, number, patchset, refresh=False, history=None):
|
||||
|
||||
@@ -32,7 +32,7 @@ import github3
|
||||
from github3.exceptions import MethodNotAllowed
|
||||
|
||||
from zuul.connection import BaseConnection
|
||||
from zuul.model import Ref
|
||||
from zuul.model import Ref, Branch, Tag
|
||||
from zuul.exceptions import MergeFailure
|
||||
from zuul.driver.github.githubmodel import PullRequest, GithubTriggerEvent
|
||||
|
||||
@@ -506,16 +506,21 @@ class GithubConnection(BaseConnection):
|
||||
change.source_event = event
|
||||
change.is_current_patchset = (change.pr.get('head').get('sha') ==
|
||||
event.patch_number)
|
||||
elif event.ref:
|
||||
change = Ref(project)
|
||||
else:
|
||||
if event.ref and event.ref.startswith('refs/tags/'):
|
||||
change = Tag(project)
|
||||
change.tag = event.ref[len('refs/tags/'):]
|
||||
elif event.ref and event.ref.startswith('refs/heads/'):
|
||||
change = Branch(project)
|
||||
change.branch = event.ref[len('refs/heads/'):]
|
||||
else:
|
||||
change = Ref(project)
|
||||
change.ref = event.ref
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.url = self.getGitwebUrl(project, sha=event.newrev)
|
||||
change.source_event = event
|
||||
change.files = self.getPushedFileNames(event)
|
||||
else:
|
||||
change = Ref(project)
|
||||
return change
|
||||
|
||||
def _getChange(self, project, number, patchset=None, refresh=False,
|
||||
|
||||
@@ -80,15 +80,18 @@ class TimerDriver(Driver, TriggerInterface):
|
||||
|
||||
def _onTrigger(self, tenant, pipeline_name, timespec):
|
||||
for project_name in tenant.layout.project_configs.keys():
|
||||
project_hostname, project_name = project_name.split('/', 1)
|
||||
event = TimerTriggerEvent()
|
||||
event.type = 'timer'
|
||||
event.timespec = timespec
|
||||
event.forced_pipeline = pipeline_name
|
||||
event.project_hostname = project_hostname
|
||||
event.project_name = project_name
|
||||
self.log.debug("Adding event %s" % event)
|
||||
self.sched.addEvent(event)
|
||||
(trusted, project) = tenant.getProject(project_name)
|
||||
for branch in project.source.getProjectBranches(project):
|
||||
event = TimerTriggerEvent()
|
||||
event.type = 'timer'
|
||||
event.timespec = timespec
|
||||
event.forced_pipeline = pipeline_name
|
||||
event.project_hostname = project.canonical_hostname
|
||||
event.project_name = project.name
|
||||
event.ref = 'refs/heads/%s' % branch
|
||||
event.branch = branch
|
||||
self.log.debug("Adding event %s" % event)
|
||||
self.sched.addEvent(event)
|
||||
|
||||
def stop(self):
|
||||
if self.apsched:
|
||||
|
||||
Reference in New Issue
Block a user