Merge "Pagure - add support for git.tag.creation event"
This commit is contained in:
commit
7bed463a48
|
@ -1461,6 +1461,20 @@ class FakePagureConnection(pagureconnection.PagureConnection):
|
|||
}
|
||||
return (name, data)
|
||||
|
||||
def getGitTagCreatedEvent(self, project, tag, rev):
|
||||
name = 'pg_push'
|
||||
data = {
|
||||
'msg': {
|
||||
'project_fullname': project,
|
||||
'tag': tag,
|
||||
'rev': rev
|
||||
},
|
||||
'msg_id': str(uuid.uuid4()),
|
||||
'timestamp': 1427459070,
|
||||
'topic': 'git.tag.creation',
|
||||
}
|
||||
return (name, data)
|
||||
|
||||
def setZuulWebPort(self, port):
|
||||
self.zuul_web_port = port
|
||||
|
||||
|
|
|
@ -32,6 +32,15 @@
|
|||
- event: pg_push
|
||||
ref: ^refs/heads/.*$
|
||||
|
||||
- pipeline:
|
||||
name: tag
|
||||
post-review: true
|
||||
manager: independent
|
||||
trigger:
|
||||
pagure:
|
||||
- event: pg_push
|
||||
ref: ^refs/tags/.*$
|
||||
|
||||
- job:
|
||||
name: base
|
||||
parent: null
|
||||
|
@ -49,6 +58,10 @@
|
|||
name: project-post-job
|
||||
run: playbooks/project-post.yaml
|
||||
|
||||
- job:
|
||||
name: project-tag-job
|
||||
run: playbooks/project-tag.yaml
|
||||
|
||||
- project:
|
||||
name: org/project
|
||||
check:
|
||||
|
@ -58,3 +71,6 @@
|
|||
post:
|
||||
jobs:
|
||||
- project-post-job
|
||||
tag:
|
||||
jobs:
|
||||
- project-tag-job
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import os
|
||||
import re
|
||||
import git
|
||||
import yaml
|
||||
import socket
|
||||
|
||||
|
@ -241,6 +243,28 @@ class TestPagureDriver(ZuulTestCase):
|
|||
], ordered=False
|
||||
)
|
||||
|
||||
@simple_layout('layouts/basic-pagure.yaml', driver='pagure')
|
||||
def test_tag_created(self):
|
||||
|
||||
path = os.path.join(self.upstream_root, 'org/project')
|
||||
repo = git.Repo(path)
|
||||
repo.create_tag('1.0')
|
||||
tagsha = repo.tags['1.0'].commit.hexsha
|
||||
event = self.fake_pagure.getGitTagCreatedEvent(
|
||||
'org/project', '1.0', tagsha)
|
||||
self.fake_pagure.emitEvent(event)
|
||||
self.waitUntilSettled()
|
||||
self.assertEqual(1, len(self.history))
|
||||
self.assertEqual(
|
||||
'SUCCESS',
|
||||
self.getJobFromHistory('project-tag-job').result)
|
||||
job = self.getJobFromHistory('project-tag-job')
|
||||
zuulvars = job.parameters['zuul']
|
||||
self.assertEqual('refs/tags/1.0', zuulvars['ref'])
|
||||
self.assertEqual('tag', zuulvars['pipeline'])
|
||||
self.assertEqual('project-tag-job', zuulvars['job'])
|
||||
self.assertEqual(tagsha, zuulvars['newrev'])
|
||||
|
||||
@simple_layout('layouts/basic-pagure.yaml', driver='pagure')
|
||||
def test_client_dequeue_change_pagure(self):
|
||||
|
||||
|
|
|
@ -68,8 +68,6 @@ from zuul.driver.pagure.paguremodel import PagureTriggerEvent, PullRequest
|
|||
# api_token=QX29SXAW96C2CTLUNA5JKEEU65INGWTO2B5NHBDBRMF67S7PYZWCS0L1AKHXXXXX
|
||||
#
|
||||
# Current Non blocking issues:
|
||||
# - Pagure does not send event when git tag is added/removed
|
||||
# https://pagure.io/pagure/issue/4400 (merged so need to be used)
|
||||
# - Pagure does not send the oldrev info when a branch is updated/created
|
||||
# https://pagure.io/pagure/issue/4401
|
||||
# - Pagure does not send an event when a branch is deleted
|
||||
|
@ -209,7 +207,8 @@ class PagureEventConnector(threading.Thread):
|
|||
'pull-request.initial_comment.edited':
|
||||
self._event_issue_initial_comment,
|
||||
'pull-request.tag.added':
|
||||
self._event_pull_request_tags_changed
|
||||
self._event_pull_request_tags_changed,
|
||||
'git.tag.creation': self._event_tag_created,
|
||||
}
|
||||
|
||||
def stop(self):
|
||||
|
@ -336,6 +335,15 @@ class PagureEventConnector(threading.Thread):
|
|||
event.action = 'status'
|
||||
return event
|
||||
|
||||
def _event_tag_created(self, body):
|
||||
event, data = self._event_base(body)
|
||||
event.project_name = data.get('project_fullname')
|
||||
event.tag = data.get('tag')
|
||||
event.ref = 'refs/tags/%s' % event.tag
|
||||
event.oldrev = None
|
||||
event.newrev = data.get('rev')
|
||||
return event
|
||||
|
||||
def _event_ref_updated(self, body):
|
||||
""" Handles ref updated """
|
||||
# https://fedora-fedmsg.readthedocs.io/en/latest/topics.html#git-receive
|
||||
|
@ -726,16 +734,17 @@ class PagureConnection(BaseConnection):
|
|||
project, event.ref))
|
||||
if event.ref and event.ref.startswith('refs/tags/'):
|
||||
change = Tag(project)
|
||||
change.tag = event.ref[len('refs/tags/'):]
|
||||
change.tag = event.tag
|
||||
change.branch = None
|
||||
elif event.ref and event.ref.startswith('refs/heads/'):
|
||||
change = Branch(project)
|
||||
change.branch = event.ref[len('refs/heads/'):]
|
||||
change.branch = event.branch
|
||||
else:
|
||||
change = Ref(project)
|
||||
|
||||
change.ref = event.ref
|
||||
change.oldrev = event.oldrev
|
||||
change.newrev = event.newrev
|
||||
change.branch = event.branch
|
||||
change.url = self.getGitwebUrl(project, sha=event.newrev)
|
||||
|
||||
# Pagure does not send files details in the git-receive event.
|
||||
|
@ -744,6 +753,7 @@ class PagureConnection(BaseConnection):
|
|||
change.files = None
|
||||
|
||||
change.source_event = event
|
||||
|
||||
return change
|
||||
|
||||
def _getChange(self, project, number, patchset=None,
|
||||
|
|
Loading…
Reference in New Issue