summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Denneen <cdenneen@gmail.com>2016-05-03 11:32:26 -0400
committerKien Ha <kienha9922@gmail.com>2016-08-01 12:29:13 -0400
commit1780551b8e781c70e2a301abc29596eed246a70c (patch)
treeac657c009702e8ecb7e48d41e712e1fca0091d8c
parentd6add35e72c6c2beb44b1be57f589d79f98f5551 (diff)
downloadpython-jenkins-job-builder-1780551b8e781c70e2a301abc29596eed246a70c.tar.gz
python-jenkins-job-builder-1780551b8e781c70e2a301abc29596eed246a70c.tar.xz
python-jenkins-job-builder-1780551b8e781c70e2a301abc29596eed246a70c.zip
gitlab trigger: Support new "trigger-open-merge-request-push" options
- Add full and minimal tests for version 1.1.26 - Remove extra period in docs Change-Id: I34be79e808e295d8b72e5a2eed4afacf4cde3e34 Story: 2000523 Co-Authored-By: Kien Ha <kienha9922@gmail.com> Signed-off-by: Kien Ha <kienha9922@gmail.com>
-rw-r--r--jenkins_jobs/modules/triggers.py61
-rw-r--r--tests/triggers/fixtures/gitlab001.xml2
-rw-r--r--tests/triggers/fixtures/gitlab002.xml2
-rw-r--r--tests/triggers/fixtures/gitlab003.xml2
-rw-r--r--tests/triggers/fixtures/gitlab004.plugins_info.yaml3
-rw-r--r--tests/triggers/fixtures/gitlab004.xml19
-rw-r--r--tests/triggers/fixtures/gitlab004.yaml18
-rw-r--r--tests/triggers/fixtures/gitlab005.plugins_info.yaml3
-rw-r--r--tests/triggers/fixtures/gitlab005.xml19
-rw-r--r--tests/triggers/fixtures/gitlab005.yaml2
10 files changed, 111 insertions, 20 deletions
diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py
index 1e6e6805..89140b3c 100644
--- a/jenkins_jobs/modules/triggers.py
+++ b/jenkins_jobs/modules/triggers.py
@@ -30,6 +30,7 @@ Example::
"""
import logging
+import pkg_resources
import re
import xml.etree.ElementTree as XML
@@ -1066,14 +1067,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)
@@ -1089,10 +1098,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
@@ -1100,29 +1119,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']
+
+ 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)
- bool_mapping = (
+ 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))
diff --git a/tests/triggers/fixtures/gitlab001.xml b/tests/triggers/fixtures/gitlab001.xml
index d01b4c91..effd75ea 100644
--- a/tests/triggers/fixtures/gitlab001.xml
+++ b/tests/triggers/fixtures/gitlab001.xml
@@ -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>
diff --git a/tests/triggers/fixtures/gitlab002.xml b/tests/triggers/fixtures/gitlab002.xml
index 6d9442f9..603b4e19 100644
--- a/tests/triggers/fixtures/gitlab002.xml
+++ b/tests/triggers/fixtures/gitlab002.xml
@@ -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>
diff --git a/tests/triggers/fixtures/gitlab003.xml b/tests/triggers/fixtures/gitlab003.xml
index f3ad460e..feb8ab0c 100644
--- a/tests/triggers/fixtures/gitlab003.xml
+++ b/tests/triggers/fixtures/gitlab003.xml
@@ -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>
diff --git a/tests/triggers/fixtures/gitlab004.plugins_info.yaml b/tests/triggers/fixtures/gitlab004.plugins_info.yaml
new file mode 100644
index 00000000..56447ee9
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab004.plugins_info.yaml
@@ -0,0 +1,3 @@
+- longName: 'GitLab Plugin'
+ shortName: 'gitlab-plugin'
+ version: "1.1.26"
diff --git a/tests/triggers/fixtures/gitlab004.xml b/tests/triggers/fixtures/gitlab004.xml
new file mode 100644
index 00000000..5b64ddf0
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab004.xml
@@ -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>
diff --git a/tests/triggers/fixtures/gitlab004.yaml b/tests/triggers/fixtures/gitlab004.yaml
new file mode 100644
index 00000000..d4f21d13
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab004.yaml
@@ -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'
diff --git a/tests/triggers/fixtures/gitlab005.plugins_info.yaml b/tests/triggers/fixtures/gitlab005.plugins_info.yaml
new file mode 100644
index 00000000..56447ee9
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab005.plugins_info.yaml
@@ -0,0 +1,3 @@
+- longName: 'GitLab Plugin'
+ shortName: 'gitlab-plugin'
+ version: "1.1.26"
diff --git a/tests/triggers/fixtures/gitlab005.xml b/tests/triggers/fixtures/gitlab005.xml
new file mode 100644
index 00000000..393d4f90
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab005.xml
@@ -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>
diff --git a/tests/triggers/fixtures/gitlab005.yaml b/tests/triggers/fixtures/gitlab005.yaml
new file mode 100644
index 00000000..eff43973
--- /dev/null
+++ b/tests/triggers/fixtures/gitlab005.yaml
@@ -0,0 +1,2 @@
+triggers:
+ - gitlab