Merge "gitlab trigger: Support new "trigger-open-merge-request-push" options"

This commit is contained in:
Jenkins
2016-08-18 16:20:10 +00:00
committed by Gerrit Code Review
10 changed files with 111 additions and 20 deletions

View File

@@ -30,6 +30,7 @@ Example::
"""
import logging
import pkg_resources
import re
import xml.etree.ElementTree as XML
@@ -1059,14 +1060,22 @@ def gitlab_merge_request(parser, xml_parent, data):
def gitlab(parser, xml_parent, data):
"""yaml: gitlab
Makes Jenkins act like a GitlabCI server
Requires the Jenkins :jenkins-wiki:`Gitlab Plugin.
<Gitlab+Plugin>`.
Requires the Jenkins :jenkins-wiki:`GitLab Plugin
<GitLab+Plugin>`.
:arg bool trigger-push: Build on Push Events (default true)
:arg bool trigger-merge-request: Build on Merge Request Events (default
True)
:arg bool trigger-open-merge-request-push: Rebuild open Merge Requests on
Push Events (default true)
:arg str trigger-open-merge-request-push: Rebuild open Merge Requests
on Push Events.
:trigger-open-merge-request-push values (< 1.1.26):
* **true** (default)
* **false**
:trigger-open-merge-request-push values (>= 1.1.26):
* **never** (default)
* **source**
* **both**
:arg bool ci-skip: Enable [ci-skip] (default true)
:arg bool set-build-description: Set build description to build cause
(eg. Merge request or Git Push ) (default true)
@@ -1082,10 +1091,20 @@ def gitlab(parser, xml_parent, data):
:arg list exclude-branches: Defined list of branches to exclude
(default [])
Example:
Example (version < 1.1.26):
.. literalinclude::
/../../tests/triggers/fixtures/gitlab001.yaml
.. literalinclude:: /../../tests/triggers/fixtures/gitlab001.yaml
:language: yaml
Minimal example (version >= 1.1.26):
.. literalinclude:: /../../tests/triggers/fixtures/gitlab005.yaml
:language: yaml
Full example (version >= 1.1.26):
.. literalinclude:: /../../tests/triggers/fixtures/gitlab004.yaml
:language: yaml
"""
def _add_xml(elem, name, value):
XML.SubElement(elem, name).text = value
@@ -1093,29 +1112,37 @@ def gitlab(parser, xml_parent, data):
gitlab = XML.SubElement(
xml_parent, 'com.dabsquared.gitlabjenkins.GitLabPushTrigger'
)
plugin_info = parser.registry.get_plugin_info('GitLab Plugin')
plugin_ver = pkg_resources.parse_version(plugin_info.get('version', "0"))
valid_merge_request = ['never', 'source', 'both']
bool_mapping = (
if plugin_ver >= pkg_resources.parse_version("1.1.26"):
mapping = [
('trigger-open-merge-request-push',
'triggerOpenMergeRequestOnPush', 'never', valid_merge_request)]
convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
else:
mapping = [
('trigger-open-merge-request-push',
'triggerOpenMergeRequestOnPush', True)]
convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
XML.SubElement(gitlab, 'spec').text = ''
bool_mapping = [
('trigger-push', 'triggerOnPush', True),
('trigger-merge-request', 'triggerOnMergeRequest', True),
('trigger-open-merge-request-push', 'triggerOpenMergeRequestOnPush',
True),
('ci-skip', 'ciSkip', True),
('set-build-description', 'setBuildDescription', True),
('add-note-merge-request', 'addNoteOnMergeRequest', True),
('add-vote-merge-request', 'addVoteOnMergeRequest', True),
('add-ci-message', 'addCiMessage', False),
('allow-all-branches', 'allowAllBranches', False),
)
]
list_mapping = (
('include-branches', 'includeBranchesSpec', []),
('exclude-branches', 'excludeBranchesSpec', []),
)
XML.SubElement(gitlab, 'spec').text = ''
for yaml_name, xml_name, default_val in bool_mapping:
value = str(data.get(yaml_name, default_val)).lower()
_add_xml(gitlab, xml_name, value)
convert_mapping_to_xml(gitlab, data, bool_mapping, fail_required=True)
for yaml_name, xml_name, default_val in list_mapping:
value = ', '.join(data.get(yaml_name, default_val))

View File

@@ -2,10 +2,10 @@
<project>
<triggers class="vector">
<com.dabsquared.gitlabjenkins.GitLabPushTrigger>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<spec/>
<triggerOnPush>true</triggerOnPush>
<triggerOnMergeRequest>true</triggerOnMergeRequest>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<ciSkip>true</ciSkip>
<setBuildDescription>true</setBuildDescription>
<addNoteOnMergeRequest>true</addNoteOnMergeRequest>

View File

@@ -2,10 +2,10 @@
<project>
<triggers class="vector">
<com.dabsquared.gitlabjenkins.GitLabPushTrigger>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<spec/>
<triggerOnPush>true</triggerOnPush>
<triggerOnMergeRequest>true</triggerOnMergeRequest>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<ciSkip>true</ciSkip>
<setBuildDescription>true</setBuildDescription>
<addNoteOnMergeRequest>true</addNoteOnMergeRequest>

View File

@@ -2,10 +2,10 @@
<project>
<triggers class="vector">
<com.dabsquared.gitlabjenkins.GitLabPushTrigger>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<spec/>
<triggerOnPush>true</triggerOnPush>
<triggerOnMergeRequest>true</triggerOnMergeRequest>
<triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush>
<ciSkip>true</ciSkip>
<setBuildDescription>true</setBuildDescription>
<addNoteOnMergeRequest>true</addNoteOnMergeRequest>

View File

@@ -0,0 +1,3 @@
- longName: 'GitLab Plugin'
shortName: 'gitlab-plugin'
version: "1.1.26"

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<com.dabsquared.gitlabjenkins.GitLabPushTrigger>
<triggerOpenMergeRequestOnPush>both</triggerOpenMergeRequestOnPush>
<spec/>
<triggerOnPush>false</triggerOnPush>
<triggerOnMergeRequest>false</triggerOnMergeRequest>
<ciSkip>false</ciSkip>
<setBuildDescription>false</setBuildDescription>
<addNoteOnMergeRequest>false</addNoteOnMergeRequest>
<addVoteOnMergeRequest>false</addVoteOnMergeRequest>
<addCiMessage>true</addCiMessage>
<allowAllBranches>true</allowAllBranches>
<includeBranchesSpec>master, master2, local-test</includeBranchesSpec>
<excludeBranchesSpec>broken-test, master-foo</excludeBranchesSpec>
</com.dabsquared.gitlabjenkins.GitLabPushTrigger>
</triggers>
</project>

View File

@@ -0,0 +1,18 @@
triggers:
- gitlab:
trigger-push: false
trigger-merge-request: false
trigger-open-merge-request-push: both
ci-skip: false
set-build-description: false
add-note-merge-request: false
add-vote-merge-request: false
add-ci-message: true
allow-all-branches: true
include-branches:
- 'master'
- 'master2'
- 'local-test'
exclude-branches:
- 'broken-test'
- 'master-foo'

View File

@@ -0,0 +1,3 @@
- longName: 'GitLab Plugin'
shortName: 'gitlab-plugin'
version: "1.1.26"

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<com.dabsquared.gitlabjenkins.GitLabPushTrigger>
<triggerOpenMergeRequestOnPush>never</triggerOpenMergeRequestOnPush>
<spec/>
<triggerOnPush>true</triggerOnPush>
<triggerOnMergeRequest>true</triggerOnMergeRequest>
<ciSkip>true</ciSkip>
<setBuildDescription>true</setBuildDescription>
<addNoteOnMergeRequest>true</addNoteOnMergeRequest>
<addVoteOnMergeRequest>true</addVoteOnMergeRequest>
<addCiMessage>false</addCiMessage>
<allowAllBranches>false</allowAllBranches>
<includeBranchesSpec/>
<excludeBranchesSpec/>
</com.dabsquared.gitlabjenkins.GitLabPushTrigger>
</triggers>
</project>

View File

@@ -0,0 +1,2 @@
triggers:
- gitlab