summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jenkins_jobs/modules/triggers.py74
-rw-r--r--tests/triggers/fixtures/gitlab001.xml6
-rw-r--r--tests/triggers/fixtures/gitlab002.xml6
-rw-r--r--tests/triggers/fixtures/gitlab003.xml6
-rw-r--r--tests/triggers/fixtures/gitlab004.xml6
-rw-r--r--tests/triggers/fixtures/gitlab005.xml6
-rw-r--r--tests/triggers/fixtures/gitlab006.plugins_info.yaml3
-rw-r--r--tests/triggers/fixtures/gitlab006.xml25
-rw-r--r--tests/triggers/fixtures/gitlab006.yaml22
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.*)'