diff options
author | Christian Fetzer <fetzer.ch@gmail.com> | 2016-07-31 15:21:59 +0200 |
---|---|---|
committer | Christian Fetzer <fetzer.ch@gmail.com> | 2016-08-01 18:34:58 +0200 |
commit | 7b61b011b8fd37b195a0c3d40b63fc187638a8b5 (patch) | |
tree | e5ba4b670f67c8a8270189d6a900cc2ea2753e54 | |
parent | 1780551b8e781c70e2a301abc29596eed246a70c (diff) | |
download | python-jenkins-job-builder-7b61b011b8fd37b195a0c3d40b63fc187638a8b5.tar.gz python-jenkins-job-builder-7b61b011b8fd37b195a0c3d40b63fc187638a8b5.tar.xz python-jenkins-job-builder-7b61b011b8fd37b195a0c3d40b63fc187638a8b5.zip |
gitlab trigger: Update Gitlab to >=1.3.0
Related config changes:
1.1.26: Change triggerOpenMergeRequestOnPush to enum (721fcfdbf81493c8c05893f87048d458524d684d)
1.1.27: Adds addVoteOnMergeRequest and acceptMergeRequestOnSuccess
1.1.28<1.2.0: Adds addCiMessage
1.1.29: Change allowAllBranches to branchFilterName (4da58e696b03273a2c48a3b8c223512bd70bbc80)
1.2.0: Change branchFilterName to branchFilterType (92b79677d2ee4e592686fa39f9d3e253486e40fc)
1.2.4: Adds triggerOnNoteRequest, noteRegex and skipWorkInProgressMergeRequest
Change-Id: Ic3b29cfe43a37554b7e0ae5432ddaf8ef987793e
-rw-r--r-- | jenkins_jobs/modules/triggers.py | 74 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab001.xml | 6 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab002.xml | 6 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab003.xml | 6 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab004.xml | 6 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab005.xml | 6 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab006.plugins_info.yaml | 3 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab006.xml | 25 | ||||
-rw-r--r-- | tests/triggers/fixtures/gitlab006.yaml | 22 |
9 files changed, 145 insertions, 9 deletions
diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py index 89140b3c..f4519ed6 100644 --- a/jenkins_jobs/modules/triggers.py +++ b/jenkins_jobs/modules/triggers.py @@ -1066,13 +1066,13 @@ def gitlab_merge_request(parser, xml_parent, data): def gitlab(parser, xml_parent, data): """yaml: gitlab - Makes Jenkins act like a GitlabCI server + Makes Jenkins act like a GitLab CI server. 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) + true) :arg str trigger-open-merge-request-push: Rebuild open Merge Requests on Push Events. @@ -1083,20 +1083,56 @@ def gitlab(parser, xml_parent, data): * **never** (default) * **source** * **both** - :arg bool ci-skip: Enable [ci-skip] (default true) + :arg bool trigger-note: Build when comment is added with defined phrase + (>= 1.2.4) (default true) + :arg str note-regex: Phrase that triggers the build (>= 1.2.4) (default + 'Jenkins please retry a build') + :arg bool ci-skip: Enable skipping builds of commits that contain + [ci-skip] in the commit message (default true) + :arg bool wip-skip: Enable skipping builds of WIP Merge Requests (>= 1.2.4) + (default false) :arg bool set-build-description: Set build description to build cause - (eg. Merge request or Git Push ) (default true) + (eg. Merge request or Git Push) (default true) :arg bool add-note-merge-request: Add note with build status on merge requests (default true) :arg bool add-vote-merge-request: Vote added to note with build status - on merge requests (default true) - :arg bool add-ci-message: Add CI build status (default false) + on merge requests (>= 1.1.27) (default true) + :arg bool accept-merge-request-on-success: Automatically accept the Merge + Request if the build is successful (>= 1.1.27) (default false) + :arg bool add-ci-message: Add CI build status (1.1.28 - 1.2.0) (default + false) :arg bool allow-all-branches: Allow all branches (Ignoring Filtered - Branches) (default false) + Branches) (< 1.1.29) (default false) + :arg str branch-filter-type: Filter branches that can trigger a build. + Valid values and their additional attributes are described in the + `branch filter type`_ table (>= 1.1.29) (default 'All'). :arg list include-branches: Defined list of branches to include (default []) :arg list exclude-branches: Defined list of branches to exclude (default []) + :arg str target-branch-regex: Regular expression to select branches + + .. _`branch filter type`: + + ================== ==================================================== + Branch filter type Description + ================== ==================================================== + All All branches are allowed to trigger this job. + NameBasedFilter Filter branches by name. + List source branches that are allowed to trigger a + build from a Push event or a Merge Request event. If + both fields are left empty, all branches are allowed + to trigger this job. For Merge Request events only + the target branch name is filtered out by the + **include-branches** and **exclude-branches** lists. + + RegexBasedFilter Filter branches by regex + The target branch regex allows to limit the + execution of this job to certain branches. Any + branch matching the specified pattern in + **target-branch-regex** triggers the job. No + filtering is performed if the field is left empty. + ================== ==================================================== Example (version < 1.1.26): @@ -1134,22 +1170,42 @@ def gitlab(parser, xml_parent, data): 'triggerOpenMergeRequestOnPush', True)] convert_mapping_to_xml(gitlab, data, mapping, fail_required=True) + if plugin_ver == pkg_resources.parse_version('1.1.29'): + if data.get('branch-filter-type', '') == 'All': + data['branch-filter-type'] = '' + valid_filters = ['', 'NameBasedFilter', 'RegexBasedFilter'] + mapping = [ + ('branch-filter-type', 'branchFilterName', '', valid_filters)] + convert_mapping_to_xml(gitlab, data, mapping, fail_required=True) + else: + valid_filters = ['All', 'NameBasedFilter', 'RegexBasedFilter'] + mapping = [ + ('branch-filter-type', 'branchFilterType', 'All', valid_filters)] + convert_mapping_to_xml(gitlab, data, mapping, fail_required=True) + XML.SubElement(gitlab, 'spec').text = '' - bool_mapping = [ + mapping = [ ('trigger-push', 'triggerOnPush', True), ('trigger-merge-request', 'triggerOnMergeRequest', True), + ('trigger-note', 'triggerOnNoteRequest', True), + ('note-regex', 'noteRegex', 'Jenkins please retry a build'), ('ci-skip', 'ciSkip', True), + ('wip-skip', 'skipWorkInProgressMergeRequest', True), ('set-build-description', 'setBuildDescription', True), ('add-note-merge-request', 'addNoteOnMergeRequest', True), ('add-vote-merge-request', 'addVoteOnMergeRequest', True), + ('accept-merge-request-on-success', 'acceptMergeRequestOnSuccess', + False), ('add-ci-message', 'addCiMessage', False), ('allow-all-branches', 'allowAllBranches', False), + ('target-branch-regex', 'targetBranchRegex', '') ] + list_mapping = ( ('include-branches', 'includeBranchesSpec', []), ('exclude-branches', 'excludeBranchesSpec', []), ) - convert_mapping_to_xml(gitlab, data, bool_mapping, fail_required=True) + convert_mapping_to_xml(gitlab, data, 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 effd75ea..2b199809 100644 --- a/tests/triggers/fixtures/gitlab001.xml +++ b/tests/triggers/fixtures/gitlab001.xml @@ -3,15 +3,21 @@ <triggers class="vector"> <com.dabsquared.gitlabjenkins.GitLabPushTrigger> <triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush> + <branchFilterType>All</branchFilterType> <spec/> <triggerOnPush>true</triggerOnPush> <triggerOnMergeRequest>true</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Jenkins please retry a build</noteRegex> <ciSkip>true</ciSkip> + <skipWorkInProgressMergeRequest>true</skipWorkInProgressMergeRequest> <setBuildDescription>true</setBuildDescription> <addNoteOnMergeRequest>true</addNoteOnMergeRequest> <addVoteOnMergeRequest>true</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>false</acceptMergeRequestOnSuccess> <addCiMessage>true</addCiMessage> <allowAllBranches>true</allowAllBranches> + <targetBranchRegex/> <includeBranchesSpec>master, master2, local-test</includeBranchesSpec> <excludeBranchesSpec>broken-test, master-foo</excludeBranchesSpec> </com.dabsquared.gitlabjenkins.GitLabPushTrigger> diff --git a/tests/triggers/fixtures/gitlab002.xml b/tests/triggers/fixtures/gitlab002.xml index 603b4e19..e82157ec 100644 --- a/tests/triggers/fixtures/gitlab002.xml +++ b/tests/triggers/fixtures/gitlab002.xml @@ -3,15 +3,21 @@ <triggers class="vector"> <com.dabsquared.gitlabjenkins.GitLabPushTrigger> <triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush> + <branchFilterType>All</branchFilterType> <spec/> <triggerOnPush>true</triggerOnPush> <triggerOnMergeRequest>true</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Jenkins please retry a build</noteRegex> <ciSkip>true</ciSkip> + <skipWorkInProgressMergeRequest>true</skipWorkInProgressMergeRequest> <setBuildDescription>true</setBuildDescription> <addNoteOnMergeRequest>true</addNoteOnMergeRequest> <addVoteOnMergeRequest>true</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>false</acceptMergeRequestOnSuccess> <addCiMessage>false</addCiMessage> <allowAllBranches>false</allowAllBranches> + <targetBranchRegex/> <includeBranchesSpec>master</includeBranchesSpec> <excludeBranchesSpec>feature</excludeBranchesSpec> </com.dabsquared.gitlabjenkins.GitLabPushTrigger> diff --git a/tests/triggers/fixtures/gitlab003.xml b/tests/triggers/fixtures/gitlab003.xml index feb8ab0c..7e85278a 100644 --- a/tests/triggers/fixtures/gitlab003.xml +++ b/tests/triggers/fixtures/gitlab003.xml @@ -3,15 +3,21 @@ <triggers class="vector"> <com.dabsquared.gitlabjenkins.GitLabPushTrigger> <triggerOpenMergeRequestOnPush>true</triggerOpenMergeRequestOnPush> + <branchFilterType>All</branchFilterType> <spec/> <triggerOnPush>true</triggerOnPush> <triggerOnMergeRequest>true</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Jenkins please retry a build</noteRegex> <ciSkip>true</ciSkip> + <skipWorkInProgressMergeRequest>true</skipWorkInProgressMergeRequest> <setBuildDescription>true</setBuildDescription> <addNoteOnMergeRequest>true</addNoteOnMergeRequest> <addVoteOnMergeRequest>true</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>false</acceptMergeRequestOnSuccess> <addCiMessage>false</addCiMessage> <allowAllBranches>false</allowAllBranches> + <targetBranchRegex/> <includeBranchesSpec>master</includeBranchesSpec> <excludeBranchesSpec>baz, foo, fnord</excludeBranchesSpec> </com.dabsquared.gitlabjenkins.GitLabPushTrigger> diff --git a/tests/triggers/fixtures/gitlab004.xml b/tests/triggers/fixtures/gitlab004.xml index 5b64ddf0..94d8f4fd 100644 --- a/tests/triggers/fixtures/gitlab004.xml +++ b/tests/triggers/fixtures/gitlab004.xml @@ -3,15 +3,21 @@ <triggers class="vector"> <com.dabsquared.gitlabjenkins.GitLabPushTrigger> <triggerOpenMergeRequestOnPush>both</triggerOpenMergeRequestOnPush> + <branchFilterType>All</branchFilterType> <spec/> <triggerOnPush>false</triggerOnPush> <triggerOnMergeRequest>false</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Jenkins please retry a build</noteRegex> <ciSkip>false</ciSkip> + <skipWorkInProgressMergeRequest>true</skipWorkInProgressMergeRequest> <setBuildDescription>false</setBuildDescription> <addNoteOnMergeRequest>false</addNoteOnMergeRequest> <addVoteOnMergeRequest>false</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>false</acceptMergeRequestOnSuccess> <addCiMessage>true</addCiMessage> <allowAllBranches>true</allowAllBranches> + <targetBranchRegex/> <includeBranchesSpec>master, master2, local-test</includeBranchesSpec> <excludeBranchesSpec>broken-test, master-foo</excludeBranchesSpec> </com.dabsquared.gitlabjenkins.GitLabPushTrigger> diff --git a/tests/triggers/fixtures/gitlab005.xml b/tests/triggers/fixtures/gitlab005.xml index 393d4f90..7870ff70 100644 --- a/tests/triggers/fixtures/gitlab005.xml +++ b/tests/triggers/fixtures/gitlab005.xml @@ -3,15 +3,21 @@ <triggers class="vector"> <com.dabsquared.gitlabjenkins.GitLabPushTrigger> <triggerOpenMergeRequestOnPush>never</triggerOpenMergeRequestOnPush> + <branchFilterType>All</branchFilterType> <spec/> <triggerOnPush>true</triggerOnPush> <triggerOnMergeRequest>true</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Jenkins please retry a build</noteRegex> <ciSkip>true</ciSkip> + <skipWorkInProgressMergeRequest>true</skipWorkInProgressMergeRequest> <setBuildDescription>true</setBuildDescription> <addNoteOnMergeRequest>true</addNoteOnMergeRequest> <addVoteOnMergeRequest>true</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>false</acceptMergeRequestOnSuccess> <addCiMessage>false</addCiMessage> <allowAllBranches>false</allowAllBranches> + <targetBranchRegex/> <includeBranchesSpec/> <excludeBranchesSpec/> </com.dabsquared.gitlabjenkins.GitLabPushTrigger> diff --git a/tests/triggers/fixtures/gitlab006.plugins_info.yaml b/tests/triggers/fixtures/gitlab006.plugins_info.yaml new file mode 100644 index 00000000..4ba0b897 --- /dev/null +++ b/tests/triggers/fixtures/gitlab006.plugins_info.yaml @@ -0,0 +1,3 @@ +- longName: 'GitLab Plugin' + shortName: 'gitlab-plugin' + version: "1.2.4" diff --git a/tests/triggers/fixtures/gitlab006.xml b/tests/triggers/fixtures/gitlab006.xml new file mode 100644 index 00000000..af5fdac2 --- /dev/null +++ b/tests/triggers/fixtures/gitlab006.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <triggers class="vector"> + <com.dabsquared.gitlabjenkins.GitLabPushTrigger> + <triggerOpenMergeRequestOnPush>both</triggerOpenMergeRequestOnPush> + <branchFilterType>RegexBasedFilter</branchFilterType> + <spec/> + <triggerOnPush>false</triggerOnPush> + <triggerOnMergeRequest>false</triggerOnMergeRequest> + <triggerOnNoteRequest>true</triggerOnNoteRequest> + <noteRegex>Retrigger</noteRegex> + <ciSkip>false</ciSkip> + <skipWorkInProgressMergeRequest>false</skipWorkInProgressMergeRequest> + <setBuildDescription>false</setBuildDescription> + <addNoteOnMergeRequest>false</addNoteOnMergeRequest> + <addVoteOnMergeRequest>false</addVoteOnMergeRequest> + <acceptMergeRequestOnSuccess>true</acceptMergeRequestOnSuccess> + <addCiMessage>true</addCiMessage> + <allowAllBranches>false</allowAllBranches> + <targetBranchRegex>(.*debug.*|.*release.*)</targetBranchRegex> + <includeBranchesSpec>include1, include2</includeBranchesSpec> + <excludeBranchesSpec>exclude1, exclude2</excludeBranchesSpec> + </com.dabsquared.gitlabjenkins.GitLabPushTrigger> + </triggers> +</project> diff --git a/tests/triggers/fixtures/gitlab006.yaml b/tests/triggers/fixtures/gitlab006.yaml new file mode 100644 index 00000000..bb84e73d --- /dev/null +++ b/tests/triggers/fixtures/gitlab006.yaml @@ -0,0 +1,22 @@ +triggers: + - gitlab: + trigger-push: false + trigger-merge-request: false + trigger-open-merge-request-push: both + trigger-note-request: false + note-regex: Retrigger + ci-skip: false + wip-skip: false + set-build-description: false + add-note-merge-request: false + add-vote-merge-request: false + accept-merge-request-on-success: true + add-ci-message: true + branch-filter-type: RegexBasedFilter + include-branches: + - include1 + - include2 + exclude-branches: + - exclude1 + - exclude2 + target-branch-regex: '(.*debug.*|.*release.*)' |