diff --git a/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml b/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml
index 907220a35b..8f6b2c9f74 100644
--- a/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml
@@ -6,9 +6,6 @@ values:
   disabled: 'false'
   github_org: 'stackforge'
   review_site: 'review.openstack.org'
-  publisher_site: 'TODO.stackforge.org'
-  tarball_project: 'ceilometer'
-  doc_publisher_site: 'TODO.stackforge.org'
   node: 'oneiric'
 
 ---
diff --git a/modules/jenkins_jobs/files/projects/openstack/cinder.yml b/modules/jenkins_jobs/files/projects/openstack/cinder.yml
index 67f0b5faa8..b150da681d 100644
--- a/modules/jenkins_jobs/files/projects/openstack/cinder.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/cinder.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'cinder'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'cinder'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/glance.yml b/modules/jenkins_jobs/files/projects/openstack/glance.yml
index f4f3334231..4dafe260c6 100644
--- a/modules/jenkins_jobs/files/projects/openstack/glance.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/glance.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'glance'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'glance'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/heat.yml b/modules/jenkins_jobs/files/projects/openstack/heat.yml
index e624c00453..7b55d925c4 100644
--- a/modules/jenkins_jobs/files/projects/openstack/heat.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/heat.yml
@@ -6,7 +6,4 @@ values:
   disabled: 'false'
   github_org: 'heat-api'
   review_site: 'review.openstack.org'
-  publisher_site: 'TODO.stackforge.org'
-  tarball_project: 'heat'
-  doc_publisher_site: 'TODO.stackforge.org'
   node: 'oneiric'
diff --git a/modules/jenkins_jobs/files/projects/openstack/horizon.yml b/modules/jenkins_jobs/files/projects/openstack/horizon.yml
index 72c6b871b7..69c597b1f8 100644
--- a/modules/jenkins_jobs/files/projects/openstack/horizon.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/horizon.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'horizon'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'horizon'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/keystone.yml b/modules/jenkins_jobs/files/projects/openstack/keystone.yml
index 872d6e90d3..0aa43f6250 100644
--- a/modules/jenkins_jobs/files/projects/openstack/keystone.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/keystone.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'keystone'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'keystone'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/nova.yml b/modules/jenkins_jobs/files/projects/openstack/nova.yml
index 385205f6ef..099b51a233 100644
--- a/modules/jenkins_jobs/files/projects/openstack/nova.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/nova.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'nova'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'nova'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml b/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml
index dd5998679c..d100c2d108 100644
--- a/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'openstack-common'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'openstack-common'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml
index 04cec0b736..44f63dfa1f 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-cinderclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-cinderclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml
index 63f25ee76a..7bed702122 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-glanceclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-glanceclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml
index beb15de6c3..32311eea76 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-keystoneclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-keystoneclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml
index dd689931a2..b88e25466d 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-novaclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-novaclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml
index 250cebaa8e..8bd1831ecc 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-openstackclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-openstackclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml
index 1166c11253..2024e77c04 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-quantumclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-quantumclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml
index 0c700c413b..e1890d5518 100644
--- a/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml
@@ -1,5 +1,16 @@
 project:
-  template: 'python_library_jobs'
+  template: 'python_jobs'
+
+values:
+  name: 'python-swiftclient'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'pypi_jobs'
 
 values:
   name: 'python-swiftclient'
diff --git a/modules/jenkins_jobs/files/projects/openstack/quantum.yml b/modules/jenkins_jobs/files/projects/openstack/quantum.yml
index 1f6df4452d..6f2ef5ebf6 100644
--- a/modules/jenkins_jobs/files/projects/openstack/quantum.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/quantum.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'quantum'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'quantum'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml b/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml
index c204ba1367..140ddf28ad 100644
--- a/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml
@@ -6,7 +6,4 @@ values:
   disabled: 'true'
   github_org: 'stackforge'
   review_site: 'review.openstack.org'
-  publisher_site: 'TODO.stackforge.org'
-  tarball_project: 'reddwarf'
-  doc_publisher_site: 'TODO.stackforge.org'
   node: 'oneiric'
diff --git a/modules/jenkins_jobs/files/projects/openstack/swift.yml b/modules/jenkins_jobs/files/projects/openstack/swift.yml
index 990a83275d..7f26cad53f 100644
--- a/modules/jenkins_jobs/files/projects/openstack/swift.yml
+++ b/modules/jenkins_jobs/files/projects/openstack/swift.yml
@@ -1,6 +1,17 @@
 project:
   template: 'python_jobs'
 
+values:
+  name: 'swift'
+  disabled: 'false'
+  github_org: 'openstack'
+  review_site: 'review.openstack.org'
+  node: 'precise'
+
+---
+project:
+  template: 'openstack_publish_jobs'
+
 values:
   name: 'swift'
   disabled: 'false'
diff --git a/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml b/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml
new file mode 100644
index 0000000000..1e7840f8bb
--- /dev/null
+++ b/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml
@@ -0,0 +1,72 @@
+---
+# docs
+main:
+  name: '@NAME@-docs'
+  review_site: '@REVIEW_SITE@'
+  github_org: '@GITHUB_ORG@'
+  project: '@NAME@'
+  authenticatedBuild: 'false'
+  disabled: @DISABLED@
+  concurrent: 'true'
+
+triggers:
+  - zuul_post
+
+logrotate:
+  daysToKeep: 28
+  numToKeep: -1
+  artifactDaysToKeep: -1
+  artifactNumToKeep: -1
+
+builders:
+  - gerrit_git_prep
+  - docs
+
+post_build_actions:
+  - ftp:
+      site: '@DOC_PUBLISHER_SITE@'
+      remote_dir: 'developer/@NAME@'
+      source_files: 'doc/build/html/**'
+      remove_prefix: 'doc/build/html'
+      excludes: ''
+
+scm:
+  scm: 'false'
+
+assignednode:
+  node: '@NODE@'
+
+---
+# tarball
+main:
+  name: '@NAME@-tarball'
+  review_site: '@REVIEW_SITE@'
+  github_org: '@GITHUB_ORG@'
+  project: '@NAME@'
+  authenticatedBulid: 'false'
+  disabled: @DISABLED@
+  concurrent: 'true'
+
+logrotate:
+  daysToKeep: 28
+  numToKeep: -1
+  artifactDaysToKeep: -1
+  artifactNumToKeep: -1
+
+triggers:
+  - zuul_post
+
+builders:
+  - gerrit_git_prep
+  - tarball
+
+post_build_actions:
+  - tarball:
+      site: '@PUBLISHER_SITE@'
+      project: '@TARBALL_PROJECT@'
+
+scm:
+  scm: 'false'
+
+assignednode:
+  node: '@NODE@'
diff --git a/modules/jenkins_jobs/files/templates/pypi_jobs.yml b/modules/jenkins_jobs/files/templates/pypi_jobs.yml
new file mode 100644
index 0000000000..cb18181ea9
--- /dev/null
+++ b/modules/jenkins_jobs/files/templates/pypi_jobs.yml
@@ -0,0 +1,108 @@
+---
+# docs
+main:
+  name: '@NAME@-docs'
+  review_site: '@REVIEW_SITE@'
+  github_org: '@GITHUB_ORG@'
+  project: '@NAME@'
+  authenticatedBuild: 'false'
+  disabled: @DISABLED@
+  concurrent: 'true'
+
+triggers:
+  - zuul_post
+
+logrotate:
+  daysToKeep: 28
+  numToKeep: -1
+  artifactDaysToKeep: -1
+  artifactNumToKeep: -1
+
+builders:
+  - gerrit_git_prep
+  - docs
+
+post_build_actions:
+  - ftp:
+      site: '@DOC_PUBLISHER_SITE@'
+      remote_dir: 'developer/@NAME@'
+      source_files: 'doc/build/html/**'
+      remove_prefix: 'doc/build/html'
+      excludes: ''
+
+scm:
+  scm: 'false'
+
+assignednode:
+  node: '@NODE@'
+
+---
+# tarball
+main:
+  name: '@NAME@-tarball'
+  review_site: '@REVIEW_SITE@'
+  github_org: '@GITHUB_ORG@'
+  project: '@NAME@'
+  authenticatedBulid: 'false'
+  disabled: @DISABLED@
+  concurrent: 'true'
+
+logrotate:
+  daysToKeep: 28
+  numToKeep: -1
+  artifactDaysToKeep: -1
+  artifactNumToKeep: -1
+
+triggers:
+  - zuul_post
+
+builders:
+  - gerrit_git_prep
+  - shell: |
+      #!/bin/bash -xe
+      BRANCH=$GERRIT_REFNAME
+      BRANCH_PATH=`echo $BRANCH | tr / -`
+
+      tox -v -evenv python setup.py sdist upload
+      cp dist/* dist/@NAME@-$BRANCH_PATH.tar.gz
+
+post_build_actions:
+  - tarball:
+      site: '@PUBLISHER_SITE@'
+      project: '@TARBALL_PROJECT@'
+
+scm:
+  scm: 'false'
+
+assignednode:
+  node: '@NODE@'
+
+---
+# pypi-upload
+main:
+  name: '@NAME@-pypi'
+  review_site: '@REVIEW_SITE@'
+  github_org: '@GITHUB_ORG@'
+  project: '@NAME@'
+  authenticatedBulid: 'false'
+  disabled: @DISABLED@
+  concurrent: 'true'
+
+triggers:
+  - zuul_post
+
+builders:
+  - gerrit_git_prep
+  - shell: tox -v -evenv python setup.py sdist upload
+
+post_build_actions:
+  - tarball:
+      site: '@PUBLISHER_SITE@'
+      project: '@TARBALL_PROJECT@'
+
+scm:
+  scm: 'false'
+
+assignednode:
+  node: 'pypi'
+
diff --git a/modules/jenkins_jobs/files/templates/python_jobs.yml b/modules/jenkins_jobs/files/templates/python_jobs.yml
index d9ddc17a6d..a43b4b3a7b 100644
--- a/modules/jenkins_jobs/files/templates/python_jobs.yml
+++ b/modules/jenkins_jobs/files/templates/python_jobs.yml
@@ -133,44 +133,6 @@ scm:
 assignednode:
   node: '@NODE@'
 
----
-# docs
-main:
-  name: '@NAME@-docs'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-triggers:
-  - zuul_post
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-builders:
-  - gerrit_git_prep
-  - docs
-
-post_build_actions:
-  - ftp:
-      site: '@DOC_PUBLISHER_SITE@'
-      remote_dir: 'developer/@NAME@'
-      source_files: 'doc/build/html/**'
-      remove_prefix: 'doc/build/html'
-      excludes: ''
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
 ---
 # merge-gate
 main:
@@ -230,37 +192,3 @@ scm:
 assignednode:
   node: '@NODE@'
 
----
-# tarball
-main:
-  name: '@NAME@-tarball'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBulid: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul_post
-
-builders:
-  - gerrit_git_prep
-  - tarball
-
-post_build_actions:
-  - tarball:
-      site: '@PUBLISHER_SITE@'
-      project: '@TARBALL_PROJECT@'
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
diff --git a/modules/jenkins_jobs/files/templates/python_library_jobs.yml b/modules/jenkins_jobs/files/templates/python_library_jobs.yml
deleted file mode 100644
index a873ac55a8..0000000000
--- a/modules/jenkins_jobs/files/templates/python_library_jobs.yml
+++ /dev/null
@@ -1,330 +0,0 @@
----
-# coverage
-main:
-  name: '@NAME@-coverage'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul_post
-
-builders:
-  - gerrit_git_prep
-  - coverage
-
-post_build_actions:
-  - coverage
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# pep8-gate
-main:
-  name: 'gate-@NAME@-pep8'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul
-
-builders:
-  - gerrit_git_prep
-  - pep8
-
-post_build_actions:
-  - pep8
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# python26-gate
-main:
-  name: 'gate-@NAME@-python26'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul
-
-builders:
-  - gerrit_git_prep
-  - python26
-
-post_build_actions:
-  - junit:
-      results: '**/nosetests.xml'
-
-scm:
-  scm: 'false'
-
-# >= precise does not have python2.6
-assignednode:
-  node: 'oneiric'
-
----
-# python27-gate
-main:
-  name: 'gate-@NAME@-python27'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul
-
-builders:
-  - gerrit_git_prep
-  - python27
-
-post_build_actions:
-  - junit:
-      results: '**/nosetests.xml'
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# docs
-main:
-  name: '@NAME@-docs'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-triggers:
-  - zuul_post
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-builders:
-  - gerrit_git_prep
-  - docs
-
-post_build_actions:
-  - ftp:
-      site: '@DOC_PUBLISHER_SITE@'
-      remote_dir: 'developer/@NAME@'
-      source_files: 'doc/build/html/**'
-      remove_prefix: 'doc/build/html'
-      excludes: ''
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# merge-gate
-main:
-  name: 'gate-@NAME@-merge'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul
-
-builders:
-  - gerrit_git_prep
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# ppa
-main:
-  name: '@NAME@-ppa'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: true
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-builders:
-  - ppa
-
-post_build_actions:
-  - ppa
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# tarball
-main:
-  name: '@NAME@-tarball'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBulid: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul_post
-
-builders:
-  - gerrit_git_prep
-  - shell: |
-      #!/bin/bash -xe
-      BRANCH=$GERRIT_REFNAME
-      BRANCH_PATH=`echo $BRANCH | tr / -`
-
-      tox -v -evenv python setup.py sdist upload
-      cp dist/* dist/@NAME@-$BRANCH_PATH.tar.gz
-
-post_build_actions:
-  - tarball:
-      site: '@PUBLISHER_SITE@'
-      project: '@TARBALL_PROJECT@'
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-
----
-# pypi-upload
-main:
-  name: '@NAME@-pypi'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBulid: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-triggers:
-  - zuul_post
-
-builders:
-  - gerrit_git_prep
-  - shell: tox -v -evenv python setup.py sdist upload
-
-post_build_actions:
-  - tarball:
-      site: '@PUBLISHER_SITE@'
-      project: '@TARBALL_PROJECT@'
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: 'pypi'
-
----
-# docs-gate
-main:
-  name: 'gate-@NAME@-docs'
-  review_site: '@REVIEW_SITE@'
-  github_org: '@GITHUB_ORG@'
-  project: '@NAME@'
-  authenticatedBuild: 'false'
-  disabled: @DISABLED@
-  concurrent: 'true'
-
-logrotate:
-  daysToKeep: 28
-  numToKeep: -1
-  artifactDaysToKeep: -1
-  artifactNumToKeep: -1
-
-triggers:
-  - zuul
-
-builders:
-  - gerrit_git_prep
-  - docs
-
-scm:
-  scm: 'false'
-
-assignednode:
-  node: '@NODE@'
-