Add retry support to plugins depend on Publish Over X

Change-Id: Ic5a1ce530ad93b84f0444666ca40fed98b0460bc
This commit is contained in:
Li-Wen Hsu 2018-12-16 16:04:27 +08:00
parent 02e85408f0
commit 78e4f00c6b
No known key found for this signature in database
GPG Key ID: 8D7BCC7D012FD37E
7 changed files with 45 additions and 3 deletions

View File

@ -1175,6 +1175,10 @@ def ftp(registry, xml_parent, data):
directories (default false). directories (default false).
:arg bool verbose: adds lots of detail useful for debug to the console :arg bool verbose: adds lots of detail useful for debug to the console
but generally should be left off (default false) but generally should be left off (default false)
:arg int retries: the number of times to retry this server in the event of
failure (optional)
:arg int retry-delay: the time to wait, in milliseconds, before attempting
another transfer (default 10000)
Minimal Example: Minimal Example:
@ -1191,6 +1195,7 @@ def ftp(registry, xml_parent, data):
plugin_tag = 'jenkins.plugins.publish__over__ftp.BapFtpPublisherPlugin' plugin_tag = 'jenkins.plugins.publish__over__ftp.BapFtpPublisherPlugin'
publisher_tag = 'jenkins.plugins.publish__over__ftp.BapFtpPublisher' publisher_tag = 'jenkins.plugins.publish__over__ftp.BapFtpPublisher'
transfer_tag = 'jenkins.plugins.publish__over__ftp.BapFtpTransfer' transfer_tag = 'jenkins.plugins.publish__over__ftp.BapFtpTransfer'
retry_tag = 'jenkins.plugins.publish_over_ftp.BapFtpRetry'
plugin_reference_tag = 'jenkins.plugins.publish_over_ftp.' \ plugin_reference_tag = 'jenkins.plugins.publish_over_ftp.' \
'BapFtpPublisherPlugin' 'BapFtpPublisherPlugin'
(_, transfer_node) = base_publish_over(xml_parent, (_, transfer_node) = base_publish_over(xml_parent,
@ -1199,6 +1204,7 @@ def ftp(registry, xml_parent, data):
plugin_tag, plugin_tag,
publisher_tag, publisher_tag,
transfer_tag, transfer_tag,
retry_tag,
plugin_reference_tag) plugin_reference_tag)
mapping = [('', 'asciiMode', 'false')] mapping = [('', 'asciiMode', 'false')]
helpers.convert_mapping_to_xml( helpers.convert_mapping_to_xml(
@ -1916,6 +1922,10 @@ def ssh(registry, xml_parent, data):
directories (default false). directories (default false).
:arg bool verbose: adds lots of detail useful for debug to the console :arg bool verbose: adds lots of detail useful for debug to the console
but generally should be left off (default false) but generally should be left off (default false)
:arg int retries: the number of times to retry this server in the event of
failure (optional)
:arg int retry-delay: the time to wait, in milliseconds, before attempting
another transfer (default 10000)
Minimal Example: Minimal Example:
@ -1931,6 +1941,7 @@ def ssh(registry, xml_parent, data):
tag_prefix = 'jenkins.plugins.publish' tag_prefix = 'jenkins.plugins.publish'
publisher_tag = '%s__over__ssh.BapSshPublisher' % tag_prefix publisher_tag = '%s__over__ssh.BapSshPublisher' % tag_prefix
transfer_tag = '%s__over__ssh.BapSshTransfer' % tag_prefix transfer_tag = '%s__over__ssh.BapSshTransfer' % tag_prefix
retry_tag = '%s_over_ssh.BapSshRetry' % tag_prefix
reference_tag = '%s_over_ssh.BapSshPublisherPlugin' % tag_prefix reference_tag = '%s_over_ssh.BapSshPublisherPlugin' % tag_prefix
if xml_parent.tag == 'publishers': if xml_parent.tag == 'publishers':
@ -1941,7 +1952,8 @@ def ssh(registry, xml_parent, data):
is_builder = True is_builder = True
base_publish_over(xml_parent, data, console_prefix, plugin_tag, base_publish_over(xml_parent, data, console_prefix, plugin_tag,
publisher_tag, transfer_tag, reference_tag, is_builder) publisher_tag, transfer_tag, retry_tag, reference_tag,
is_builder)
def pipeline(registry, xml_parent, data): def pipeline(registry, xml_parent, data):
@ -2679,8 +2691,8 @@ def groovy_postbuild(registry, xml_parent, data):
def base_publish_over(xml_parent, data, console_prefix, def base_publish_over(xml_parent, data, console_prefix,
plugin_tag, publisher_tag, plugin_tag, publisher_tag,
transferset_tag, reference_plugin_tag, transferset_tag, retry_tag,
is_builder=False): reference_plugin_tag, is_builder=False):
outer = XML.SubElement(xml_parent, plugin_tag) outer = XML.SubElement(xml_parent, plugin_tag)
# 'Publish over SSH' builder has an extra top delegate element # 'Publish over SSH' builder has an extra top delegate element
if xml_parent.tag == 'builders' or is_builder: if xml_parent.tag == 'builders' or is_builder:
@ -2721,6 +2733,12 @@ def base_publish_over(xml_parent, data, console_prefix,
XML.SubElement(inner, 'useWorkspaceInPromotion').text = 'false' XML.SubElement(inner, 'useWorkspaceInPromotion').text = 'false'
XML.SubElement(inner, 'usePromotionTimestamp').text = 'false' XML.SubElement(inner, 'usePromotionTimestamp').text = 'false'
if 'retries' in data:
retry = XML.SubElement(inner, 'retry', {'class': retry_tag})
XML.SubElement(retry, 'retries').text = str(data.get('retries', 0))
XML.SubElement(retry, 'retryDelay').text = str(
data.get('retry-delay', 10000))
XML.SubElement(delegate, 'continueOnError').text = 'false' XML.SubElement(delegate, 'continueOnError').text = 'false'
XML.SubElement(delegate, 'failOnError').text = str( XML.SubElement(delegate, 'failOnError').text = str(
data.get('fail-on-error', False)).lower() data.get('fail-on-error', False)).lower()
@ -2753,6 +2771,10 @@ def cifs(registry, xml_parent, data):
directories (default false). directories (default false).
:arg bool verbose: adds lots of detail useful for debug to the console :arg bool verbose: adds lots of detail useful for debug to the console
but generally should be left off (default false) but generally should be left off (default false)
:arg int retries: the number of times to retry this server in the event of
failure (optional)
:arg int retry-delay: the time to wait, in milliseconds, before attempting
another transfer (default 10000)
Minimal Example: Minimal Example:
@ -2774,6 +2796,7 @@ def cifs(registry, xml_parent, data):
is_builder = True is_builder = True
publisher_tag = 'jenkins.plugins.publish__over__cifs.CifsPublisher' publisher_tag = 'jenkins.plugins.publish__over__cifs.CifsPublisher'
transfer_tag = 'jenkins.plugins.publish__over__cifs.CifsTransfer' transfer_tag = 'jenkins.plugins.publish__over__cifs.CifsTransfer'
retry_tag = 'jenkins.plugins.publish_over_cifs.CifsRetry'
plugin_reference_tag = ('jenkins.plugins.publish_over_cifs.' plugin_reference_tag = ('jenkins.plugins.publish_over_cifs.'
'CifsPublisherPlugin') 'CifsPublisherPlugin')
base_publish_over(xml_parent, base_publish_over(xml_parent,
@ -2782,6 +2805,7 @@ def cifs(registry, xml_parent, data):
plugin_tag, plugin_tag,
publisher_tag, publisher_tag,
transfer_tag, transfer_tag,
retry_tag,
plugin_reference_tag, plugin_reference_tag,
is_builder) is_builder)

View File

@ -21,6 +21,10 @@
</transfers> </transfers>
<useWorkspaceInPromotion>false</useWorkspaceInPromotion> <useWorkspaceInPromotion>false</useWorkspaceInPromotion>
<usePromotionTimestamp>false</usePromotionTimestamp> <usePromotionTimestamp>false</usePromotionTimestamp>
<retry class="jenkins.plugins.publish_over_cifs.CifsRetry">
<retries>99</retries>
<retryDelay>12345</retryDelay>
</retry>
</jenkins.plugins.publish__over__cifs.CifsPublisher> </jenkins.plugins.publish__over__cifs.CifsPublisher>
</publishers> </publishers>
<continueOnError>false</continueOnError> <continueOnError>false</continueOnError>

View File

@ -10,3 +10,5 @@ publishers:
fail-on-error: true fail-on-error: true
flatten: true flatten: true
verbose: true verbose: true
retries: 99
retry-delay: 12345

View File

@ -22,6 +22,10 @@
</transfers> </transfers>
<useWorkspaceInPromotion>false</useWorkspaceInPromotion> <useWorkspaceInPromotion>false</useWorkspaceInPromotion>
<usePromotionTimestamp>false</usePromotionTimestamp> <usePromotionTimestamp>false</usePromotionTimestamp>
<retry class="jenkins.plugins.publish_over_ftp.BapFtpRetry">
<retries>99</retries>
<retryDelay>12345</retryDelay>
</retry>
</jenkins.plugins.publish__over__ftp.BapFtpPublisher> </jenkins.plugins.publish__over__ftp.BapFtpPublisher>
</publishers> </publishers>
<continueOnError>false</continueOnError> <continueOnError>false</continueOnError>

View File

@ -10,3 +10,5 @@ publishers:
fail-on-error: true fail-on-error: true
flatten: true flatten: true
verbose: true verbose: true
retries: 99
retry-delay: 12345

View File

@ -24,6 +24,10 @@
</transfers> </transfers>
<useWorkspaceInPromotion>false</useWorkspaceInPromotion> <useWorkspaceInPromotion>false</useWorkspaceInPromotion>
<usePromotionTimestamp>false</usePromotionTimestamp> <usePromotionTimestamp>false</usePromotionTimestamp>
<retry class="jenkins.plugins.publish_over_ssh.BapSshRetry">
<retries>99</retries>
<retryDelay>12345</retryDelay>
</retry>
</jenkins.plugins.publish__over__ssh.BapSshPublisher> </jenkins.plugins.publish__over__ssh.BapSshPublisher>
</publishers> </publishers>
<continueOnError>false</continueOnError> <continueOnError>false</continueOnError>

View File

@ -14,3 +14,5 @@ publishers:
always-publish-from-master: true always-publish-from-master: true
flatten: true flatten: true
verbose: true verbose: true
retries: 99
retry-delay: 12345