Add Gitlab Merge Request trigger

Change-Id: Ic068cf7e89be76f0f9e9187caf628fa49d7bd7fd
This commit is contained in:
Christian Hofstaedtler 2014-07-02 11:20:26 +02:00
parent d833015640
commit 41af1b9e98
4 changed files with 48 additions and 0 deletions

View File

@ -407,6 +407,39 @@ def github_pull_request(parser, xml_parent, data):
data.get('auto-close-on-fail', False)).lower()
def gitlab_merge_request(parser, xml_parent, data):
"""yaml: gitlab-merge-request
Build merge requests in gitlab and report results.
Requires the Jenkins `Gitlab MergeRequest Builder Plugin.
<https://wiki.jenkins-ci.org/display/JENKINS/
Gitlab+Merge+Request+Builder+Plugin>`_
:arg string cron: cron syntax of when to run (required)
:arg string project-path: gitlab-relative path to project (required)
Example:
.. literalinclude:: \
/../../tests/triggers/fixtures/gitlab-merge-request.yaml
"""
ghprb = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.gitlab.'
'GitlabBuildTrigger')
if not data.get('cron', None):
raise jenkins_jobs.errors.JenkinsJobsException(
'gitlab-merge-request is missing "cron"')
if not data.get('project-path', None):
raise jenkins_jobs.errors.JenkinsJobsException(
'gitlab-merge-request is missing "project-path"')
# Because of a design limitation in the GitlabBuildTrigger Jenkins plugin
# both 'spec' and '__cron' have to be set to the same value to have them
# take effect. Also, cron and projectPath are prefixed with underscores
# in the plugin, but spec is not.
XML.SubElement(ghprb, 'spec').text = data.get('cron')
XML.SubElement(ghprb, '__cron').text = data.get('cron')
XML.SubElement(ghprb, '__projectPath').text = data.get('project-path')
def build_result(parser, xml_parent, data):
"""yaml: build-result
Configure jobB to monitor jobA build result. A build is scheduled if there

View File

@ -171,6 +171,7 @@ jenkins_jobs.triggers =
gerrit=jenkins_jobs.modules.triggers:gerrit
github=jenkins_jobs.modules.triggers:github
github-pull-request=jenkins_jobs.modules.triggers:github_pull_request
gitlab-merge-request=jenkins_jobs.modules.triggers:gitlab_merge_request
pollscm=jenkins_jobs.modules.triggers:pollscm
script=jenkins_jobs.modules.triggers:script
timed=jenkins_jobs.modules.triggers:timed

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<org.jenkinsci.plugins.gitlab.GitlabBuildTrigger>
<spec>* * * * *</spec>
<__cron>* * * * *</__cron>
<__projectPath>test/project</__projectPath>
</org.jenkinsci.plugins.gitlab.GitlabBuildTrigger>
</triggers>
</project>

View File

@ -0,0 +1,4 @@
triggers:
- gitlab-merge-request:
cron: '* * * * *'
project-path: 'test/project'