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)
|
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):
|
def setZuulWebPort(self, port):
|
||||||
self.zuul_web_port = port
|
self.zuul_web_port = port
|
||||||
|
|
||||||
|
16
tests/fixtures/layouts/basic-pagure.yaml
vendored
16
tests/fixtures/layouts/basic-pagure.yaml
vendored
@ -32,6 +32,15 @@
|
|||||||
- event: pg_push
|
- event: pg_push
|
||||||
ref: ^refs/heads/.*$
|
ref: ^refs/heads/.*$
|
||||||
|
|
||||||
|
- pipeline:
|
||||||
|
name: tag
|
||||||
|
post-review: true
|
||||||
|
manager: independent
|
||||||
|
trigger:
|
||||||
|
pagure:
|
||||||
|
- event: pg_push
|
||||||
|
ref: ^refs/tags/.*$
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: base
|
name: base
|
||||||
parent: null
|
parent: null
|
||||||
@ -49,6 +58,10 @@
|
|||||||
name: project-post-job
|
name: project-post-job
|
||||||
run: playbooks/project-post.yaml
|
run: playbooks/project-post.yaml
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: project-tag-job
|
||||||
|
run: playbooks/project-tag.yaml
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
name: org/project
|
name: org/project
|
||||||
check:
|
check:
|
||||||
@ -58,3 +71,6 @@
|
|||||||
post:
|
post:
|
||||||
jobs:
|
jobs:
|
||||||
- project-post-job
|
- project-post-job
|
||||||
|
tag:
|
||||||
|
jobs:
|
||||||
|
- project-tag-job
|
||||||
|
@ -12,7 +12,9 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
|
import git
|
||||||
import yaml
|
import yaml
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
@ -241,6 +243,28 @@ class TestPagureDriver(ZuulTestCase):
|
|||||||
], ordered=False
|
], 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')
|
@simple_layout('layouts/basic-pagure.yaml', driver='pagure')
|
||||||
def test_client_dequeue_change_pagure(self):
|
def test_client_dequeue_change_pagure(self):
|
||||||
|
|
||||||
|
@ -68,8 +68,6 @@ from zuul.driver.pagure.paguremodel import PagureTriggerEvent, PullRequest
|
|||||||
# api_token=QX29SXAW96C2CTLUNA5JKEEU65INGWTO2B5NHBDBRMF67S7PYZWCS0L1AKHXXXXX
|
# api_token=QX29SXAW96C2CTLUNA5JKEEU65INGWTO2B5NHBDBRMF67S7PYZWCS0L1AKHXXXXX
|
||||||
#
|
#
|
||||||
# Current Non blocking issues:
|
# 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
|
# - Pagure does not send the oldrev info when a branch is updated/created
|
||||||
# https://pagure.io/pagure/issue/4401
|
# https://pagure.io/pagure/issue/4401
|
||||||
# - Pagure does not send an event when a branch is deleted
|
# - Pagure does not send an event when a branch is deleted
|
||||||
@ -209,7 +207,8 @@ class PagureEventConnector(threading.Thread):
|
|||||||
'pull-request.initial_comment.edited':
|
'pull-request.initial_comment.edited':
|
||||||
self._event_issue_initial_comment,
|
self._event_issue_initial_comment,
|
||||||
'pull-request.tag.added':
|
'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):
|
def stop(self):
|
||||||
@ -336,6 +335,15 @@ class PagureEventConnector(threading.Thread):
|
|||||||
event.action = 'status'
|
event.action = 'status'
|
||||||
return event
|
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):
|
def _event_ref_updated(self, body):
|
||||||
""" Handles ref updated """
|
""" Handles ref updated """
|
||||||
# https://fedora-fedmsg.readthedocs.io/en/latest/topics.html#git-receive
|
# https://fedora-fedmsg.readthedocs.io/en/latest/topics.html#git-receive
|
||||||
@ -726,16 +734,17 @@ class PagureConnection(BaseConnection):
|
|||||||
project, event.ref))
|
project, event.ref))
|
||||||
if event.ref and event.ref.startswith('refs/tags/'):
|
if event.ref and event.ref.startswith('refs/tags/'):
|
||||||
change = Tag(project)
|
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/'):
|
elif event.ref and event.ref.startswith('refs/heads/'):
|
||||||
change = Branch(project)
|
change = Branch(project)
|
||||||
change.branch = event.ref[len('refs/heads/'):]
|
change.branch = event.branch
|
||||||
else:
|
else:
|
||||||
change = Ref(project)
|
change = Ref(project)
|
||||||
|
|
||||||
change.ref = event.ref
|
change.ref = event.ref
|
||||||
change.oldrev = event.oldrev
|
change.oldrev = event.oldrev
|
||||||
change.newrev = event.newrev
|
change.newrev = event.newrev
|
||||||
change.branch = event.branch
|
|
||||||
change.url = self.getGitwebUrl(project, sha=event.newrev)
|
change.url = self.getGitwebUrl(project, sha=event.newrev)
|
||||||
|
|
||||||
# Pagure does not send files details in the git-receive event.
|
# Pagure does not send files details in the git-receive event.
|
||||||
@ -744,6 +753,7 @@ class PagureConnection(BaseConnection):
|
|||||||
change.files = None
|
change.files = None
|
||||||
|
|
||||||
change.source_event = event
|
change.source_event = event
|
||||||
|
|
||||||
return change
|
return change
|
||||||
|
|
||||||
def _getChange(self, project, number, patchset=None,
|
def _getChange(self, project, number, patchset=None,
|
||||||
|
Loading…
Reference in New Issue
Block a user