Support raw XML injection in multibranch build strategies

build-strategies:
     - raw:
         xml: |
           <c.i.j.p.m.b.IncludeRegionBranchBuildStrategy plugin="...">
             <includedRegions>my/cool/project/*.cpp</includedRegions>
           </c.i.j.p.m.b.IncludeRegionBranchBuildStrategy>

Change-Id: I3679c81a4a4b28204460b1563bb7585a3e67a449
Signed-off-by: Anna Tikhonova <anna.m.tikhonova@gmail.com>
This commit is contained in:
Anna Tikhonova 2020-10-30 18:19:34 +03:00 committed by Anna Tikhonova
parent c420d57af9
commit d80d6bf723
3 changed files with 18 additions and 0 deletions

View File

@ -86,6 +86,7 @@ import six
from jenkins_jobs.modules.scm import git_extensions
from jenkins_jobs.errors import InvalidAttributeError
from jenkins_jobs.errors import JenkinsJobsException
from jenkins_jobs.xml_config import remove_ignorable_whitespace
logger = logging.getLogger(str(__name__))
@ -1102,6 +1103,8 @@ def build_strategies(xml_parent, data):
Requires the :jenkins-plugins:`Basic Branch Build Strategies Plugin
<basic-branch-build-strategies>`.
Other build strategies can be configured via raw XML injection.
:arg list build-strategies: Definition of build strategies.
* **tags** (dict): Builds tags
@ -1142,6 +1145,8 @@ def build_strategies(xml_parent, data):
for example: `master release*` (default `*`)
* **excludes** (str) Name patterns to ignore even if matched
by the includes list. For example: release (optional)
* **raw** (dict): Injects raw BuildStrategy XML to use other build
strategy plugins.
"""
@ -1268,6 +1273,11 @@ def build_strategies(xml_parent, data):
fail_required=False,
)
if "raw" in bbs_list:
raw_xml = XML.fromstring(bbs_list["raw"].get("xml"))
remove_ignorable_whitespace(raw_xml)
XML.SubElement(bbs, None).append(raw_xml)
def property_strategies(xml_parent, data):
"""Configure Basic Branch Property Strategies.

View File

@ -140,6 +140,9 @@
</jenkins.branch.buildstrategies.basic.NamedBranchBuildStrategyImpl_-WildcardsNameFilter>
</filters>
</jenkins.branch.buildstrategies.basic.NamedBranchBuildStrategyImpl>
<com.igalg.jenkins.plugins.multibranch.buildstrategy.IncludeRegionBranchBuildStrategy plugin="multibranch-build-strategy-extension">
<includedRegions>my/cool/project/*.cpp</includedRegions>
</com.igalg.jenkins.plugins.multibranch.buildstrategy.IncludeRegionBranchBuildStrategy>
</buildStrategies>
</jenkins.branch.BranchSource>
</data>

View File

@ -37,6 +37,11 @@ scm:
- exact-name: {}
- regex-name: {}
- wildcards-name: {}
- raw:
xml: |
<com.igalg.jenkins.plugins.multibranch.buildstrategy.IncludeRegionBranchBuildStrategy plugin="multibranch-build-strategy-extension">
<includedRegions>my/cool/project/*.cpp</includedRegions>
</com.igalg.jenkins.plugins.multibranch.buildstrategy.IncludeRegionBranchBuildStrategy>
clean:
after: true
before: true