From 29a8ad7683ff8c267efacb505854d11e29a6cfd2 Mon Sep 17 00:00:00 2001 From: vgorin Date: Thu, 9 Nov 2017 00:06:18 +0300 Subject: [PATCH] Add publishers related to GitLab Plugin Currently we have only possibility to set build status on GitLab But GitLab Plugin provides us to make a comments and to vote on Merge Request * Add Gitlab Message - configure Gitlab publisher to post comments on MR * Add Gitlab Vote - jenkins set Vote for build status on GitLab MR Change-Id: I30d2fbed647763f2a5eb6fb801dd79f6d43d4696 Co-Authored-By: Kien Ha Signed-off-by: Kien Ha --- jenkins_jobs/modules/publishers.py | 67 +++++++++++++++++++ .../fixtures/gitlab-message-full.xml | 16 +++++ .../fixtures/gitlab-message-full.yaml | 11 +++ .../fixtures/gitlab-message-minimal.xml | 16 +++++ .../fixtures/gitlab-message-minimal.yaml | 2 + tests/publishers/fixtures/gitlab-vote.xml | 6 ++ tests/publishers/fixtures/gitlab-vote.yaml | 2 + 7 files changed, 120 insertions(+) create mode 100644 tests/publishers/fixtures/gitlab-message-full.xml create mode 100644 tests/publishers/fixtures/gitlab-message-full.yaml create mode 100644 tests/publishers/fixtures/gitlab-message-minimal.xml create mode 100644 tests/publishers/fixtures/gitlab-message-minimal.yaml create mode 100644 tests/publishers/fixtures/gitlab-vote.xml create mode 100644 tests/publishers/fixtures/gitlab-vote.yaml diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py index 0cef58e68..936758fce 100644 --- a/jenkins_jobs/modules/publishers.py +++ b/jenkins_jobs/modules/publishers.py @@ -4761,6 +4761,73 @@ def gitlab_notifier(registry, xml_parent, data): helpers.convert_mapping_to_xml(top, data, mappings, fail_required=True) +def gitlab_vote(registry, xml_parent, data): + """yaml: gitlab-vote + Set vote for build status on GitLab merge request. + Requires the Jenkins :jenkins-wiki:`GitLab Plugin `. + + Example: + + .. literalinclude:: + ../../tests/publishers/fixtures/gitlab-vote.yaml + :language: yaml + """ + XML.SubElement( + xml_parent, + 'com.dabsquared.gitlabjenkins.publisher.GitLabVotePublisher') + + +def gitlab_message(registry, xml_parent, data): + """yaml: gitlab-message + Add note with build status on GitLab merge request. + Requires the Jenkins :jenkins-wiki:`GitLab Plugin `. + + :arg bool failure-only: make a comment only on failure (default false) + :arg bool success-note: make a comment on GitLab Merge Request + if build succeeds (default false) + :arg bool failure-note: make a comment on GitLab Merge Request + if build failed (default false) + :arg bool abort-note: make a comment on GitLab Merge Request + if build aborted (default false) + :arg bool unstable-note: make a comment on GitLab Merge Request + if build unstable (default false) + + :arg str success-note-text: text of comment on success build (default '') + :arg str failure-note-text: text of comment on failed build (default '') + :arg str abort-note-text: text of comment on aborted build (default '') + :arg str unstable-note-text: text of comment on unstable build (default '') + + Minimal Example: + + .. literalinclude:: + /../../tests/publishers/fixtures/gitlab-message-minimal.yaml + :language: yaml + + Full Example: + + .. literalinclude:: + /../../tests/publishers/fixtures/gitlab-message-full.yaml + :language: yaml + """ + gitlab = XML.SubElement( + xml_parent, + 'com.dabsquared.gitlabjenkins.publisher.GitLabMessagePublisher' + ) + gitlab.set('plugin', 'gitlab-plugin') + + mapping = [('failure-only', 'onlyForFailure', False), + ('success-note', 'replaceSuccessNote', False), + ('failure-note', 'replaceFailureNote', False), + ('abort-note', 'replaceAbortNote', False), + ('unstable-note', 'replaceUnstableNote', False), + ('success-note-text', 'successNoteText', ''), + ('failure-note-text', 'failureNoteText', ''), + ('abort-note-text', 'abortNoteText', ''), + ('unstable-note-text', 'unstableNoteText', '')] + + helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True) + + def zulip(registry, xml_parent, data): """yaml: zulip Set build status on zulip. diff --git a/tests/publishers/fixtures/gitlab-message-full.xml b/tests/publishers/fixtures/gitlab-message-full.xml new file mode 100644 index 000000000..c6ca51fe8 --- /dev/null +++ b/tests/publishers/fixtures/gitlab-message-full.xml @@ -0,0 +1,16 @@ + + + + + true + true + true + true + true + SUCCESS + Build was failed. See log on Jenkins + Build was aborted + The build is unstable + + + diff --git a/tests/publishers/fixtures/gitlab-message-full.yaml b/tests/publishers/fixtures/gitlab-message-full.yaml new file mode 100644 index 000000000..14dbc469b --- /dev/null +++ b/tests/publishers/fixtures/gitlab-message-full.yaml @@ -0,0 +1,11 @@ +publishers: + - gitlab-message: + failure-only: true + success-note: true + success-note-text: "SUCCESS" + failure-note: true + failure-note-text: "Build was failed. See log on Jenkins" + abort-note: true + abort-note-text: "Build was aborted" + unstable-note: true + unstable-note-text: "The build is unstable" diff --git a/tests/publishers/fixtures/gitlab-message-minimal.xml b/tests/publishers/fixtures/gitlab-message-minimal.xml new file mode 100644 index 000000000..d2f5b2ea4 --- /dev/null +++ b/tests/publishers/fixtures/gitlab-message-minimal.xml @@ -0,0 +1,16 @@ + + + + + false + false + false + false + false + + + + + + + diff --git a/tests/publishers/fixtures/gitlab-message-minimal.yaml b/tests/publishers/fixtures/gitlab-message-minimal.yaml new file mode 100644 index 000000000..46f49c8f5 --- /dev/null +++ b/tests/publishers/fixtures/gitlab-message-minimal.yaml @@ -0,0 +1,2 @@ +publishers: + - gitlab-message diff --git a/tests/publishers/fixtures/gitlab-vote.xml b/tests/publishers/fixtures/gitlab-vote.xml new file mode 100644 index 000000000..4798dec0b --- /dev/null +++ b/tests/publishers/fixtures/gitlab-vote.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/publishers/fixtures/gitlab-vote.yaml b/tests/publishers/fixtures/gitlab-vote.yaml new file mode 100644 index 000000000..ba03ef9b7 --- /dev/null +++ b/tests/publishers/fixtures/gitlab-vote.yaml @@ -0,0 +1,2 @@ +publishers: + - gitlab-vote