diff --git a/modules/jenkins_jobs/files/modules/publisher_ftp.py b/modules/jenkins_jobs/files/modules/publisher_ftp.py new file mode 100644 index 0000000000..92d71bfea2 --- /dev/null +++ b/modules/jenkins_jobs/files/modules/publisher_ftp.py @@ -0,0 +1,97 @@ +#! /usr/bin/env python +# Copyright (C) 2012 OpenStack, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Jenkins Job module for publishing via ftp +# publish: +# site: 'docs.openstack.org' +# remote_dir: 'dest/dir' +# source_files: 'base/source/dir/**' +# remove_prefix: 'base/source/dir' +# excludes: '**/*.exludedfiletype' +# +# This will upload everything under $workspace/base/source/dir to +# docs.openstack.org $ftpdir/dest/dir exluding the excluded file type. + +import xml.etree.ElementTree as XML + +class publisher_ftp(object): + def __init__(self, data): + self.data = data + + def gen_xml(self, xml_parent): + """ + Example XML: + + + FTP: + + + + docs.openstack.org + true + + + + openstack-identity-api/target/docbkx/webhelp/api/openstack-identity-service/2.0/** + **/*.xml,**/null* + openstack-identity-api/target/docbkx/webhelp + false + false + false + false + + + false + false + + + false + false + false + + + + + """ + publish = self.data['publisher'] + outer_publishers = XML.SubElement(xml_parent, 'publishers') + outer_ftp = XML.SubElement(outer_publishers, 'jenkins.plugins.publish__over__ftp.BapFtpPublisherPlugin') + XML.SubElement(outer_ftp, 'consolePrefix').text = 'FTP: ' + delegate = XML.SubElement(outer_ftp, 'delegate') + publishers = XML.SubElement(delegate, 'publishers') + ftp = XML.SubElement(publishers, 'jenkins.plugins.publish__over__ftp.BapFtpPublisher') + XML.SubElement(ftp, 'configName').text = publish['site'] + XML.SubElement(ftp, 'verbose').text = 'true' + + transfers = XML.SubElement(ftp, 'transfers') + ftp_transfers = XML.SubElement(transfers, 'jenkins.plugins.publish__over__ftp.BapFtpTransfer') + # TODO: the next four fields are where the magic happens. Fill them in. + XML.SubElement(ftp_transfers, 'remoteDirectory').text = publish['remote_dir'] + XML.SubElement(ftp_transfers, 'sourceFiles').text = publish['source_files'] + XML.SubElement(ftp_transfers, 'excludes').text = publish['excludes'] + XML.SubElement(ftp_transfers, 'removePrefix').text = publish['remove_prefix'] + XML.SubElement(ftp_transfers, 'remoteDirectorySDF').text = 'false' + XML.SubElement(ftp_transfers, 'flatten').text = 'false' + XML.SubElement(ftp_transfers, 'cleanRemote').text = 'false' + XML.SubElement(ftp_transfers, 'asciiMode').text = 'false' + + XML.SubElement(ftp, 'useWorkspaceInPromotion').text = 'false' + XML.SubElement(ftp, 'usePromotionTimestamp').text = 'false' + XML.SubElement(delegate, 'continueOnError').text = 'false' + XML.SubElement(delegate, 'failOnError').text = 'false' + XML.SubElement(delegate, 'alwaysPublishFromMaster').text = 'false' + XML.SubElement(delegate, 'hostConfigurationAccess', + {'class': 'jenkins.plugins.publish_over_ftp.BapFtpPublisherPlugin', + 'reference': '../..'}) diff --git a/modules/jenkins_jobs/files/projects/openstack/cinder.yml b/modules/jenkins_jobs/files/projects/openstack/cinder.yml index 1aac5a64b8..461ae33056 100644 --- a/modules/jenkins_jobs/files/projects/openstack/cinder.yml +++ b/modules/jenkins_jobs/files/projects/openstack/cinder.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/glance.yml b/modules/jenkins_jobs/files/projects/openstack/glance.yml index eed97e9e88..98f6493abe 100644 --- a/modules/jenkins_jobs/files/projects/openstack/glance.yml +++ b/modules/jenkins_jobs/files/projects/openstack/glance.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/horizon.yml b/modules/jenkins_jobs/files/projects/openstack/horizon.yml index e6c2956e79..4a72401a47 100644 --- a/modules/jenkins_jobs/files/projects/openstack/horizon.yml +++ b/modules/jenkins_jobs/files/projects/openstack/horizon.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/keystone.yml b/modules/jenkins_jobs/files/projects/openstack/keystone.yml index a95a752f40..998bd537e6 100644 --- a/modules/jenkins_jobs/files/projects/openstack/keystone.yml +++ b/modules/jenkins_jobs/files/projects/openstack/keystone.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/nova.yml b/modules/jenkins_jobs/files/projects/openstack/nova.yml index 8a00e1dd88..d2f7ac27e7 100644 --- a/modules/jenkins_jobs/files/projects/openstack/nova.yml +++ b/modules/jenkins_jobs/files/projects/openstack/nova.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml index 8f5030e9ce..03e7ad2fcf 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml index 5178ef22db..61e7407523 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml index e05fd4c567..33c248a8c4 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml index bc9368ce3a..5ab75e327d 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml index b81c5e2e7a..2fce146817 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml index c2a58d87e2..19c105439f 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml index ffb6d61554..9690057114 100644 --- a/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml +++ b/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'swift.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/quantum.yml b/modules/jenkins_jobs/files/projects/openstack/quantum.yml index b72d4c3a93..f29717a0e3 100644 --- a/modules/jenkins_jobs/files/projects/openstack/quantum.yml +++ b/modules/jenkins_jobs/files/projects/openstack/quantum.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/swift.yml b/modules/jenkins_jobs/files/projects/openstack/swift.yml index 7edea3e600..e2bb33e4b5 100644 --- a/modules/jenkins_jobs/files/projects/openstack/swift.yml +++ b/modules/jenkins_jobs/files/projects/openstack/swift.yml @@ -7,4 +7,5 @@ values: github_org: 'openstack' review_site: 'review.openstack.org' publisher_site: 'nova.openstack.org' + doc_publisher_site: 'docs.openstack.org' node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/stackforge/ceilometer.yml b/modules/jenkins_jobs/files/projects/stackforge/ceilometer.yml index d58c7926ce..8488f9b63a 100644 --- a/modules/jenkins_jobs/files/projects/stackforge/ceilometer.yml +++ b/modules/jenkins_jobs/files/projects/stackforge/ceilometer.yml @@ -7,4 +7,5 @@ values: github_org: 'stackforge' review_site: 'review.stackforge.org' publisher_site: 'TODO.stackforge.org' + doc_publisher_site: 'TODO.stackforge.org' node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/stackforge/heat.yml b/modules/jenkins_jobs/files/projects/stackforge/heat.yml index 6584bf5d14..0f4c3623d9 100644 --- a/modules/jenkins_jobs/files/projects/stackforge/heat.yml +++ b/modules/jenkins_jobs/files/projects/stackforge/heat.yml @@ -7,4 +7,5 @@ values: github_org: 'heat-api' review_site: 'review.stackforge.org' publisher_site: 'TODO.stackforge.org' + doc_publisher_site: 'TODO.stackforge.org' node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/stackforge/reddwarf.yml b/modules/jenkins_jobs/files/projects/stackforge/reddwarf.yml index d3eee036e8..1b942d82ee 100644 --- a/modules/jenkins_jobs/files/projects/stackforge/reddwarf.yml +++ b/modules/jenkins_jobs/files/projects/stackforge/reddwarf.yml @@ -7,4 +7,5 @@ values: github_org: 'stackforge' review_site: 'review.stackforge.org' publisher_site: 'TODO.stackforge.org' + doc_publisher_site: 'TODO.stackforge.org' node: 'oneiric' diff --git a/modules/jenkins_jobs/files/templates/python_jobs.yml b/modules/jenkins_jobs/files/templates/python_jobs.yml index fcadc8ace0..e91a8e4851 100644 --- a/modules/jenkins_jobs/files/templates/python_jobs.yml +++ b/modules/jenkins_jobs/files/templates/python_jobs.yml @@ -188,7 +188,7 @@ modules: - assignednode - trigger_pollscm - builders - - publisher_docs + - publisher_ftp main: name: '@NAME@-docs' @@ -211,7 +211,11 @@ assignednode: node: '@NODE@' publisher: - site: '@PUBLISHER_SITE@' + site: '@DOC_PUBLISHER_SITE@' + remote_dir: 'dev/docs/@NAME@' + source_files: 'doc/build/html/**' + remove_prefix: 'doc/build/html' + excludes: '' --- # merge-gate