Extend multibranch pipeline project scm
Add suport of available extensions from default git scm Story #2003620 Task #25743 Change-Id: I62f8018fb49d239ab634b502e51005a1465a81d9
This commit is contained in:
parent
405df97718
commit
92f18515b4
1
.gitignore
vendored
1
.gitignore
vendored
@ -22,3 +22,4 @@ jenkins-job-builder
|
|||||||
testr_subunit_log
|
testr_subunit_log
|
||||||
__pycache__
|
__pycache__
|
||||||
/.stestr
|
/.stestr
|
||||||
|
settings.json
|
||||||
|
@ -74,6 +74,7 @@ import jenkins_jobs.modules.base
|
|||||||
import jenkins_jobs.modules.helpers as helpers
|
import jenkins_jobs.modules.helpers as helpers
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
from jenkins_jobs.modules.scm import git_extensions
|
||||||
from jenkins_jobs.errors import InvalidAttributeError
|
from jenkins_jobs.errors import InvalidAttributeError
|
||||||
|
|
||||||
logger = logging.getLogger(str(__name__))
|
logger = logging.getLogger(str(__name__))
|
||||||
@ -347,6 +348,37 @@ def bitbucket_scm(xml_parent, data):
|
|||||||
ignore even if matched by the includes list.
|
ignore even if matched by the includes list.
|
||||||
For example: `release*`
|
For example: `release*`
|
||||||
|
|
||||||
|
:extensions:
|
||||||
|
|
||||||
|
* **clean** (`dict`)
|
||||||
|
* **after** (`bool`) - Clean the workspace after checkout
|
||||||
|
* **before** (`bool`) - Clean the workspace before checkout
|
||||||
|
* **prune** (`bool`) - Prune remote branches (default false)
|
||||||
|
* **shallow-clone** (`bool`) - Perform shallow clone (default false)
|
||||||
|
* **depth** (`int`) - Set shallow clone depth (default 1)
|
||||||
|
* **do-not-fetch-tags** (`bool`) - Perform a clone without tags
|
||||||
|
(default false)
|
||||||
|
* **submodule** (`dict`)
|
||||||
|
* **disable** (`bool`) - By disabling support for submodules you
|
||||||
|
can still keep using basic git plugin functionality and just have
|
||||||
|
Jenkins to ignore submodules completely as if they didn't exist.
|
||||||
|
* **recursive** (`bool`) - Retrieve all submodules recursively
|
||||||
|
(uses '--recursive' option which requires git>=1.6.5)
|
||||||
|
* **tracking** (`bool`) - Retrieve the tip of the configured
|
||||||
|
branch in .gitmodules (Uses '\-\-remote' option which requires
|
||||||
|
git>=1.8.2)
|
||||||
|
* **parent-credentials** (`bool`) - Use credentials from default
|
||||||
|
remote of parent repository (default false).
|
||||||
|
* **reference-repo** (`str`) - Path of the reference repo to use
|
||||||
|
during clone (optional)
|
||||||
|
* **timeout** (`int`) - Specify a timeout (in minutes) for
|
||||||
|
submodules operations (default 10).
|
||||||
|
* **timeout** (`str`) - Timeout for git commands in minutes (optional)
|
||||||
|
* **use-author** (`bool`): Use author rather than committer in Jenkin's
|
||||||
|
build changeset (default false)
|
||||||
|
* **wipe-workspace** (`bool`) - Wipe out workspace before build
|
||||||
|
(default true)
|
||||||
|
|
||||||
|
|
||||||
Minimal Example:
|
Minimal Example:
|
||||||
|
|
||||||
@ -498,6 +530,17 @@ def bitbucket_scm(xml_parent, data):
|
|||||||
wscmf_name_mapping,
|
wscmf_name_mapping,
|
||||||
fail_required=True)
|
fail_required=True)
|
||||||
|
|
||||||
|
# handle the default git extensions like:
|
||||||
|
# - clean
|
||||||
|
# - shallow-clone
|
||||||
|
# - timeout
|
||||||
|
# - do-not-fetch-tags
|
||||||
|
# - submodule
|
||||||
|
# - prune
|
||||||
|
# - wipe-workspace
|
||||||
|
# - use-author
|
||||||
|
git_extensions(traits, data)
|
||||||
|
|
||||||
|
|
||||||
def gerrit_scm(xml_parent, data):
|
def gerrit_scm(xml_parent, data):
|
||||||
"""Configure Gerrit SCM
|
"""Configure Gerrit SCM
|
||||||
@ -606,6 +649,37 @@ def git_scm(xml_parent, data):
|
|||||||
detected. (optional)
|
detected. (optional)
|
||||||
Refer to :func:`~build_strategies <build_strategies>`.
|
Refer to :func:`~build_strategies <build_strategies>`.
|
||||||
|
|
||||||
|
:extensions:
|
||||||
|
|
||||||
|
* **clean** (`dict`)
|
||||||
|
* **after** (`bool`) - Clean the workspace after checkout
|
||||||
|
* **before** (`bool`) - Clean the workspace before checkout
|
||||||
|
* **prune** (`bool`) - Prune remote branches (default false)
|
||||||
|
* **shallow-clone** (`bool`) - Perform shallow clone (default false)
|
||||||
|
* **depth** (`int`) - Set shallow clone depth (default 1)
|
||||||
|
* **do-not-fetch-tags** (`bool`) - Perform a clone without tags
|
||||||
|
(default false)
|
||||||
|
* **submodule** (`dict`)
|
||||||
|
* **disable** (`bool`) - By disabling support for submodules you
|
||||||
|
can still keep using basic git plugin functionality and just have
|
||||||
|
Jenkins to ignore submodules completely as if they didn't exist.
|
||||||
|
* **recursive** (`bool`) - Retrieve all submodules recursively
|
||||||
|
(uses '--recursive' option which requires git>=1.6.5)
|
||||||
|
* **tracking** (`bool`) - Retrieve the tip of the configured
|
||||||
|
branch in .gitmodules (Uses '\-\-remote' option which requires
|
||||||
|
git>=1.8.2)
|
||||||
|
* **parent-credentials** (`bool`) - Use credentials from default
|
||||||
|
remote of parent repository (default false).
|
||||||
|
* **reference-repo** (`str`) - Path of the reference repo to use
|
||||||
|
during clone (optional)
|
||||||
|
* **timeout** (`int`) - Specify a timeout (in minutes) for
|
||||||
|
submodules operations (default 10).
|
||||||
|
* **timeout** (`str`) - Timeout for git commands in minutes (optional)
|
||||||
|
* **use-author** (`bool`): Use author rather than committer in Jenkin's
|
||||||
|
build changeset (default false)
|
||||||
|
* **wipe-workspace** (`bool`) - Wipe out workspace before build
|
||||||
|
(default true)
|
||||||
|
|
||||||
Minimal Example:
|
Minimal Example:
|
||||||
|
|
||||||
.. literalinclude:: /../../tests/multibranch/fixtures/scm_git_minimal.yaml
|
.. literalinclude:: /../../tests/multibranch/fixtures/scm_git_minimal.yaml
|
||||||
@ -651,6 +725,17 @@ def git_scm(xml_parent, data):
|
|||||||
if data.get('build-strategies', None):
|
if data.get('build-strategies', None):
|
||||||
build_strategies(xml_parent, data)
|
build_strategies(xml_parent, data)
|
||||||
|
|
||||||
|
# handle the default git extensions like:
|
||||||
|
# - clean
|
||||||
|
# - shallow-clone
|
||||||
|
# - timeout
|
||||||
|
# - do-not-fetch-tags
|
||||||
|
# - submodule
|
||||||
|
# - prune
|
||||||
|
# - wipe-workspace
|
||||||
|
# - use-author
|
||||||
|
git_extensions(traits, data)
|
||||||
|
|
||||||
|
|
||||||
def github_scm(xml_parent, data):
|
def github_scm(xml_parent, data):
|
||||||
"""Configure GitHub SCM
|
"""Configure GitHub SCM
|
||||||
@ -685,6 +770,37 @@ def github_scm(xml_parent, data):
|
|||||||
detected. (optional)
|
detected. (optional)
|
||||||
Refer to :func:`~build_strategies <build_strategies>`.
|
Refer to :func:`~build_strategies <build_strategies>`.
|
||||||
|
|
||||||
|
:extensions:
|
||||||
|
|
||||||
|
* **clean** (`dict`)
|
||||||
|
* **after** (`bool`) - Clean the workspace after checkout
|
||||||
|
* **before** (`bool`) - Clean the workspace before checkout
|
||||||
|
* **prune** (`bool`) - Prune remote branches (default false)
|
||||||
|
* **shallow-clone** (`bool`) - Perform shallow clone (default false)
|
||||||
|
* **depth** (`int`) - Set shallow clone depth (default 1)
|
||||||
|
* **do-not-fetch-tags** (`bool`) - Perform a clone without tags
|
||||||
|
(default false)
|
||||||
|
* **submodule** (`dict`)
|
||||||
|
* **disable** (`bool`) - By disabling support for submodules you
|
||||||
|
can still keep using basic git plugin functionality and just have
|
||||||
|
Jenkins to ignore submodules completely as if they didn't exist.
|
||||||
|
* **recursive** (`bool`) - Retrieve all submodules recursively
|
||||||
|
(uses '--recursive' option which requires git>=1.6.5)
|
||||||
|
* **tracking** (`bool`) - Retrieve the tip of the configured
|
||||||
|
branch in .gitmodules (Uses '\-\-remote' option which requires
|
||||||
|
git>=1.8.2)
|
||||||
|
* **parent-credentials** (`bool`) - Use credentials from default
|
||||||
|
remote of parent repository (default false).
|
||||||
|
* **reference-repo** (`str`) - Path of the reference repo to use
|
||||||
|
during clone (optional)
|
||||||
|
* **timeout** (`int`) - Specify a timeout (in minutes) for
|
||||||
|
submodules operations (default 10).
|
||||||
|
* **timeout** (`str`) - Timeout for git commands in minutes (optional)
|
||||||
|
* **use-author** (`bool`): Use author rather than committer in Jenkin's
|
||||||
|
build changeset (default false)
|
||||||
|
* **wipe-workspace** (`bool`) - Wipe out workspace before build
|
||||||
|
(default true)
|
||||||
|
|
||||||
Minimal Example:
|
Minimal Example:
|
||||||
|
|
||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
@ -805,6 +921,17 @@ def github_scm(xml_parent, data):
|
|||||||
if data.get('build-strategies', None):
|
if data.get('build-strategies', None):
|
||||||
build_strategies(xml_parent, data)
|
build_strategies(xml_parent, data)
|
||||||
|
|
||||||
|
# handle the default git extensions like:
|
||||||
|
# - clean
|
||||||
|
# - shallow-clone
|
||||||
|
# - timeout
|
||||||
|
# - do-not-fetch-tags
|
||||||
|
# - submodule
|
||||||
|
# - prune
|
||||||
|
# - wipe-workspace
|
||||||
|
# - use-author
|
||||||
|
git_extensions(traits, data)
|
||||||
|
|
||||||
|
|
||||||
def build_strategies(xml_parent, data):
|
def build_strategies(xml_parent, data):
|
||||||
"""Configure Basic Branch Build Strategies.
|
"""Configure Basic Branch Build Strategies.
|
||||||
|
@ -223,13 +223,6 @@ def git(registry, xml_parent, data):
|
|||||||
("git-config-email", 'gitConfigEmail', ''),
|
("git-config-email", 'gitConfigEmail', ''),
|
||||||
]
|
]
|
||||||
|
|
||||||
choosing_strategies = {
|
|
||||||
'default': 'hudson.plugins.git.util.DefaultBuildChooser',
|
|
||||||
'gerrit': ('com.sonyericsson.hudson.plugins.'
|
|
||||||
'gerrit.trigger.hudsontrigger.GerritTriggerBuildChooser'),
|
|
||||||
'inverse': 'hudson.plugins.git.util.InverseBuildChooser',
|
|
||||||
}
|
|
||||||
|
|
||||||
scm = XML.SubElement(xml_parent,
|
scm = XML.SubElement(xml_parent,
|
||||||
'scm', {'class': 'hudson.plugins.git.GitSCM'})
|
'scm', {'class': 'hudson.plugins.git.GitSCM'})
|
||||||
XML.SubElement(scm, 'configVersion').text = '2'
|
XML.SubElement(scm, 'configVersion').text = '2'
|
||||||
@ -287,173 +280,10 @@ def git(registry, xml_parent, data):
|
|||||||
else:
|
else:
|
||||||
xe.text = val
|
xe.text = val
|
||||||
|
|
||||||
exts_node = XML.SubElement(scm, 'extensions')
|
exts = XML.SubElement(scm, 'extensions')
|
||||||
impl_prefix = 'hudson.plugins.git.extensions.impl.'
|
|
||||||
|
|
||||||
if 'basedir' in data:
|
# handle all supported git extensions
|
||||||
ext = XML.SubElement(exts_node,
|
git_extensions(exts, data)
|
||||||
impl_prefix + 'RelativeTargetDirectory')
|
|
||||||
XML.SubElement(ext, 'relativeTargetDir').text = data['basedir']
|
|
||||||
if 'changelog-against' in data:
|
|
||||||
ext_name = impl_prefix + 'ChangelogToBranch'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
opts = XML.SubElement(ext, 'options')
|
|
||||||
change_remote = data['changelog-against'].get('remote', 'origin')
|
|
||||||
change_branch = data['changelog-against'].get('branch', 'master')
|
|
||||||
XML.SubElement(opts, 'compareRemote').text = change_remote
|
|
||||||
XML.SubElement(opts, 'compareTarget').text = change_branch
|
|
||||||
if 'choosing-strategy' in data:
|
|
||||||
try:
|
|
||||||
choosing_strategy = choosing_strategies[
|
|
||||||
data.get('choosing-strategy')]
|
|
||||||
except KeyError:
|
|
||||||
raise ValueError('Invalid choosing-strategy %r' %
|
|
||||||
data.get('choosing-strategy'))
|
|
||||||
ext = XML.SubElement(exts_node, impl_prefix + 'BuildChooserSetting')
|
|
||||||
XML.SubElement(ext, 'buildChooser', {'class': choosing_strategy})
|
|
||||||
if 'clean' in data:
|
|
||||||
# Keep support for old format 'clean' configuration by checking
|
|
||||||
# if 'clean' is boolean. Else we're using the new extensions style.
|
|
||||||
if isinstance(data['clean'], bool):
|
|
||||||
clean_after = data['clean']
|
|
||||||
clean_before = False
|
|
||||||
logger.warning(
|
|
||||||
"'clean: bool' configuration format is deprecated, "
|
|
||||||
"please use the extension style format to configure "
|
|
||||||
"this option.")
|
|
||||||
else:
|
|
||||||
clean_after = data['clean'].get('after', False)
|
|
||||||
clean_before = data['clean'].get('before', False)
|
|
||||||
if clean_after:
|
|
||||||
ext_name = impl_prefix + 'CleanCheckout'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
if clean_before:
|
|
||||||
ext_name = impl_prefix + 'CleanBeforeCheckout'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
if 'excluded-users' in data:
|
|
||||||
excluded_users = '\n'.join(data['excluded-users'])
|
|
||||||
ext = XML.SubElement(exts_node, impl_prefix + 'UserExclusion')
|
|
||||||
XML.SubElement(ext, 'excludedUsers').text = excluded_users
|
|
||||||
if 'included-regions' in data or 'excluded-regions' in data:
|
|
||||||
ext = XML.SubElement(exts_node,
|
|
||||||
'hudson.plugins.git.extensions.impl.'
|
|
||||||
'PathRestriction')
|
|
||||||
if 'included-regions' in data:
|
|
||||||
include_string = '\n'.join(data['included-regions'])
|
|
||||||
XML.SubElement(ext, 'includedRegions').text = include_string
|
|
||||||
if 'excluded-regions' in data:
|
|
||||||
exclude_string = '\n'.join(data['excluded-regions'])
|
|
||||||
XML.SubElement(ext, 'excludedRegions').text = exclude_string
|
|
||||||
if 'ignore-commits-with-messages' in data:
|
|
||||||
for msg in data['ignore-commits-with-messages']:
|
|
||||||
ext_name = impl_prefix + 'MessageExclusion'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
XML.SubElement(ext, 'excludedMessage').text = msg
|
|
||||||
if 'local-branch' in data:
|
|
||||||
ext = XML.SubElement(exts_node, impl_prefix + 'LocalBranch')
|
|
||||||
XML.SubElement(ext, 'localBranch').text = str(data['local-branch'])
|
|
||||||
if 'merge' in data:
|
|
||||||
merge = data['merge']
|
|
||||||
merge_strategies = ['default', 'resolve', 'recursive', 'octopus',
|
|
||||||
'ours', 'subtree']
|
|
||||||
fast_forward_modes = ['FF', 'FF_ONLY', 'NO_FF']
|
|
||||||
name = merge.get('remote', 'origin')
|
|
||||||
branch = merge['branch']
|
|
||||||
ext = XML.SubElement(exts_node, impl_prefix + 'PreBuildMerge')
|
|
||||||
merge_opts = XML.SubElement(ext, 'options')
|
|
||||||
XML.SubElement(merge_opts, 'mergeRemote').text = name
|
|
||||||
XML.SubElement(merge_opts, 'mergeTarget').text = branch
|
|
||||||
strategy = merge.get('strategy', 'default')
|
|
||||||
if strategy not in merge_strategies:
|
|
||||||
raise InvalidAttributeError('strategy', strategy, merge_strategies)
|
|
||||||
XML.SubElement(merge_opts, 'mergeStrategy').text = strategy
|
|
||||||
fast_forward_mode = merge.get('fast-forward-mode', 'FF')
|
|
||||||
if fast_forward_mode not in fast_forward_modes:
|
|
||||||
raise InvalidAttributeError('fast-forward-mode', fast_forward_mode,
|
|
||||||
fast_forward_modes)
|
|
||||||
XML.SubElement(merge_opts, 'fastForwardMode').text = fast_forward_mode
|
|
||||||
if 'scm-name' in data:
|
|
||||||
ext = XML.SubElement(exts_node, impl_prefix + 'ScmName')
|
|
||||||
XML.SubElement(ext, 'name').text = str(data['scm-name'])
|
|
||||||
clone_options = (
|
|
||||||
"shallow-clone",
|
|
||||||
"timeout",
|
|
||||||
"do-not-fetch-tags"
|
|
||||||
)
|
|
||||||
if any(key in data for key in clone_options):
|
|
||||||
clo = XML.SubElement(exts_node, impl_prefix + 'CloneOption')
|
|
||||||
clone_mapping = [
|
|
||||||
('shallow-clone', 'shallow', False),
|
|
||||||
('depth', 'depth', 1),
|
|
||||||
]
|
|
||||||
helpers.convert_mapping_to_xml(
|
|
||||||
clo, data, clone_mapping, fail_required=True)
|
|
||||||
if 'do-not-fetch-tags' in data:
|
|
||||||
XML.SubElement(clo, 'noTags').text = str(
|
|
||||||
data.get('do-not-fetch-tags', False)).lower()
|
|
||||||
if 'timeout' in data:
|
|
||||||
XML.SubElement(clo, 'timeout').text = str(data['timeout'])
|
|
||||||
if 'sparse-checkout' in data:
|
|
||||||
ext_name = impl_prefix + 'SparseCheckoutPaths'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
sparse_co = XML.SubElement(ext, 'sparseCheckoutPaths')
|
|
||||||
sparse_paths = data['sparse-checkout'].get('paths')
|
|
||||||
if sparse_paths is not None:
|
|
||||||
path_tagname = impl_prefix + 'SparseCheckoutPath'
|
|
||||||
for path in sparse_paths:
|
|
||||||
path_tag = XML.SubElement(sparse_co, path_tagname)
|
|
||||||
XML.SubElement(path_tag, 'path').text = path
|
|
||||||
if 'submodule' in data:
|
|
||||||
ext_name = impl_prefix + 'SubmoduleOption'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
XML.SubElement(ext, 'disableSubmodules').text = str(
|
|
||||||
data['submodule'].get('disable', False)).lower()
|
|
||||||
XML.SubElement(ext, 'recursiveSubmodules').text = str(
|
|
||||||
data['submodule'].get('recursive', False)).lower()
|
|
||||||
XML.SubElement(ext, 'trackingSubmodules').text = str(
|
|
||||||
data['submodule'].get('tracking', False)).lower()
|
|
||||||
XML.SubElement(ext, 'parentCredentials').text = str(
|
|
||||||
data['submodule'].get('parent-credentials', False)).lower()
|
|
||||||
XML.SubElement(ext, 'reference').text = str(
|
|
||||||
data['submodule'].get('reference-repo', ''))
|
|
||||||
XML.SubElement(ext, 'timeout').text = str(
|
|
||||||
data['submodule'].get('timeout', 10))
|
|
||||||
if 'timeout' in data:
|
|
||||||
co = XML.SubElement(exts_node, impl_prefix + 'CheckoutOption')
|
|
||||||
XML.SubElement(co, 'timeout').text = str(data['timeout'])
|
|
||||||
|
|
||||||
polling_using_workspace = str(data.get('force-polling-using-workspace',
|
|
||||||
False)).lower()
|
|
||||||
if polling_using_workspace == 'true':
|
|
||||||
ext_name = impl_prefix + 'DisableRemotePoll'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
if 'per-build-tag' in data or 'skip-tag' in data:
|
|
||||||
# We want to support both skip-tag (the old option) and per-build-tag
|
|
||||||
# (the new option), with the new one overriding the old one.
|
|
||||||
# Unfortunately they have inverse meanings, so we have to be careful.
|
|
||||||
# The default value of per-build-tag is False if skip-tag is not set,
|
|
||||||
# so we set the default value of skip-tag to True.
|
|
||||||
per_build_tag_default = False
|
|
||||||
if str(data.get('skip-tag', True)).lower() == 'false':
|
|
||||||
per_build_tag_default = True
|
|
||||||
if str(data.get('per-build-tag',
|
|
||||||
per_build_tag_default)).lower() == 'true':
|
|
||||||
XML.SubElement(exts_node, impl_prefix + 'PerBuildTag')
|
|
||||||
prune = str(data.get('prune', False)).lower()
|
|
||||||
if prune == 'true':
|
|
||||||
XML.SubElement(exts_node, impl_prefix + 'PruneStaleBranch')
|
|
||||||
ignore_notify_commits = str(data.get('ignore-notify', False)).lower()
|
|
||||||
if ignore_notify_commits == 'true':
|
|
||||||
XML.SubElement(exts_node, impl_prefix + 'IgnoreNotifyCommit')
|
|
||||||
# By default we wipe the workspace
|
|
||||||
wipe_workspace = str(data.get('wipe-workspace', True)).lower()
|
|
||||||
if wipe_workspace == 'true':
|
|
||||||
ext_name = impl_prefix + 'WipeWorkspace'
|
|
||||||
ext = XML.SubElement(exts_node, ext_name)
|
|
||||||
|
|
||||||
use_author = str(data.get('use-author', False)).lower()
|
|
||||||
if use_author == 'true':
|
|
||||||
XML.SubElement(exts_node, impl_prefix + 'AuthorInChangelog')
|
|
||||||
|
|
||||||
browser = data.get('browser', 'auto')
|
browser = data.get('browser', 'auto')
|
||||||
browserdict = {
|
browserdict = {
|
||||||
@ -498,6 +328,235 @@ def git(registry, xml_parent, data):
|
|||||||
data.get('repo-name', ''))
|
data.get('repo-name', ''))
|
||||||
|
|
||||||
|
|
||||||
|
def git_extensions(xml_parent, data):
|
||||||
|
logger = logging.getLogger("%s:git_extensions" % __name__)
|
||||||
|
|
||||||
|
trait = xml_parent.tag == "traits"
|
||||||
|
|
||||||
|
# list of availavble traits here: https://bit.ly/2CNEtqS
|
||||||
|
trait_prefix = 'jenkins.plugins.git.traits.'
|
||||||
|
impl_prefix = 'hudson.plugins.git.extensions.impl.'
|
||||||
|
|
||||||
|
choosing_strategies = {
|
||||||
|
'default': 'hudson.plugins.git.util.DefaultBuildChooser',
|
||||||
|
'gerrit': ('com.sonyericsson.hudson.plugins.'
|
||||||
|
'gerrit.trigger.hudsontrigger.GerritTriggerBuildChooser'),
|
||||||
|
'inverse': 'hudson.plugins.git.util.InverseBuildChooser',
|
||||||
|
}
|
||||||
|
|
||||||
|
if not trait and 'basedir' in data:
|
||||||
|
ext = XML.SubElement(xml_parent,
|
||||||
|
impl_prefix + 'RelativeTargetDirectory')
|
||||||
|
XML.SubElement(ext, 'relativeTargetDir').text = data['basedir']
|
||||||
|
if not trait and 'changelog-against' in data:
|
||||||
|
ext_name = impl_prefix + 'ChangelogToBranch'
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
opts = XML.SubElement(ext, 'options')
|
||||||
|
change_remote = data['changelog-against'].get('remote', 'origin')
|
||||||
|
change_branch = data['changelog-against'].get('branch', 'master')
|
||||||
|
XML.SubElement(opts, 'compareRemote').text = change_remote
|
||||||
|
XML.SubElement(opts, 'compareTarget').text = change_branch
|
||||||
|
if not trait and 'choosing-strategy' in data:
|
||||||
|
try:
|
||||||
|
choosing_strategy = choosing_strategies[
|
||||||
|
data.get('choosing-strategy')]
|
||||||
|
except KeyError:
|
||||||
|
raise ValueError('Invalid choosing-strategy %r' %
|
||||||
|
data.get('choosing-strategy'))
|
||||||
|
ext = XML.SubElement(xml_parent, impl_prefix + 'BuildChooserSetting')
|
||||||
|
XML.SubElement(ext, 'buildChooser', {'class': choosing_strategy})
|
||||||
|
if 'clean' in data:
|
||||||
|
# Keep support for old format 'clean' configuration by checking
|
||||||
|
# if 'clean' is boolean. Else we're using the new extensions style.
|
||||||
|
if isinstance(data['clean'], bool):
|
||||||
|
clean_after = data['clean']
|
||||||
|
clean_before = False
|
||||||
|
logger.warning(
|
||||||
|
"'clean: bool' configuration format is deprecated, "
|
||||||
|
"please use the extension style format to configure "
|
||||||
|
"this option.")
|
||||||
|
else:
|
||||||
|
clean_after = data['clean'].get('after', False)
|
||||||
|
clean_before = data['clean'].get('before', False)
|
||||||
|
if clean_after:
|
||||||
|
ext_name = impl_prefix + 'CleanCheckout'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'CleanAfterCheckoutTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
if clean_before:
|
||||||
|
ext_name = impl_prefix + 'CleanBeforeCheckout'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'CleanBeforeCheckoutTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
if not trait and 'excluded-users' in data:
|
||||||
|
excluded_users = '\n'.join(data['excluded-users'])
|
||||||
|
ext = XML.SubElement(xml_parent, impl_prefix + 'UserExclusion')
|
||||||
|
XML.SubElement(ext, 'excludedUsers').text = excluded_users
|
||||||
|
if not trait and 'included-regions' in data or 'excluded-regions' in data:
|
||||||
|
ext = XML.SubElement(xml_parent,
|
||||||
|
'hudson.plugins.git.extensions.impl.'
|
||||||
|
'PathRestriction')
|
||||||
|
if 'included-regions' in data:
|
||||||
|
include_string = '\n'.join(data['included-regions'])
|
||||||
|
XML.SubElement(ext, 'includedRegions').text = include_string
|
||||||
|
if 'excluded-regions' in data:
|
||||||
|
exclude_string = '\n'.join(data['excluded-regions'])
|
||||||
|
XML.SubElement(ext, 'excludedRegions').text = exclude_string
|
||||||
|
if not trait and 'ignore-commits-with-messages' in data:
|
||||||
|
for msg in data['ignore-commits-with-messages']:
|
||||||
|
ext_name = impl_prefix + 'MessageExclusion'
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
XML.SubElement(ext, 'excludedMessage').text = msg
|
||||||
|
if not trait and 'local-branch' in data:
|
||||||
|
ext = XML.SubElement(xml_parent, impl_prefix + 'LocalBranch')
|
||||||
|
XML.SubElement(ext, 'localBranch').text = str(data['local-branch'])
|
||||||
|
if not trait and 'merge' in data:
|
||||||
|
merge = data['merge']
|
||||||
|
merge_strategies = ['default', 'resolve', 'recursive', 'octopus',
|
||||||
|
'ours', 'subtree']
|
||||||
|
fast_forward_modes = ['FF', 'FF_ONLY', 'NO_FF']
|
||||||
|
name = merge.get('remote', 'origin')
|
||||||
|
branch = merge['branch']
|
||||||
|
ext = XML.SubElement(xml_parent, impl_prefix + 'PreBuildMerge')
|
||||||
|
merge_opts = XML.SubElement(ext, 'options')
|
||||||
|
XML.SubElement(merge_opts, 'mergeRemote').text = name
|
||||||
|
XML.SubElement(merge_opts, 'mergeTarget').text = branch
|
||||||
|
strategy = merge.get('strategy', 'default')
|
||||||
|
if strategy not in merge_strategies:
|
||||||
|
raise InvalidAttributeError('strategy', strategy, merge_strategies)
|
||||||
|
XML.SubElement(merge_opts, 'mergeStrategy').text = strategy
|
||||||
|
fast_forward_mode = merge.get('fast-forward-mode', 'FF')
|
||||||
|
if fast_forward_mode not in fast_forward_modes:
|
||||||
|
raise InvalidAttributeError('fast-forward-mode', fast_forward_mode,
|
||||||
|
fast_forward_modes)
|
||||||
|
XML.SubElement(merge_opts, 'fastForwardMode').text = fast_forward_mode
|
||||||
|
if not trait and 'scm-name' in data:
|
||||||
|
ext = XML.SubElement(xml_parent, impl_prefix + 'ScmName')
|
||||||
|
XML.SubElement(ext, 'name').text = str(data['scm-name'])
|
||||||
|
|
||||||
|
clone_options = (
|
||||||
|
"shallow-clone",
|
||||||
|
"timeout",
|
||||||
|
"do-not-fetch-tags"
|
||||||
|
)
|
||||||
|
if any(key in data for key in clone_options):
|
||||||
|
ext_name = impl_prefix + 'CloneOption'
|
||||||
|
|
||||||
|
if trait:
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + 'CloneOptionTrait')
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
|
||||||
|
clone_mapping = [
|
||||||
|
('shallow-clone', 'shallow', False),
|
||||||
|
('depth', 'depth', 1),
|
||||||
|
]
|
||||||
|
helpers.convert_mapping_to_xml(
|
||||||
|
ext, data, clone_mapping, fail_required=True)
|
||||||
|
if 'do-not-fetch-tags' in data:
|
||||||
|
XML.SubElement(ext, 'noTags').text = str(
|
||||||
|
data.get('do-not-fetch-tags', False)).lower()
|
||||||
|
if 'timeout' in data:
|
||||||
|
XML.SubElement(ext, 'timeout').text = str(data['timeout'])
|
||||||
|
if not trait and 'sparse-checkout' in data:
|
||||||
|
ext_name = impl_prefix + 'SparseCheckoutPaths'
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
sparse_co = XML.SubElement(ext, 'sparseCheckoutPaths')
|
||||||
|
sparse_paths = data['sparse-checkout'].get('paths')
|
||||||
|
if sparse_paths is not None:
|
||||||
|
path_tagname = impl_prefix + 'SparseCheckoutPath'
|
||||||
|
for path in sparse_paths:
|
||||||
|
path_tag = XML.SubElement(sparse_co, path_tagname)
|
||||||
|
XML.SubElement(path_tag, 'path').text = path
|
||||||
|
if 'submodule' in data:
|
||||||
|
ext_name = impl_prefix + 'SubmoduleOption'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'SubmoduleOptionTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
|
||||||
|
XML.SubElement(ext, 'disableSubmodules').text = str(
|
||||||
|
data['submodule'].get('disable', False)).lower()
|
||||||
|
XML.SubElement(ext, 'recursiveSubmodules').text = str(
|
||||||
|
data['submodule'].get('recursive', False)).lower()
|
||||||
|
XML.SubElement(ext, 'trackingSubmodules').text = str(
|
||||||
|
data['submodule'].get('tracking', False)).lower()
|
||||||
|
XML.SubElement(ext, 'parentCredentials').text = str(
|
||||||
|
data['submodule'].get('parent-credentials', False)).lower()
|
||||||
|
XML.SubElement(ext, 'reference').text = str(
|
||||||
|
data['submodule'].get('reference-repo', ''))
|
||||||
|
XML.SubElement(ext, 'timeout').text = str(
|
||||||
|
data['submodule'].get('timeout', 10))
|
||||||
|
if 'timeout' in data:
|
||||||
|
ext_name = impl_prefix + 'CheckoutOption'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'CheckoutOptionTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
XML.SubElement(ext, 'timeout').text = str(data['timeout'])
|
||||||
|
|
||||||
|
polling_using_workspace = str(data.get('force-polling-using-workspace',
|
||||||
|
False)).lower()
|
||||||
|
if not trait and polling_using_workspace == 'true':
|
||||||
|
ext_name = impl_prefix + 'DisableRemotePoll'
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
if not trait and 'per-build-tag' in data or 'skip-tag' in data:
|
||||||
|
# We want to support both skip-tag (the old option) and per-build-tag
|
||||||
|
# (the new option), with the new one overriding the old one.
|
||||||
|
# Unfortunately they have inverse meanings, so we have to be careful.
|
||||||
|
# The default value of per-build-tag is False if skip-tag is not set,
|
||||||
|
# so we set the default value of skip-tag to True.
|
||||||
|
per_build_tag_default = False
|
||||||
|
if str(data.get('skip-tag', True)).lower() == 'false':
|
||||||
|
per_build_tag_default = True
|
||||||
|
if str(data.get('per-build-tag',
|
||||||
|
per_build_tag_default)).lower() == 'true':
|
||||||
|
XML.SubElement(xml_parent, impl_prefix + 'PerBuildTag')
|
||||||
|
prune = str(data.get('prune', False)).lower()
|
||||||
|
if prune == 'true':
|
||||||
|
ext_name = impl_prefix + 'PruneStaleBranch'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'PruneStaleBranchTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
ignore_notify_commits = str(data.get('ignore-notify', False)).lower()
|
||||||
|
if not trait and ignore_notify_commits == 'true':
|
||||||
|
XML.SubElement(xml_parent, impl_prefix + 'IgnoreNotifyCommit')
|
||||||
|
# By default we wipe the workspace
|
||||||
|
wipe_workspace = str(data.get('wipe-workspace', True)).lower()
|
||||||
|
if wipe_workspace == 'true':
|
||||||
|
ext_name = impl_prefix + 'WipeWorkspace'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'WipeWorkspaceTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
|
||||||
|
use_author = str(data.get('use-author', False)).lower()
|
||||||
|
if use_author == 'true':
|
||||||
|
ext_name = impl_prefix + 'AuthorInChangelog'
|
||||||
|
if trait:
|
||||||
|
trait_name = 'AuthorInChangelogTrait'
|
||||||
|
tr = XML.SubElement(xml_parent, trait_prefix + trait_name)
|
||||||
|
ext = XML.SubElement(tr, "extension", {"class": ext_name})
|
||||||
|
else:
|
||||||
|
ext = XML.SubElement(xml_parent, ext_name)
|
||||||
|
|
||||||
|
|
||||||
def cvs(registry, xml_parent, data):
|
def cvs(registry, xml_parent, data):
|
||||||
"""yaml: cvs
|
"""yaml: cvs
|
||||||
Specifies the CVS SCM repository for this job.
|
Specifies the CVS SCM repository for this job.
|
||||||
|
@ -41,7 +41,11 @@
|
|||||||
<repoOwner>SANDBOX</repoOwner>
|
<repoOwner>SANDBOX</repoOwner>
|
||||||
<repository>test</repository>
|
<repository>test</repository>
|
||||||
<credentialsId>secret</credentialsId>
|
<credentialsId>secret</credentialsId>
|
||||||
<traits/>
|
<traits>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
<jenkins.branch.BranchSource>
|
<jenkins.branch.BranchSource>
|
||||||
@ -51,6 +55,9 @@
|
|||||||
<credentialsId>secret</credentialsId>
|
<credentialsId>secret</credentialsId>
|
||||||
<traits>
|
<traits>
|
||||||
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
|
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
@ -71,6 +78,9 @@
|
|||||||
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
<strategyId>1</strategyId>
|
<strategyId>1</strategyId>
|
||||||
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
|
@ -47,6 +47,9 @@
|
|||||||
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
<strategyId>1</strategyId>
|
<strategyId>1</strategyId>
|
||||||
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
|
@ -64,6 +64,44 @@
|
|||||||
<includes>*</includes>
|
<includes>*</includes>
|
||||||
<excludes>master</excludes>
|
<excludes>master</excludes>
|
||||||
</jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait>
|
</jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanBeforeCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CloneOption">
|
||||||
|
<shallow>true</shallow>
|
||||||
|
<depth>3</depth>
|
||||||
|
<noTags>true</noTags>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.SubmoduleOption">
|
||||||
|
<disableSubmodules>false</disableSubmodules>
|
||||||
|
<recursiveSubmodules>true</recursiveSubmodules>
|
||||||
|
<trackingSubmodules>false</trackingSubmodules>
|
||||||
|
<parentCredentials>true</parentCredentials>
|
||||||
|
<reference/>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CheckoutOption">
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.PruneStaleBranch"/>
|
||||||
|
</jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.AuthorInChangelog"/>
|
||||||
|
</jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
<buildStrategies>
|
<buildStrategies>
|
||||||
|
@ -42,3 +42,18 @@ scm:
|
|||||||
- exact-name: {}
|
- exact-name: {}
|
||||||
- regex-name: {}
|
- regex-name: {}
|
||||||
- wildcards-name: {}
|
- wildcards-name: {}
|
||||||
|
clean:
|
||||||
|
after: true
|
||||||
|
before: true
|
||||||
|
prune: true
|
||||||
|
shallow-clone: true
|
||||||
|
depth: 3
|
||||||
|
do-not-fetch-tags: true
|
||||||
|
submodule:
|
||||||
|
disable: false
|
||||||
|
recursive: true
|
||||||
|
parent-credentials: true
|
||||||
|
timeout: 100
|
||||||
|
timeout: "100"
|
||||||
|
use-author: true
|
||||||
|
wipe-workspace: true
|
||||||
|
@ -35,7 +35,11 @@
|
|||||||
<id>bb-SANDBOX-test</id>
|
<id>bb-SANDBOX-test</id>
|
||||||
<repoOwner>SANDBOX</repoOwner>
|
<repoOwner>SANDBOX</repoOwner>
|
||||||
<repository>test</repository>
|
<repository>test</repository>
|
||||||
<traits/>
|
<traits>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
</data>
|
</data>
|
||||||
|
@ -41,6 +41,44 @@
|
|||||||
<jenkins.scm.impl.trait.RegexSCMHeadFilterTrait>
|
<jenkins.scm.impl.trait.RegexSCMHeadFilterTrait>
|
||||||
<regex>master|\d+\.\d+</regex>
|
<regex>master|\d+\.\d+</regex>
|
||||||
</jenkins.scm.impl.trait.RegexSCMHeadFilterTrait>
|
</jenkins.scm.impl.trait.RegexSCMHeadFilterTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanBeforeCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CloneOption">
|
||||||
|
<shallow>true</shallow>
|
||||||
|
<depth>3</depth>
|
||||||
|
<noTags>true</noTags>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.SubmoduleOption">
|
||||||
|
<disableSubmodules>false</disableSubmodules>
|
||||||
|
<recursiveSubmodules>true</recursiveSubmodules>
|
||||||
|
<trackingSubmodules>false</trackingSubmodules>
|
||||||
|
<parentCredentials>true</parentCredentials>
|
||||||
|
<reference/>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CheckoutOption">
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.PruneStaleBranch"/>
|
||||||
|
</jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.AuthorInChangelog"/>
|
||||||
|
</jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
<buildStrategies>
|
<buildStrategies>
|
||||||
|
@ -32,3 +32,18 @@ scm:
|
|||||||
- exact-name: {}
|
- exact-name: {}
|
||||||
- regex-name: {}
|
- regex-name: {}
|
||||||
- wildcards-name: {}
|
- wildcards-name: {}
|
||||||
|
clean:
|
||||||
|
after: true
|
||||||
|
before: true
|
||||||
|
prune: true
|
||||||
|
shallow-clone: true
|
||||||
|
depth: 3
|
||||||
|
do-not-fetch-tags: true
|
||||||
|
submodule:
|
||||||
|
disable: false
|
||||||
|
recursive: true
|
||||||
|
parent-credentials: true
|
||||||
|
timeout: 100
|
||||||
|
timeout: "100"
|
||||||
|
use-author: true
|
||||||
|
wipe-workspace: true
|
||||||
|
@ -37,6 +37,9 @@
|
|||||||
<credentialsId/>
|
<credentialsId/>
|
||||||
<traits>
|
<traits>
|
||||||
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
|
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
|
@ -49,6 +49,44 @@
|
|||||||
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
<strategyId>3</strategyId>
|
<strategyId>3</strategyId>
|
||||||
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanAfterCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CleanBeforeCheckout"/>
|
||||||
|
</jenkins.plugins.git.traits.CleanBeforeCheckoutTrait>
|
||||||
|
<jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CloneOption">
|
||||||
|
<shallow>true</shallow>
|
||||||
|
<depth>3</depth>
|
||||||
|
<noTags>true</noTags>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CloneOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.SubmoduleOption">
|
||||||
|
<disableSubmodules>false</disableSubmodules>
|
||||||
|
<recursiveSubmodules>true</recursiveSubmodules>
|
||||||
|
<trackingSubmodules>false</trackingSubmodules>
|
||||||
|
<parentCredentials>true</parentCredentials>
|
||||||
|
<reference/>
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.SubmoduleOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.CheckoutOption">
|
||||||
|
<timeout>100</timeout>
|
||||||
|
</extension>
|
||||||
|
</jenkins.plugins.git.traits.CheckoutOptionTrait>
|
||||||
|
<jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.PruneStaleBranch"/>
|
||||||
|
</jenkins.plugins.git.traits.PruneStaleBranchTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.AuthorInChangelog"/>
|
||||||
|
</jenkins.plugins.git.traits.AuthorInChangelogTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
<buildStrategies>
|
<buildStrategies>
|
||||||
|
@ -35,3 +35,18 @@ scm:
|
|||||||
- exact-name: {}
|
- exact-name: {}
|
||||||
- regex-name: {}
|
- regex-name: {}
|
||||||
- wildcards-name: {}
|
- wildcards-name: {}
|
||||||
|
clean:
|
||||||
|
after: true
|
||||||
|
before: true
|
||||||
|
prune: true
|
||||||
|
shallow-clone: true
|
||||||
|
depth: 3
|
||||||
|
do-not-fetch-tags: true
|
||||||
|
submodule:
|
||||||
|
disable: false
|
||||||
|
recursive: true
|
||||||
|
parent-credentials: true
|
||||||
|
timeout: 100
|
||||||
|
timeout: "100"
|
||||||
|
use-author: true
|
||||||
|
wipe-workspace: true
|
||||||
|
@ -46,6 +46,9 @@
|
|||||||
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
<strategyId>1</strategyId>
|
<strategyId>1</strategyId>
|
||||||
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
|
@ -42,6 +42,9 @@
|
|||||||
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
<strategyId>1</strategyId>
|
<strategyId>1</strategyId>
|
||||||
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
|
||||||
|
<jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
|
<extension class="hudson.plugins.git.extensions.impl.WipeWorkspace"/>
|
||||||
|
</jenkins.plugins.git.traits.WipeWorkspaceTrait>
|
||||||
</traits>
|
</traits>
|
||||||
</source>
|
</source>
|
||||||
</jenkins.branch.BranchSource>
|
</jenkins.branch.BranchSource>
|
||||||
|
Loading…
Reference in New Issue
Block a user