Merge "gitlab: support the merge request approval event"
This commit is contained in:
commit
955f3bd64f
|
@ -124,6 +124,14 @@ the following options.
|
|||
|
||||
Comment added to merge request.
|
||||
|
||||
.. value:: approved
|
||||
|
||||
Merge request approved.
|
||||
|
||||
.. value:: unapproved
|
||||
|
||||
Merge request unapproved.
|
||||
|
||||
.. attr:: comment
|
||||
|
||||
This is only used for ``gl_merge_request`` and ``comment`` actions. It
|
||||
|
|
|
@ -1802,7 +1802,7 @@ class FakeGitlabMergeRequest(object):
|
|||
def _updateTimeStamp(self):
|
||||
self.updated_at = datetime.datetime.now()
|
||||
|
||||
def getMergeRequestOpenedEvent(self, action='open'):
|
||||
def getMergeRequestEvent(self, action):
|
||||
name = 'gl_merge_request'
|
||||
data = {
|
||||
'object_kind': 'merge_request',
|
||||
|
@ -1823,9 +1823,18 @@ class FakeGitlabMergeRequest(object):
|
|||
}
|
||||
return (name, data)
|
||||
|
||||
def getMergeRequestOpenedEvent(self):
|
||||
return self.getMergeRequestEvent(action='open')
|
||||
|
||||
def getMergeRequestUpdatedEvent(self):
|
||||
self.addCommit()
|
||||
return self.getMergeRequestOpenedEvent(action='update')
|
||||
return self.getMergeRequestEvent(action='update')
|
||||
|
||||
def getMergeRequestApprovedEvent(self):
|
||||
return self.getMergeRequestEvent(action='approved')
|
||||
|
||||
def getMergeRequestUnapprovedEvent(self):
|
||||
return self.getMergeRequestEvent(action='unapproved')
|
||||
|
||||
def getMergeRequestCommentedEvent(self, note):
|
||||
self.addNote(note)
|
||||
|
|
|
@ -22,6 +22,16 @@
|
|||
comment: True
|
||||
approval: False
|
||||
|
||||
- pipeline:
|
||||
name: check-approval
|
||||
manager: independent
|
||||
trigger:
|
||||
gitlab:
|
||||
- event: gl_merge_request
|
||||
action:
|
||||
- approved
|
||||
- unapproved
|
||||
|
||||
- pipeline:
|
||||
name: post
|
||||
post-review: true
|
||||
|
@ -61,12 +71,19 @@
|
|||
name: project-tag-job
|
||||
run: playbooks/project-tag.yaml
|
||||
|
||||
- job:
|
||||
name: project-test-approval
|
||||
run: playbooks/project-test-approval.yaml
|
||||
|
||||
- project:
|
||||
name: org/project
|
||||
check:
|
||||
jobs:
|
||||
- project-test1
|
||||
- project-test2
|
||||
check-approval:
|
||||
jobs:
|
||||
- project-test-approval
|
||||
post:
|
||||
jobs:
|
||||
- project-post-job
|
||||
|
|
|
@ -144,6 +144,23 @@ class TestGitlabDriver(ZuulTestCase):
|
|||
], ordered=False
|
||||
)
|
||||
|
||||
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
|
||||
def test_merge_request_approved(self):
|
||||
|
||||
A = self.fake_gitlab.openFakeMergeRequest('org/project', 'master', 'A')
|
||||
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestApprovedEvent())
|
||||
self.waitUntilSettled()
|
||||
self.assertEqual(1, len(self.history))
|
||||
|
||||
self.fake_gitlab.emitEvent(A.getMergeRequestUnapprovedEvent())
|
||||
self.waitUntilSettled()
|
||||
self.assertEqual(2, len(self.history))
|
||||
|
||||
job = self.getJobFromHistory('project-test-approval')
|
||||
zuulvars = job.parameters['zuul']
|
||||
self.assertEqual('check-approval', zuulvars['pipeline'])
|
||||
|
||||
@simple_layout('layouts/basic-gitlab.yaml', driver='gitlab')
|
||||
def test_merge_request_updated_builds_aborted(self):
|
||||
|
||||
|
|
|
@ -132,6 +132,8 @@ class GitlabEventConnector(threading.Thread):
|
|||
event.action = 'opened'
|
||||
elif attrs['action'] == 'update':
|
||||
event.action = 'changed'
|
||||
elif attrs['action'] in ('approved', 'unapproved'):
|
||||
event.action = attrs['action']
|
||||
else:
|
||||
# Do not handle other merge_request action for now.
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue