diff options
author | Chris Denneen <cdenneen@gmail.com> | 2016-05-03 11:32:26 -0400 |
---|---|---|
committer | Kien Ha <kienha9922@gmail.com> | 2016-08-01 12:29:13 -0400 |
commit | 1780551b8e781c70e2a301abc29596eed246a70c (patch) | |
tree | ac657c009702e8ecb7e48d41e712e1fca0091d8c | |
parent | d6add35e72c6c2beb44b1be57f589d79f98f5551 (diff) | |
download | python-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.py | 61 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab001.xml | 2 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab002.xml | 2 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab003.xml | 2 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab004.plugins_info.yaml | 3 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab004.xml | 19 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab004.yaml | 18 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab005.plugins_info.yaml | 3 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab005.xml | 19 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab005.yaml | 2 |
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 |