Add support for the S3 Publisher plugin
Change-Id: Ia918596276e49d5876bc232fce760e270a829335
This commit is contained in:
parent
445c73a298
commit
1d08abd8f0
@ -3533,6 +3533,79 @@ def artifact_deployer(parser, xml_parent, data):
|
|||||||
XML.SubElement(deployer, 'deployEvenBuildFail').text = deploy_if_fail
|
XML.SubElement(deployer, 'deployEvenBuildFail').text = deploy_if_fail
|
||||||
|
|
||||||
|
|
||||||
|
def s3(parser, xml_parent, data):
|
||||||
|
"""yaml: s3
|
||||||
|
Upload build artifacts to Amazon S3.
|
||||||
|
|
||||||
|
Requires the Jenkins `S3 plugin.
|
||||||
|
<https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin>`_
|
||||||
|
|
||||||
|
:arg str s3-profile: Globally-defined S3 profile to use
|
||||||
|
:arg list entries:
|
||||||
|
:entries:
|
||||||
|
* **destination-bucket** (`str`) - Destination S3 bucket
|
||||||
|
* **source-files** (`str`) - Source files (Ant glob syntax)
|
||||||
|
* **storage-class** (`str`) - S3 storage class; one of "STANDARD"
|
||||||
|
or "REDUCED_REDUNDANCY"
|
||||||
|
* **bucket-region** (`str`) - S3 bucket region (capitalized with
|
||||||
|
underscores)
|
||||||
|
* **upload-on-failure** (`bool`) - Upload files even if the build
|
||||||
|
failed (Default: False)
|
||||||
|
* **upload-from-slave** (`bool`) - Perform the upload directly from
|
||||||
|
the Jenkins slave rather than the master node. (Default: False)
|
||||||
|
* **managed-artifacts** (`bool`) - Let Jenkins fully manage the
|
||||||
|
published artifacts, similar to when artifacts are published to
|
||||||
|
the Jenkins master. (Default: False)
|
||||||
|
:arg list metadata-tags:
|
||||||
|
:metadata-tags:
|
||||||
|
* **key** Metadata key for files from this build. It will be
|
||||||
|
prefixed by "x-amz-meta-" when uploaded to S3. Can contain macros
|
||||||
|
(e.g. environment variables).
|
||||||
|
* **value** Metadata value associated with the key. Can contain macros.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. literalinclude:: /../../tests/publishers/fixtures/s3001.yaml
|
||||||
|
:language: yaml
|
||||||
|
"""
|
||||||
|
deployer = XML.SubElement(xml_parent,
|
||||||
|
'hudson.plugins.s3.S3BucketPublisher')
|
||||||
|
if data is None or not data.get('entries'):
|
||||||
|
raise JenkinsJobsException('No filesets defined.')
|
||||||
|
|
||||||
|
XML.SubElement(deployer, 'profileName').text = data.get('s3-profile')
|
||||||
|
|
||||||
|
entries = XML.SubElement(deployer, 'entries')
|
||||||
|
|
||||||
|
for entry in data.get('entries'):
|
||||||
|
fileset = XML.SubElement(entries, 'hudson.plugins.s3.Entry')
|
||||||
|
|
||||||
|
# xml keys -> yaml keys
|
||||||
|
settings = [('bucket', 'destination-bucket', ''),
|
||||||
|
('sourceFile', 'source-files', ''),
|
||||||
|
('storageClass', 'storage-class', ''),
|
||||||
|
('selectedRegion', 'bucket-region', ''),
|
||||||
|
('noUploadOnFailure', 'upload-on-failure', False),
|
||||||
|
('uploadFromSlave', 'upload-from-slave', False),
|
||||||
|
('managedArtifacts', 'managed-artifacts', False)]
|
||||||
|
|
||||||
|
for xml_key, yaml_key, default in settings:
|
||||||
|
xml_config = XML.SubElement(fileset, xml_key)
|
||||||
|
config_value = entry.get(yaml_key, default)
|
||||||
|
if xml_key == 'noUploadOnFailure':
|
||||||
|
xml_config.text = str(not config_value).lower()
|
||||||
|
elif isinstance(default, bool):
|
||||||
|
xml_config.text = str(config_value).lower()
|
||||||
|
else:
|
||||||
|
xml_config.text = str(config_value)
|
||||||
|
|
||||||
|
metadata = XML.SubElement(deployer, 'userMetadata')
|
||||||
|
for tag in data.get('metadata-tags', []):
|
||||||
|
pair = XML.SubElement(metadata, 'hudson.plugins.s3.MetadataPair')
|
||||||
|
XML.SubElement(pair, 'key').text = tag.get('key')
|
||||||
|
XML.SubElement(pair, 'value').text = tag.get('value')
|
||||||
|
|
||||||
|
|
||||||
def ruby_metrics(parser, xml_parent, data):
|
def ruby_metrics(parser, xml_parent, data):
|
||||||
"""yaml: ruby-metrics
|
"""yaml: ruby-metrics
|
||||||
Rcov plugin parses rcov html report files and
|
Rcov plugin parses rcov html report files and
|
||||||
|
@ -155,6 +155,7 @@ jenkins_jobs.publishers =
|
|||||||
rich-text-publisher=jenkins_jobs.modules.publishers:rich_text_publisher
|
rich-text-publisher=jenkins_jobs.modules.publishers:rich_text_publisher
|
||||||
robot=jenkins_jobs.modules.publishers:robot
|
robot=jenkins_jobs.modules.publishers:robot
|
||||||
ruby-metrics=jenkins_jobs.modules.publishers:ruby_metrics
|
ruby-metrics=jenkins_jobs.modules.publishers:ruby_metrics
|
||||||
|
s3=jenkins_jobs.modules.publishers:s3
|
||||||
scp=jenkins_jobs.modules.publishers:scp
|
scp=jenkins_jobs.modules.publishers:scp
|
||||||
sitemonitor=jenkins_jobs.modules.publishers:sitemonitor
|
sitemonitor=jenkins_jobs.modules.publishers:sitemonitor
|
||||||
sloccount=jenkins_jobs.modules.publishers:sloccount
|
sloccount=jenkins_jobs.modules.publishers:sloccount
|
||||||
|
29
tests/publishers/fixtures/s3001.xml
Normal file
29
tests/publishers/fixtures/s3001.xml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<publishers>
|
||||||
|
<hudson.plugins.s3.S3BucketPublisher>
|
||||||
|
<profileName>banana</profileName>
|
||||||
|
<entries>
|
||||||
|
<hudson.plugins.s3.Entry>
|
||||||
|
<bucket>herp-derp</bucket>
|
||||||
|
<sourceFile>bargle_${BUILD_ID}.tgz</sourceFile>
|
||||||
|
<storageClass>STANDARD</storageClass>
|
||||||
|
<selectedRegion>US_EAST_1</selectedRegion>
|
||||||
|
<noUploadOnFailure>true</noUploadOnFailure>
|
||||||
|
<uploadFromSlave>true</uploadFromSlave>
|
||||||
|
<managedArtifacts>true</managedArtifacts>
|
||||||
|
</hudson.plugins.s3.Entry>
|
||||||
|
</entries>
|
||||||
|
<userMetadata>
|
||||||
|
<hudson.plugins.s3.MetadataPair>
|
||||||
|
<key>warbl ${garbl}</key>
|
||||||
|
<value>herp derp weevils</value>
|
||||||
|
</hudson.plugins.s3.MetadataPair>
|
||||||
|
<hudson.plugins.s3.MetadataPair>
|
||||||
|
<key>hurrdurr</key>
|
||||||
|
<value>wharrgarbl blee ${FANCY_VARIABLE}</value>
|
||||||
|
</hudson.plugins.s3.MetadataPair>
|
||||||
|
</userMetadata>
|
||||||
|
</hudson.plugins.s3.S3BucketPublisher>
|
||||||
|
</publishers>
|
||||||
|
</project>
|
16
tests/publishers/fixtures/s3001.yaml
Normal file
16
tests/publishers/fixtures/s3001.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
publishers:
|
||||||
|
- s3:
|
||||||
|
s3-profile: banana
|
||||||
|
entries:
|
||||||
|
- destination-bucket: herp-derp
|
||||||
|
source-files: 'bargle_${BUILD_ID}.tgz'
|
||||||
|
storage-class: STANDARD
|
||||||
|
bucket-region: US_EAST_1
|
||||||
|
upload-on-failure: false
|
||||||
|
upload-from-slave: true
|
||||||
|
managed-artifacts: true
|
||||||
|
metadata-tags:
|
||||||
|
- key: warbl ${garbl}
|
||||||
|
value: herp derp weevils
|
||||||
|
- key: hurrdurr
|
||||||
|
value: wharrgarbl blee ${FANCY_VARIABLE}
|
Loading…
x
Reference in New Issue
Block a user