From 4e15ad0536992e99935c16862f0c5b64006062c5 Mon Sep 17 00:00:00 2001 From: Rotaru Sergey Date: Sun, 14 Jun 2020 11:57:26 +0300 Subject: Implement disable discover_pr_origin In my opinion the best choise for default value of discover_pr_origion is not specified(None value) like it is done for bitbucket scm. Currently there is no way to disable this option for github scm. Added false value as one of valid value for this option, like is done for discover-pr-fork-strategy. In fact any of yaml specification false implementation should work. Change-Id: Ibc26d6b5c39b5455160ba5c84be99575b79fc102 --- jenkins_jobs/modules/project_multibranch.py | 25 ++++----- .../fixtures/scm_github_no_origin_pr_discovery.xml | 59 ++++++++++++++++++++++ .../scm_github_no_origin_pr_discovery.yaml | 7 +++ 3 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.xml create mode 100644 tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.yaml diff --git a/jenkins_jobs/modules/project_multibranch.py b/jenkins_jobs/modules/project_multibranch.py index 93b5f380..60a1b1a5 100644 --- a/jenkins_jobs/modules/project_multibranch.py +++ b/jenkins_jobs/modules/project_multibranch.py @@ -804,7 +804,7 @@ def github_scm(xml_parent, data): (default 'contributors') :arg str discover-pr-origin: Discovers pull requests where the origin repository is the same as the target repository. - Valid options: merge-current, current, both. (default 'merge-current') + Valid options: merge-current, current, both, false. (default 'merge-current') :arg bool discover-tags: Discovers tags on the repository. (default false) :arg list build-strategies: Provides control over whether to build a branch @@ -946,18 +946,19 @@ def github_scm(xml_parent, data): XML.SubElement(dprf, "trust").attrib["class"] = trust_map[trust] dpro_strategy = data.get("discover-pr-origin", "merge-current") - dpro = XML.SubElement( - traits, "".join([github_path_dscore, ".OriginPullRequestDiscoveryTrait"]) - ) - dpro_strategy_map = {"merge-current": "1", "current": "2", "both": "3"} - if dpro_strategy not in dpro_strategy_map: - raise InvalidAttributeError( - "discover-pr-origin", dpro_strategy, dpro_strategy_map.keys() + if dpro_strategy: + dpro = XML.SubElement( + traits, "".join([github_path_dscore, ".OriginPullRequestDiscoveryTrait"]) ) - dpro_mapping = [ - ("discover-pr-origin", "strategyId", "merge-current", dpro_strategy_map) - ] - helpers.convert_mapping_to_xml(dpro, data, dpro_mapping, fail_required=True) + dpro_strategy_map = {"merge-current": "1", "current": "2", "both": "3"} + if dpro_strategy not in dpro_strategy_map: + raise InvalidAttributeError( + "discover-pr-origin", dpro_strategy, dpro_strategy_map.keys() + ) + dpro_mapping = [ + ("discover-pr-origin", "strategyId", "merge-current", dpro_strategy_map) + ] + helpers.convert_mapping_to_xml(dpro, data, dpro_mapping, fail_required=True) if data.get("head-filter-regex", None): rshf = XML.SubElement(traits, "jenkins.scm.impl.trait.RegexSCMHeadFilterTrait") diff --git a/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.xml b/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.xml new file mode 100644 index 00000000..d700a816 --- /dev/null +++ b/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.xml @@ -0,0 +1,59 @@ + + + + + + All + false + false + + + + + + + + + + + false + + + + + + + true + -1 + -1 + + + + + + + gh-johndoe-foo + johndoe + foo + + + 1 + + + 1 + + + + + + + + + + + + + + Jenkinsfile + + diff --git a/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.yaml b/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.yaml new file mode 100644 index 00000000..7852137e --- /dev/null +++ b/tests/multibranch/fixtures/scm_github_no_origin_pr_discovery.yaml @@ -0,0 +1,7 @@ +name: 'demo-multibranch-github-no-fork-prs' +project-type: multibranch +scm: + - github: + repo: 'foo' + repo-owner: 'johndoe' + discover-pr-origin: no -- cgit