diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py index 4378e8644..232d5a8ab 100644 --- a/jenkins_jobs/modules/triggers.py +++ b/jenkins_jobs/modules/triggers.py @@ -1169,8 +1169,22 @@ def gitlab_merge_request(registry, xml_parent, data): Requires the Jenkins :jenkins-wiki:`Gitlab MergeRequest Builder Plugin. `. - :arg string cron: cron syntax of when to run (required) - :arg string project-path: gitlab-relative path to project (required) + :arg string cron: Cron syntax of when to run (required) + :arg string project-path: Gitlab-relative path to project (required) + :arg string use-http-url: Use the HTTP(S) URL to fetch/clone repository + (default false) + :arg string assignee-filter: Only MRs with this assigned user will + trigger the build automatically (default 'jenkins') + :arg string tag-filter: Only MRs with this label will trigger the build + automatically (default 'Build') + :arg string trigger-comment: Force build if this comment is the last + in merge reguest (default '') + :arg string publish-build-progress-messages: Publish build progress + messages (except build failed) (default true) + :arg string auto-close-failed: On failure, auto close the request + (default false) + :arg string auto-merge-passed: On success, auto merge the request + (default false) Example: @@ -1179,20 +1193,25 @@ def gitlab_merge_request(registry, xml_parent, data): """ ghprb = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.gitlab.' 'GitlabBuildTrigger') - if not data.get('cron', None): - raise jenkins_jobs.errors.JenkinsJobsException( - 'gitlab-merge-request is missing "cron"') - if not data.get('project-path', None): - raise jenkins_jobs.errors.JenkinsJobsException( - 'gitlab-merge-request is missing "project-path"') # Because of a design limitation in the GitlabBuildTrigger Jenkins plugin # both 'spec' and '__cron' have to be set to the same value to have them # take effect. Also, cron and projectPath are prefixed with underscores # in the plugin, but spec is not. - XML.SubElement(ghprb, 'spec').text = data.get('cron') - XML.SubElement(ghprb, '__cron').text = data.get('cron') - XML.SubElement(ghprb, '__projectPath').text = data.get('project-path') + mapping = [ + ('cron', 'spec', None), + ('cron', '__cron', None), + ('project-path', '__projectPath', None), + ('use-http-url', '__useHttpUrl', False), + ('assignee-filter', '__assigneeFilter', 'jenkins'), + ('tag-filter', '__tagFilter', 'Build'), + ('trigger-comment', '__triggerComment', ''), + ('publish-build-progress-messages', '__publishBuildProgressMessages', + True), + ('auto-close-failed', '__autoCloseFailed', False), + ('auto-merge-passed', '__autoMergePassed', False) + ] + convert_mapping_to_xml(ghprb, data, mapping, True) def gitlab(registry, xml_parent, data): diff --git a/tests/triggers/fixtures/gitlab-merge-request.xml b/tests/triggers/fixtures/gitlab-merge-request.xml index 3b74c410d..0bba820b5 100644 --- a/tests/triggers/fixtures/gitlab-merge-request.xml +++ b/tests/triggers/fixtures/gitlab-merge-request.xml @@ -5,6 +5,13 @@ * * * * * <__cron>* * * * * <__projectPath>test/project + <__useHttpUrl>false + <__assigneeFilter>jenkinsbot + <__tagFilter>fix + <__triggerComment>rebuild + <__publishBuildProgressMessages>true + <__autoCloseFailed>false + <__autoMergePassed>false diff --git a/tests/triggers/fixtures/gitlab-merge-request.yaml b/tests/triggers/fixtures/gitlab-merge-request.yaml index 622f157d6..82bc234b6 100644 --- a/tests/triggers/fixtures/gitlab-merge-request.yaml +++ b/tests/triggers/fixtures/gitlab-merge-request.yaml @@ -2,3 +2,10 @@ triggers: - gitlab-merge-request: cron: '* * * * *' project-path: 'test/project' + use-http-url: false + assignee-filter: 'jenkinsbot' + tag-filter: 'fix' + trigger-comment: 'rebuild' + publish-build-progress-messages: true + auto-close-failed: false + auto-merge-passed: false