From 7d065af894a748aa4278aa271cd3e294dafc1029 Mon Sep 17 00:00:00 2001 From: sbussetti Date: Thu, 1 Nov 2018 09:23:28 -0400 Subject: [PATCH] Adds support for Disable GitHub Multibranch Status Jenkins2 GitHub scms default to automatically sending updates on build status to github for pull requests. The plugin this enables allows control of this by enabling or disabling the feature via an SCM trait, allowing you to either no notify at all or manually notify via other means. Change-Id: I4f5629c3ee8031d41054e3be5e853201d8f0fed6 Signed-off-by: sbussetti --- .gitignore | 2 ++ doc/source/conf.py | 3 ++- jenkins_jobs/modules/project_multibranch.py | 16 ++++++++++++++++ tests/multibranch/fixtures/scm_github_full.xml | 1 + tests/multibranch/fixtures/scm_github_full.yaml | 1 + 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fea9c5474..a1ca05096 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ *.eggs *.egg-info *.pyc +*.sw[a-z] +.python-version .test .testrepository .tox diff --git a/doc/source/conf.py b/doc/source/conf.py index c4f01a146..02094e147 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -255,4 +255,5 @@ texinfo_documents = [ # texinfo_show_urls = 'footnote' extlinks = {'jenkins-wiki': ('https://wiki.jenkins.io/display/JENKINS/%s', - None)} + None), + 'jenkins-plugins': ('https://plugins.jenkins.io/%s', None)} diff --git a/jenkins_jobs/modules/project_multibranch.py b/jenkins_jobs/modules/project_multibranch.py index 3be0cf69b..24cc23b00 100644 --- a/jenkins_jobs/modules/project_multibranch.py +++ b/jenkins_jobs/modules/project_multibranch.py @@ -785,6 +785,10 @@ def github_scm(xml_parent, data): * **depth** (`int`) - Set shallow clone depth (default 1) * **do-not-fetch-tags** (`bool`) - Perform a clone without tags (default false) + * **disable-pr-notifications** (`bool`) - Disable default github status + notifications on pull requests (default false) (Requires the + :jenkins-plugins:`GitHub Branch Source Plugin + `.) * **submodule** (`dict`) * **disable** (`bool`) - By disabling support for submodules you can still keep using basic git plugin functionality and just have @@ -953,6 +957,18 @@ def github_scm(xml_parent, data): # - use-author git_extensions(traits, data) + # github-only extensions + disable_github_status_path_dscore = ( + 'com.adobe.jenkins.disable__github__multibranch__status') + if data.get('disable-pr-notifications', False): + XML.SubElement( + traits, ''.join([ + disable_github_status_path_dscore, '.DisableStatusUpdateTrait' + ]), { + 'plugin': 'disable-github-multibranch-status' + } + ) + def build_strategies(xml_parent, data): """Configure Basic Branch Build Strategies. diff --git a/tests/multibranch/fixtures/scm_github_full.xml b/tests/multibranch/fixtures/scm_github_full.xml index 2802182eb..769d066f3 100644 --- a/tests/multibranch/fixtures/scm_github_full.xml +++ b/tests/multibranch/fixtures/scm_github_full.xml @@ -90,6 +90,7 @@ + diff --git a/tests/multibranch/fixtures/scm_github_full.yaml b/tests/multibranch/fixtures/scm_github_full.yaml index 272d5f12a..33a477c3b 100644 --- a/tests/multibranch/fixtures/scm_github_full.yaml +++ b/tests/multibranch/fixtures/scm_github_full.yaml @@ -44,6 +44,7 @@ scm: shallow-clone: true depth: 3 do-not-fetch-tags: true + disable-pr-notifications: true submodule: disable: false recursive: true