From f36e38f697cc747f3eedfd1f10d3acc666729d91 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 10 Aug 2012 08:22:11 -0700 Subject: [PATCH] Remove jenkins_jobs, add jenkins_job_builder. Change-Id: I774b08719297979c0079c37679c3face3788e111 Reviewed-on: https://review.openstack.org/11151 Reviewed-by: Monty Taylor Approved: James E. Blair Reviewed-by: James E. Blair Tested-by: Jenkins --- modules/jenkins_job_builder/manifests/init.pp | 57 +++ .../templates/jenkins_jobs.ini.erb | 0 modules/jenkins_jobs/files/jenkins_jobs.py | 281 --------------- .../jenkins_jobs/files/modules/__init__.py | 0 .../files/modules/assignednode.py | 36 -- .../jenkins_jobs/files/modules/builders.py | 161 --------- .../jenkins_jobs/files/modules/logrotate.py | 49 --- .../files/modules/project_freestyle.py | 39 --- .../files/modules/project_maven.py | 61 ---- .../jenkins_jobs/files/modules/properties.py | 90 ----- .../jenkins_jobs/files/modules/publishers.py | 329 ------------------ modules/jenkins_jobs/files/modules/scm.py | 74 ---- .../jenkins_jobs/files/modules/triggers.py | 129 ------- .../jenkins_jobs/files/modules/wrappers.py | 53 --- modules/jenkins_jobs/files/modules/zuul.py | 79 ----- .../files/projects/openstack/ceilometer.yml | 61 ---- .../files/projects/openstack/cinder.yml | 23 -- .../projects/openstack/devstack-gate.yml | 252 -------------- .../files/projects/openstack/devstack.yml | 24 -- .../gerrit-verification-status-plugin.yml | 23 -- .../files/projects/openstack/gerrit.yml | 139 -------- .../files/projects/openstack/gerritbot.yml | 164 --------- .../files/projects/openstack/gerritlib.yml | 125 ------- .../files/projects/openstack/glance.yml | 23 -- .../files/projects/openstack/heat.yml | 9 - .../files/projects/openstack/horizon.yml | 54 --- .../openstack/jenkins-job-builder.yml | 23 -- .../files/projects/openstack/keystone.yml | 23 -- .../files/projects/openstack/mraas.yml | 70 ---- .../files/projects/openstack/nova.yml | 49 --- .../openstack/openstack-ci-puppet.yml | 49 --- .../projects/openstack/openstack-common.yml | 23 -- .../files/projects/openstack/pbr.yml | 23 -- .../files/projects/openstack/pypi-mirror.yml | 49 --- .../openstack/python-cinderclient.yml | 23 -- .../openstack/python-glanceclient.yml | 23 -- .../openstack/python-keystoneclient.yml | 23 -- .../projects/openstack/python-novaclient.yml | 23 -- .../openstack/python-openstackclient.yml | 23 -- .../openstack/python-quantumclient.yml | 23 -- .../projects/openstack/python-swiftclient.yml | 23 -- .../files/projects/openstack/quantum.yml | 23 -- .../files/projects/openstack/reddwarf.yml | 9 - .../files/projects/openstack/requirements.yml | 22 -- .../files/projects/openstack/swift.yml | 23 -- .../files/projects/openstack/tempest.yml | 52 --- .../files/projects/openstack/zuul.yml | 73 ---- .../templates/openstack_publish_jobs.yml | 78 ----- .../files/templates/pypi_jobs.yml | 117 ------- .../files/templates/python_bitrot_jobs.yml | 103 ------ .../files/templates/python_jobs.yml | 210 ----------- modules/jenkins_jobs/files/test.sh | 26 -- modules/jenkins_jobs/manifests/init.pp | 48 --- .../jenkins_job_builder/config/ceilometer.yml | 80 +++++ .../jenkins_job_builder/config/cinder.yml | 10 + .../config/devstack-gate.yml | 273 +++++++++++++++ .../jenkins_job_builder/config/devstack.yml | 33 ++ .../gerrit-verification-status-plugin.yml | 35 ++ .../jenkins_job_builder/config/gerrit.yml | 159 +++++++++ .../jenkins_job_builder/config/gerritbot.yml | 90 +++++ .../jenkins_job_builder/config/gerritlib.yml | 45 +++ .../jenkins_job_builder/config/glance.yml | 10 + .../files/jenkins_job_builder/config/heat.yml | 7 + .../jenkins_job_builder/config/horizon.yml | 43 +++ .../config/jenkins-job-builder.yml | 34 ++ .../jenkins_job_builder/config/keystone.yml | 10 + .../jenkins_job_builder/config/macros.yml | 115 ++++++ .../jenkins_job_builder/config/mraas.yml | 82 +++++ .../files/jenkins_job_builder/config/nova.yml | 12 + .../config/openstack-ci-puppet.yml | 63 ++++ .../config/openstack-common.yml | 10 + .../config/openstack-publish-jobs.yml | 87 +++++ .../files/jenkins_job_builder/config/pbr.yml | 10 + .../jenkins_job_builder/config/pypi-jobs.yml | 85 +++++ .../config/pypi-mirror.yml | 64 ++++ .../config/python-bitrot-jobs.yml | 140 ++++++++ .../config/python-cinderclient.yml | 10 + .../config/python-glanceclient.yml | 10 + .../config/python-jobs.yml | 267 ++++++++++++++ .../config/python-keystoneclient.yml | 10 + .../config/python-novaclient.yml | 10 + .../config/python-openstackclient.yml | 10 + .../config/python-quantumclient.yml | 10 + .../config/python-swiftclient.yml | 10 + .../jenkins_job_builder/config/quantum.yml | 10 + .../jenkins_job_builder/config/reddwarf.yml | 7 + .../config/requirements.yml | 34 ++ .../jenkins_job_builder/config/swift.yml | 10 + .../jenkins_job_builder/config/tempest.yml | 67 ++++ .../files/jenkins_job_builder/config/zuul.yml | 79 +++++ .../openstack_project/manifests/jenkins.pp | 16 +- 91 files changed, 2112 insertions(+), 3534 deletions(-) create mode 100644 modules/jenkins_job_builder/manifests/init.pp rename modules/{jenkins_jobs => jenkins_job_builder}/templates/jenkins_jobs.ini.erb (100%) delete mode 100644 modules/jenkins_jobs/files/jenkins_jobs.py delete mode 100644 modules/jenkins_jobs/files/modules/__init__.py delete mode 100644 modules/jenkins_jobs/files/modules/assignednode.py delete mode 100644 modules/jenkins_jobs/files/modules/builders.py delete mode 100644 modules/jenkins_jobs/files/modules/logrotate.py delete mode 100644 modules/jenkins_jobs/files/modules/project_freestyle.py delete mode 100644 modules/jenkins_jobs/files/modules/project_maven.py delete mode 100644 modules/jenkins_jobs/files/modules/properties.py delete mode 100644 modules/jenkins_jobs/files/modules/publishers.py delete mode 100644 modules/jenkins_jobs/files/modules/scm.py delete mode 100644 modules/jenkins_jobs/files/modules/triggers.py delete mode 100644 modules/jenkins_jobs/files/modules/wrappers.py delete mode 100644 modules/jenkins_jobs/files/modules/zuul.py delete mode 100644 modules/jenkins_jobs/files/projects/openstack/ceilometer.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/cinder.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/devstack-gate.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/devstack.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/gerrit-verification-status-plugin.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/gerrit.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/gerritbot.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/gerritlib.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/glance.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/heat.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/horizon.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/jenkins-job-builder.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/keystone.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/mraas.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/nova.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/openstack-ci-puppet.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/openstack-common.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/pbr.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/pypi-mirror.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/quantum.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/reddwarf.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/requirements.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/swift.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/tempest.yml delete mode 100644 modules/jenkins_jobs/files/projects/openstack/zuul.yml delete mode 100644 modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml delete mode 100644 modules/jenkins_jobs/files/templates/pypi_jobs.yml delete mode 100644 modules/jenkins_jobs/files/templates/python_bitrot_jobs.yml delete mode 100644 modules/jenkins_jobs/files/templates/python_jobs.yml delete mode 100755 modules/jenkins_jobs/files/test.sh delete mode 100644 modules/jenkins_jobs/manifests/init.pp create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/ceilometer.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/cinder.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/devstack.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/gerrit-verification-status-plugin.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/gerrit.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/gerritbot.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/gerritlib.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/glance.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/heat.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/horizon.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/jenkins-job-builder.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/keystone.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/macros.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/mraas.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/nova.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/openstack-common.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/pbr.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/pypi-mirror.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-bitrot-jobs.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-cinderclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-glanceclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-keystoneclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-novaclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-openstackclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-quantumclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/python-swiftclient.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/quantum.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/reddwarf.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/requirements.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/swift.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/tempest.yml create mode 100644 modules/openstack_project/files/jenkins_job_builder/config/zuul.yml diff --git a/modules/jenkins_job_builder/manifests/init.pp b/modules/jenkins_job_builder/manifests/init.pp new file mode 100644 index 0000000000..56b9a90f13 --- /dev/null +++ b/modules/jenkins_job_builder/manifests/init.pp @@ -0,0 +1,57 @@ +class jenkins_job_builder ( + $url, + $username, + $password, +) { + + package { 'python-yaml': + ensure => "present", + } + + package { "python-jenkins": + ensure => latest, # okay to use latest for pip + provider => pip, + require => Class[pip] + } + + vcsrepo { "/opt/jenkins_job_builder": + ensure => latest, + provider => git, + revision => "master", + source => "https://github.com/openstack-ci/jenkins_job_builder.git", + } + + exec { "install_jenkins_job_builder": + command => "python setup.py install", + cwd => "/opt/jenkins_job_builder", + path => "/bin:/usr/bin", + refreshonly => true, + subscribe => Vcsrepo["/opt/jenkins_job_builder"], + } + + file { "/etc/jenkins_jobs": + ensure => "directory", + } + + exec { "jenkins_jobs_update": + command => "jenkins-jobs update /etc/jenkins_jobs/config", + path => '/bin:/usr/bin:/usr/local/bin', + refreshonly => true, + require => [ + File['/etc/jenkins_jobs/jenkins_jobs.ini'], + Package['python-jenkins'], + Package['python-yaml'] + ] + } + +# TODO: We should put in notify Exec['jenkins_jobs_update'] +# at some point, but that still has some problems. + file { "/etc/jenkins_jobs/jenkins_jobs.ini": + owner => 'jenkins', + mode => 400, + ensure => 'present', + content => template('jenkins_jobs/jenkins_jobs.ini.erb'), + require => File["/etc/jenkins_jobs"], + } + +} diff --git a/modules/jenkins_jobs/templates/jenkins_jobs.ini.erb b/modules/jenkins_job_builder/templates/jenkins_jobs.ini.erb similarity index 100% rename from modules/jenkins_jobs/templates/jenkins_jobs.ini.erb rename to modules/jenkins_job_builder/templates/jenkins_jobs.ini.erb diff --git a/modules/jenkins_jobs/files/jenkins_jobs.py b/modules/jenkins_jobs/files/jenkins_jobs.py deleted file mode 100644 index 1cdd90551a..0000000000 --- a/modules/jenkins_jobs/files/jenkins_jobs.py +++ /dev/null @@ -1,281 +0,0 @@ -#! /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. - -# Manage jobs in Jenkins server - -import os -import argparse -import hashlib -import yaml -import xml.etree.ElementTree as XML -from xml.dom import minidom -import jenkins -import ConfigParser -from StringIO import StringIO -import re -import pkgutil - -import modules - -class JenkinsJobsException(Exception): pass - -parser = argparse.ArgumentParser() -subparser = parser.add_subparsers(help='update, test or delete job', dest='command') -parser_update = subparser.add_parser('update') -parser_update.add_argument('file', help='YAML file for update') -parser_update = subparser.add_parser('test') -parser_update.add_argument('file', help='YAML file for test') -parser_delete = subparser.add_parser('delete') -parser_delete.add_argument('name', help='name of job') -parser.add_argument('--conf', dest='conf', help='Configuration file') -options = parser.parse_args() - -if options.conf: - conf = options.conf -else: - conf = 'jenkins_jobs.ini' - -if not options.command == 'test': - conffp = open(conf, 'r') - config = ConfigParser.ConfigParser() - config.readfp(conffp) - -class YamlParser(object): - def __init__(self, yfile): - self.registry = ModuleRegistry() - self.data = yaml.load_all(yfile) - self.it = self.data.__iter__() - self.job_name = None - self.template_data = None - self.current = None - self.current_template = None - self.template_it = None - self.reading_template = False - self.eof = False - self.seek_next_xml() - - def process_template(self): - project_data = self.current['project'] - template_file = file('templates/' + project_data['template'] + '.yml', 'r') - template = template_file.read() - template_file.close() - values = self.current['values'].iteritems() - for key, value in values: - key = '@' + key.upper() + '@' - template = template.replace(key, value) - template_steam = StringIO(template) - self.template_data = yaml.load_all(template_steam) - self.template_it = self.template_data.__iter__() - self.reading_template = True - - def get_next_xml(self): - if not self.eof: - if self.reading_template: - data = XmlParser(self.current_template, self.registry) - self.job_name = self.current_template['main']['name'] - else: - data = XmlParser(self.current, self.registry) - self.job_name = self.current['main']['name'] - self.seek_next_xml() - return data - else: - raise JenkinsJobsException('End of file') - - def seek_next_xml(self): - if self.reading_template: - try: - self.current_template = self.template_it.next() - return - except StopIteration: - self.reading_template = False - try: - self.current = self.it.next() - except StopIteration: - self.eof = True - - if self.current.has_key('project'): - self.process_template() - self.current_template = self.template_it.next() - - def get_name(self): - return self.job_name - -class ModuleRegistry(object): - # TODO: make this extensible - - def __init__(self): - self.modules = [] - self.handlers = {} - - for importer, modname, ispkg in pkgutil.iter_modules(modules.__path__): - module = __import__('modules.'+modname, fromlist=['register']) - register = getattr(module, 'register', None) - if register: - register(self) - - def registerModule(self, mod): - self.modules.append(mod) - self.modules.sort(lambda a, b: cmp(a.sequence, b.sequence)) - - def registerHandler(self, category, name, method): - cat_dict = self.handlers.get(category, {}) - if not cat_dict: - self.handlers[category] = cat_dict - cat_dict[name] = method - - def getHandler(self, category, name): - return self.handlers[category][name] - -class XmlParser(object): - def __init__(self, data, registry): - self.data = data - self.registry = registry - self._build() - - def _build(self): - for module in self.registry.modules: - if hasattr(module, 'root_xml'): - element = module.root_xml(self.data) - if element is not None: - self.xml = element - - for module in self.registry.modules: - if hasattr(module, 'handle_data'): - module.handle_data(self.data) - - XML.SubElement(self.xml, 'actions') - description = XML.SubElement(self.xml, 'description') - description.text = "THIS JOB IS MANAGED BY PUPPET AND WILL BE OVERWRITTEN.\n\n\ -DON'T EDIT THIS JOB THROUGH THE WEB\n\n\ -If you would like to make changes to this job, please see:\n\n\ -https://github.com/openstack/openstack-ci-puppet\n\n\ -In modules/jenkins_jobs" - XML.SubElement(self.xml, 'keepDependencies').text = 'false' - if self.data['main'].get('disabled'): - XML.SubElement(self.xml, 'disabled').text = 'true' - else: - XML.SubElement(self.xml, 'disabled').text = 'false' - XML.SubElement(self.xml, 'blockBuildWhenDownstreamBuilding').text = 'false' - XML.SubElement(self.xml, 'blockBuildWhenUpstreamBuilding').text = 'false' - if self.data['main'].get('concurrent'): - XML.SubElement(self.xml, 'concurrentBuild').text = 'true' - else: - XML.SubElement(self.xml, 'concurrentBuild').text = 'false' - - for module in self.registry.modules: - if hasattr(module, 'gen_xml'): - module.gen_xml(self.xml, self.data) - - def md5(self): - return hashlib.md5(self.output()).hexdigest() - - # Pretty printing ideas from http://stackoverflow.com/questions/749796/pretty-printing-xml-in-python - pretty_text_re = re.compile('>\n\s+([^<>\s].*?)\n\s+\g<1>"\n\ -export GERRIT_REFNAME=$BRANCH\n\ -/usr/local/jenkins/slave_scripts/create-ppa-package.sh') diff --git a/modules/jenkins_jobs/files/modules/logrotate.py b/modules/jenkins_jobs/files/modules/logrotate.py deleted file mode 100644 index 9721b7a79d..0000000000 --- a/modules/jenkins_jobs/files/modules/logrotate.py +++ /dev/null @@ -1,49 +0,0 @@ -#! /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 logrotate -# To use add the folowing into your YAML: -# logrotate: -# daysToKeep: 3 -# numToKeep: 20 -# artifactDaysToKeep: -1 -# artifactNumToKeep: -1 - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = LogRotate() - registry.registerModule(mod) - - -class LogRotate(object): - sequence = 10 - - def handle_data(self, data): - self.data = data - - def gen_xml(self, xml_parent, data): - if self.data.has_key('logrotate'): - lr_xml = XML.SubElement(xml_parent, 'logRotator') - logrotate = self.data['logrotate'] - lr_days = XML.SubElement(lr_xml, 'daysToKeep') - lr_days.text = str(logrotate['daysToKeep']) - lr_num = XML.SubElement(lr_xml, 'numToKeep') - lr_num.text = str(logrotate['numToKeep']) - lr_adays = XML.SubElement(lr_xml, 'artifactDaysToKeep') - lr_adays.text = str(logrotate['artifactDaysToKeep']) - lr_anum = XML.SubElement(lr_xml, 'artifactNumToKeep') - lr_anum.text = str(logrotate['artifactNumToKeep']) diff --git a/modules/jenkins_jobs/files/modules/project_freestyle.py b/modules/jenkins_jobs/files/modules/project_freestyle.py deleted file mode 100644 index 72ce412145..0000000000 --- a/modules/jenkins_jobs/files/modules/project_freestyle.py +++ /dev/null @@ -1,39 +0,0 @@ -#! /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 maven projects -# To use you add the following into your YAML: -# maven: -# root_module: -# group_id: com.google.gerrit -# artifact_id: gerrit-parent -# goals: 'test' - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = Freestyle() - registry.registerModule(mod) - - -class Freestyle(object): - sequence = 0 - - def root_xml(self, data): - if 'maven' in data: - return None - xml_parent = XML.Element('project') - return xml_parent diff --git a/modules/jenkins_jobs/files/modules/project_maven.py b/modules/jenkins_jobs/files/modules/project_maven.py deleted file mode 100644 index 0131c7d013..0000000000 --- a/modules/jenkins_jobs/files/modules/project_maven.py +++ /dev/null @@ -1,61 +0,0 @@ -#! /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 maven projects -# To use you add the following into your YAML: -# maven: -# root_module: -# group_id: com.google.gerrit -# artifact_id: gerrit-parent -# goals: 'test' - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = Maven() - registry.registerModule(mod) - - -class Maven(object): - sequence = 0 - - def root_xml(self, data): - if 'maven' not in data: - return None - xml_parent = XML.Element('maven2-moduleset') - root_module = XML.SubElement(xml_parent, 'root_module') - XML.SubElement(root_module, 'groupId').text = data['maven']['root_module']['group_id'] - XML.SubElement(root_module, 'artifactId').text = data['maven']['root_module']['artifact_id'] - XML.SubElement(xml_parent, 'goals').text = data['maven']['goals'] - - XML.SubElement(xml_parent, 'aggregatorStyleBuild').text = 'true' - XML.SubElement(xml_parent, 'incrementalBuild').text = 'false' - XML.SubElement(xml_parent, 'perModuleEmail').text = 'true' - XML.SubElement(xml_parent, 'ignoreUpstremChanges').text = 'true' - XML.SubElement(xml_parent, 'archivingDisabled').text = 'false' - XML.SubElement(xml_parent, 'resolveDependencies').text = 'false' - XML.SubElement(xml_parent, 'processPlugins').text = 'false' - XML.SubElement(xml_parent, 'mavenValidationLevel').text = '-1' - XML.SubElement(xml_parent, 'runHeadless').text = 'false' - XML.SubElement(xml_parent, 'settingConfigId') - XML.SubElement(xml_parent, 'globalSettingConfigId') - - run_post_steps = XML.SubElement(xml_parent, 'runPostStepsIfResult') - XML.SubElement(run_post_steps, 'name').text = 'FAILURE' - XML.SubElement(run_post_steps, 'ordinal').text = '2' - XML.SubElement(run_post_steps, 'color').text = 'red' - - return xml_parent diff --git a/modules/jenkins_jobs/files/modules/properties.py b/modules/jenkins_jobs/files/modules/properties.py deleted file mode 100644 index 964e17fbb0..0000000000 --- a/modules/jenkins_jobs/files/modules/properties.py +++ /dev/null @@ -1,90 +0,0 @@ -#! /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 job properties -# No additional YAML needed - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = Properties() - registry.registerModule(mod) - - -class Properties(object): - sequence = 20 - - def handle_data(self, data): - self.data = data - - def gen_xml(self, xml_parent, data): - main = self.data['main'] - properties = XML.SubElement(xml_parent, 'properties') - if main.get('project'): - github = XML.SubElement(properties, 'com.coravy.hudson.plugins.github.GithubProjectProperty') - github_url = XML.SubElement(github, 'projectUrl') - github_url.text = "https://github.com/{org}/{project}".format( - org=main['github_org'], project=main['project']) - throttle = XML.SubElement(properties, 'hudson.plugins.throttleconcurrents.ThrottleJobProperty') - XML.SubElement(throttle, 'maxConcurrentPerNode').text = '0' - XML.SubElement(throttle, 'maxConcurrentTotal').text = '0' - #XML.SubElement(throttle, 'categories') - XML.SubElement(throttle, 'throttleEnabled').text = 'false' - XML.SubElement(throttle, 'throttleOption').text = 'project' - XML.SubElement(throttle, 'configVersion').text = '1' - if main.has_key('authenticatedBuild') and main['authenticatedBuild'] == 'true': - security = XML.SubElement(properties, 'hudson.security.AuthorizationMatrixProperty') - XML.SubElement(security, 'permission').text = 'hudson.model.Item.Build:authenticated' - self.do_parameters(properties) - self.do_notifications(properties) - - parameter_types = { - 'string': 'hudson.model.StringParameterDefinition', - 'bool': 'hudson.model.BooleanParameterDefinition', - 'file': 'hudson.model.FileParameterDefinition', - 'text': 'hudson.model.TextParameterDefinition', - 'label': 'org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterDefinition', - # Others require more work - } - - def do_parameters(self, xml_parent): - params = self.data.get('parameters', None) - if not params: - return - pdefp = XML.SubElement(xml_parent, 'hudson.model.ParametersDefinitionProperty') - pdefs = XML.SubElement(pdefp, 'parameterDefinitions') - for param in params: - ptype = self.parameter_types.get(param['type']) - pdef = XML.SubElement(pdefs, ptype) - XML.SubElement(pdef, 'name').text = param['name'] - XML.SubElement(pdef, 'description').text = param['description'] - if param['type'] != 'file': - default = param.get('default', None) - if default: - XML.SubElement(pdef, 'defaultValue').text = default - else: - XML.SubElement(pdef, 'defaultValue') - - def do_notifications(self, xml_parent): - endpoints = self.data.get('notification_endpoints', None) - if not endpoints: - return - notify_element = XML.SubElement(xml_parent, 'com.tikal.hudson.plugins.notification.HudsonNotificationProperty') - endpoints_element = XML.SubElement(notify_element, 'endpoints') - for ep in endpoints: - endpoint_element = XML.SubElement(endpoints_element, 'com.tikal.hudson.plugins.notification.Endpoint') - XML.SubElement(endpoint_element, 'protocol').text = ep['protocol'] - XML.SubElement(endpoint_element, 'url').text = ep['URL'] diff --git a/modules/jenkins_jobs/files/modules/publishers.py b/modules/jenkins_jobs/files/modules/publishers.py deleted file mode 100644 index a2022d75b6..0000000000 --- a/modules/jenkins_jobs/files/modules/publishers.py +++ /dev/null @@ -1,329 +0,0 @@ -#! /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 coverage publishers -# No additional YAML needed - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = Publishers(registry) - registry.registerModule(mod) - - -class Publishers(object): - sequence = 70 - - def __init__(self, registry): - self.registry = registry - for f in dir(self): - if not f.startswith('_publisher_'): - continue - self.registry.registerHandler('publisher', f[len('_publisher_'):], - getattr(self, f)) - - def handle_data(self, data): - self.data = data - - def gen_xml(self, xml_parent, data): - publishers = XML.SubElement(xml_parent, 'publishers') - actions = self.data.get('post_build_actions', []) - for action in actions: - if isinstance(action, dict): - for key, value in action.items(): - func = self.registry.getHandler('publisher', key) - func(publishers, value) - else: - func = self.registry.getHandler('publisher', action) - func(publishers) - - def _publisher_archive(self, xml_parent, data): - archiver = XML.SubElement(xml_parent, 'hudson.tasks.ArtifactArchiver') - artifacts = XML.SubElement(archiver, 'artifacts') - artifacts.text = data['artifacts'] - if 'excludes' in data: - excludes = XML.SubElement(archiver, 'excludes') - excludes.text = data['excludes'] - latest = XML.SubElement(archiver, 'latestOnly') - latest_only = data.get('latest_only', False) - if latest_only: - latest.text = 'true' - else: - latest.text = 'false' - - def _publisher_trigger_parameterized_builds(self, xml_parent, data): - tbuilder = XML.SubElement(xml_parent, 'hudson.plugins.parameterizedtrigger.BuildTrigger') - configs = XML.SubElement(tbuilder, 'configs') - for project_def in data: - tconfig = XML.SubElement(configs, 'hudson.plugins.parameterizedtrigger.BuildTriggerConfig') - tconfigs = XML.SubElement(tconfig, 'configs') - if project_def.has_key('predefined_parameters'): - params = XML.SubElement(tconfigs, - 'hudson.plugins.parameterizedtrigger.PredefinedBuildParameters') - properties = XML.SubElement(params, 'properties') - properties.text = project_def['predefined_parameters'] - else: - tconfigs.set('class', 'java.util.Collections$EmptyList') - projects = XML.SubElement(tconfig, 'projects') - projects.text = project_def['project'] - condition = XML.SubElement(tconfig, 'condition') - condition.text = project_def.get('condition', 'ALWAYS') - trigger_with_no_params = XML.SubElement(tconfig, 'triggerWithNoParameters') - trigger_with_no_params.text = 'false' - - def _publisher_coverage(self, xml_parent): - cobertura = XML.SubElement(xml_parent, 'hudson.plugins.cobertura.CoberturaPublisher') - XML.SubElement(cobertura, 'coberturaReportFile').text = '**/coverage.xml' - XML.SubElement(cobertura, 'onlyStable').text = 'false' - healthy = XML.SubElement(cobertura, 'healthyTarget') - targets = XML.SubElement(healthy, 'targets', {'class':'enum-map','enum-type':'hudson.plugins.cobertura.targets.CoverageMetric'}) - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'CONDITIONAL' - XML.SubElement(entry, 'int').text = '70' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'LINE' - XML.SubElement(entry, 'int').text = '80' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'METHOD' - XML.SubElement(entry, 'int').text = '80' - unhealthy = XML.SubElement(cobertura, 'unhealthyTarget') - targets = XML.SubElement(unhealthy, 'targets', {'class':'enum-map','enum-type':'hudson.plugins.cobertura.targets.CoverageMetric'}) - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'CONDITIONAL' - XML.SubElement(entry, 'int').text = '0' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'LINE' - XML.SubElement(entry, 'int').text = '0' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'METHOD' - XML.SubElement(entry, 'int').text = '0' - failing = XML.SubElement(cobertura, 'failingTarget') - targets = XML.SubElement(failing, 'targets', {'class':'enum-map','enum-type':'hudson.plugins.cobertura.targets.CoverageMetric'}) - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'CONDITIONAL' - XML.SubElement(entry, 'int').text = '0' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'LINE' - XML.SubElement(entry, 'int').text = '0' - entry = XML.SubElement(targets, 'entry') - XML.SubElement(entry, 'hudson.plugins.cobertura.targets.CoverageMetric').text = 'METHOD' - XML.SubElement(entry, 'int').text = '0' - XML.SubElement(cobertura, 'sourceEncoding').text = 'ASCII' - - # 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. - - def _publisher_ftp(self, xml_parent, data): - """ - 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 - - - - - """ - outer_ftp = XML.SubElement(xml_parent, - '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 = data['site'] - XML.SubElement(ftp, 'verbose').text = 'true' - - transfers = XML.SubElement(ftp, 'transfers') - ftp_transfers = XML.SubElement(transfers, 'jenkins.plugins.publish__over__ftp.BapFtpTransfer') - XML.SubElement(ftp_transfers, 'remoteDirectory').text = data['remote_dir'] - XML.SubElement(ftp_transfers, 'sourceFiles').text = data['source_files'] - XML.SubElement(ftp_transfers, 'excludes').text = data['excludes'] - XML.SubElement(ftp_transfers, 'removePrefix').text = data['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': '../..'}) - - # Jenkins Job module for coverage publishers - # To use you add the following into your YAML: - # publisher: - # results: 'nosetests.xml' - - def _publisher_junit(self, xml_parent, data): - junitresult = XML.SubElement(xml_parent, - 'hudson.tasks.junit.JUnitResultArchiver') - XML.SubElement(junitresult, 'testResults').text = data['results'] - XML.SubElement(junitresult, 'keepLongStdio').text = "true" - XML.SubElement(junitresult, 'testDataPublishers') - - # Jenkins Job module for pep8 publishers - # No additional YAML needed - - def _pep8_add_entry(self, xml_parent, name): - entry = XML.SubElement(xml_parent, 'entry') - XML.SubElement(entry, 'string').text = name - tconfig = XML.SubElement(entry, 'hudson.plugins.violations.TypeConfig') - XML.SubElement(tconfig, 'type').text = name - XML.SubElement(tconfig, 'min').text = '10' - XML.SubElement(tconfig, 'max').text = '999' - XML.SubElement(tconfig, 'unstable').text = '999' - XML.SubElement(tconfig, 'usePattern').text = 'false' - XML.SubElement(tconfig, 'pattern') - - def _publisher_pep8(self, xml_parent): - violations = XML.SubElement(xml_parent, 'hudson.plugins.violations.ViolationsPublisher') - config = XML.SubElement(violations, 'config') - suppressions = XML.SubElement(config, 'suppressions', {'class':'tree-set'}) - XML.SubElement(suppressions, 'no-comparator') - configs = XML.SubElement(config, 'typeConfigs') - XML.SubElement(configs, 'no-comparator') - - self._pep8_add_entry(configs, 'checkstyle') - self._pep8_add_entry(configs, 'codenarc') - self._pep8_add_entry(configs, 'cpd') - self._pep8_add_entry(configs, 'cpplint') - self._pep8_add_entry(configs, 'csslint') - self._pep8_add_entry(configs, 'findbugs') - self._pep8_add_entry(configs, 'fxcop') - self._pep8_add_entry(configs, 'gendarme') - self._pep8_add_entry(configs, 'jcreport') - self._pep8_add_entry(configs, 'jslint') - - entry = XML.SubElement(configs, 'entry') - XML.SubElement(entry, 'string').text = 'pep8' - tconfig = XML.SubElement(entry, 'hudson.plugins.violations.TypeConfig') - XML.SubElement(tconfig, 'type').text = 'pep8' - XML.SubElement(tconfig, 'min').text = '0' - XML.SubElement(tconfig, 'max').text = '1' - XML.SubElement(tconfig, 'unstable').text = '1' - XML.SubElement(tconfig, 'usePattern').text = 'false' - XML.SubElement(tconfig, 'pattern').text = '**/pep8.txt' - - self._pep8_add_entry(configs, 'pmd') - self._pep8_add_entry(configs, 'pylint') - self._pep8_add_entry(configs, 'simian') - self._pep8_add_entry(configs, 'stylecop') - - XML.SubElement(config, 'limit').text = '100' - XML.SubElement(config, 'sourcePathPattern') - XML.SubElement(config, 'fauxProjectPath') - XML.SubElement(config, 'encoding').text = 'default' - - # Jenkins Job module for PPA publishers - # No additional YAML needed - - def _publisher_ppa(self, xml_parent): - archiver = XML.SubElement(xml_parent, 'hudson.tasks.ArtifactArchiver') - XML.SubElement(archiver, 'artifacts').text = 'build/*.dsc,build/*.tar.gz,build/*.changes' - XML.SubElement(archiver, 'latestOnly').text = 'false' - - # Jenkins Job module for tarball publishers - # To use you add the following into your YAML: - # publish: - # site: 'glance.openstack.org' - # dir: 'glance' - - def _publisher_tarball(self, xml_parent, data): - site = data['site'] - archiver = XML.SubElement(xml_parent, 'hudson.tasks.ArtifactArchiver') - XML.SubElement(archiver, 'artifacts').text = 'dist/*.tar.gz' - XML.SubElement(archiver, 'latestOnly').text = 'false' - scp = XML.SubElement(xml_parent, 'be.certipost.hudson.plugin.SCPRepositoryPublisher') - XML.SubElement(scp, 'siteName').text = site - entries = XML.SubElement(scp, 'entries') - entry = XML.SubElement(entries, 'be.certipost.hudson.plugin.Entry') - XML.SubElement(entry, 'filePath').text = 'tarballs/{proj}/'.format(proj=data['project']) - XML.SubElement(entry, 'sourceFile').text = 'dist/*.tar.gz' - XML.SubElement(entry, 'keepHierarchy').text = 'false' - - # Jenkins Job module for war publishers - # To use you add the following into your YAML: - # publish: - # site: 'nova.openstack.org' - # warfile: 'gerrit-war/target/gerrit*.war' - # target_path: 'tarballs/ci/' - - def _publisher_war(self, xml_parent, data): - site = data['site'] - archiver = XML.SubElement(xml_parent, 'hudson.tasks.ArtifactArchiver') - XML.SubElement(archiver, 'artifacts').text = data['warfile'] - XML.SubElement(archiver, 'latestOnly').text = 'false' - scp = XML.SubElement(xml_parent, 'be.certipost.hudson.plugin.SCPRepositoryPublisher') - XML.SubElement(scp, 'siteName').text = site - entries = XML.SubElement(scp, 'entries') - entry = XML.SubElement(entries, 'be.certipost.hudson.plugin.Entry') - XML.SubElement(entry, 'filePath').text = data['target_path'] - XML.SubElement(entry, 'sourceFile').text = data['warfile'] - XML.SubElement(entry, 'keepHierarchy').text = 'false' - - # Jenkins Job module for generic scp publishing - # To use you add the following into your YAML: - # publish: - # site: 'openstack-ci.openstack.org' - # source: 'doc/build/html/**/*' - # target_path: 'ci/zuul' - # keep_heirarchy: 'true' - - def _publisher_scp(self, xml_parent, data): - site = data['site'] - scp = XML.SubElement(xml_parent, 'be.certipost.hudson.plugin.SCPRepositoryPublisher') - XML.SubElement(scp, 'siteName').text = site - entries = XML.SubElement(scp, 'entries') - entry = XML.SubElement(entries, 'be.certipost.hudson.plugin.Entry') - XML.SubElement(entry, 'filePath').text = data['target_path'] - XML.SubElement(entry, 'sourceFile').text = data['source'] - XML.SubElement(entry, 'keepHierarchy').text = data['keep_heirarchy'] diff --git a/modules/jenkins_jobs/files/modules/scm.py b/modules/jenkins_jobs/files/modules/scm.py deleted file mode 100644 index 1b8ffbabc3..0000000000 --- a/modules/jenkins_jobs/files/modules/scm.py +++ /dev/null @@ -1,74 +0,0 @@ -#! /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 scm -# To use add the folowing into your YAML: -# scm: -# scm: 'true' -# or -# scm: 'false' - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = SCM() - registry.registerModule(mod) - - -class SCM(object): - sequence = 30 - - def handle_data(self, data): - self.data = data - - def gen_xml(self, xml_parent, data): - main = self.data['main'] - scm_enabled = self.data['scm']['scm'] - if scm_enabled == 'true': - scm = XML.SubElement(xml_parent, 'scm', {'class':'hudson.plugins.git.GitSCM'}) - XML.SubElement(scm, 'configVersion').text = '2' - user = XML.SubElement(scm, 'userRemoteConfigs') - huser = XML.SubElement(user, 'hudson.plugins.git.UserRemoteConfig') - XML.SubElement(huser, 'name').text = 'origin' - XML.SubElement(huser, 'refspec').text = '+refs/heads/*:refs/remotes/origin/*' - XML.SubElement(huser, 'url').text = 'git://github.com/{org}/{project}.git'.format(org=main['github_org'], project=main['project']) - xml_branches = XML.SubElement(scm, 'branches') - branches = self.data['scm'].get('branches', ['**']) - for branch in branches: - bspec = XML.SubElement(xml_branches, 'hudson.plugins.git.BranchSpec') - XML.SubElement(bspec, 'name').text = branch - XML.SubElement(scm, 'disableSubmodules').text = 'false' - XML.SubElement(scm, 'recursiveSubmodules').text = 'false' - XML.SubElement(scm, 'doGenerateSubmoduleConfigurations').text = 'false' - XML.SubElement(scm, 'authorOrCommitter').text = 'false' - XML.SubElement(scm, 'clean').text = 'false' - XML.SubElement(scm, 'wipeOutWorkspace').text = 'true' - XML.SubElement(scm, 'pruneBranches').text = 'false' - XML.SubElement(scm, 'remotePoll').text = 'false' - XML.SubElement(scm, 'buildChooser', {'class':'hudson.plugins.git.util.DefaultBuildChooser'}) - XML.SubElement(scm, 'gitTool').text = 'Default' - XML.SubElement(scm, 'submoduleCfg', {'class':'list'}) - XML.SubElement(scm, 'relativeTargetDir') - XML.SubElement(scm, 'reference') - XML.SubElement(scm, 'excludedRegions') - XML.SubElement(scm, 'excludedUsers') - XML.SubElement(scm, 'gitConfigName') - XML.SubElement(scm, 'gitConfigEmail') - XML.SubElement(scm, 'skipTag').text = 'false' - XML.SubElement(scm, 'scmName') - else: - XML.SubElement(xml_parent, 'scm', {'class':'hudson.scm.NullSCM'}) - diff --git a/modules/jenkins_jobs/files/modules/triggers.py b/modules/jenkins_jobs/files/modules/triggers.py deleted file mode 100644 index 0e77dbc086..0000000000 --- a/modules/jenkins_jobs/files/modules/triggers.py +++ /dev/null @@ -1,129 +0,0 @@ -#! /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 gerrit triggers -# To use add the following into your YAML: -# trigger: -# triggerOnPatchsetUploadedEvent: 'false' -# triggerOnChangeMergedEvent: 'false' -# triggerOnCommentAddedEvent: 'true' -# triggerOnRefUpdatedEvent: 'false' -# triggerApprovalCategory: 'APRV' -# triggerApprovalValue: 1 -# overrideVotes: 'true' -# gerritBuildSuccessfulVerifiedValue: 1 -# gerritBuildFailedVerifiedValue: -1 -# failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.' -# projects: -# - projectCompareType: 'PLAIN' -# projectPattern: 'openstack/nova' -# branchCompareType: 'ANT' -# branchPattern: '**' -# - projectCompareType: 'PLAIN' -# projectPattern: 'openstack/glance' -# branchCompareType: 'ANT' -# branchPattern: '**' -# ... -# -# triggerApprovalCategory and triggerApprovalValue only required if triggerOnCommentAddedEvent: 'true' - -import xml.etree.ElementTree as XML - - -def register(registry): - mod = Triggers(registry) - registry.registerModule(mod) - - -class Triggers(object): - sequence = 50 - - def __init__(self, registry): - self.registry = registry - for f in dir(self): - if not f.startswith('_trigger_'): - continue - self.registry.registerHandler('trigger', f[len('_trigger_'):], - getattr(self, f)) - - def handle_data(self, data): - self.data = data - - def gen_xml(self, xml_parent, data): - actions = self.data.get('triggers', []) - if not actions: - return - triggers = XML.SubElement(xml_parent, 'triggers', {'class':'vector'}) - for action in actions: - if isinstance(action, dict): - for key, value in action.items(): - func = self.registry.getHandler('trigger', key) - func(triggers, value) - else: - func = self.registry.getHandler('trigger', action) - func(triggers) - - def _trigger_gerrit(self, xml_parent, data): - projects = data['projects'] - gtrig = XML.SubElement(xml_parent, 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger') - XML.SubElement(gtrig, 'spec') - gprojects = XML.SubElement(gtrig, 'gerritProjects') - for project in projects: - gproj = XML.SubElement(gprojects, 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject') - XML.SubElement(gproj, 'compareType').text = project['projectCompareType'] - XML.SubElement(gproj, 'pattern').text = project['projectPattern'] - branches = XML.SubElement(gproj, 'branches') - gbranch = XML.SubElement(branches, 'com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch') - XML.SubElement(gbranch, 'compareType').text = project['branchCompareType'] - XML.SubElement(gbranch, 'pattern').text = project['branchPattern'] - XML.SubElement(gtrig, 'silentMode').text = 'false' - XML.SubElement(gtrig, 'escapeQuotes').text = 'true' - XML.SubElement(gtrig, 'triggerOnPatchsetUploadedEvent').text = data['triggerOnPatchsetUploadedEvent'] - XML.SubElement(gtrig, 'triggerOnChangeMergedEvent').text = data['triggerOnChangeMergedEvent'] - XML.SubElement(gtrig, 'triggerOnCommentAddedEvent').text = data['triggerOnCommentAddedEvent'] - XML.SubElement(gtrig, 'triggerOnRefUpdatedEvent').text = data['triggerOnRefUpdatedEvent'] - if data.has_key('overrideVotes') and data['overrideVotes'] == 'true': - XML.SubElement(gtrig, 'gerritBuildSuccessfulVerifiedValue').text = str(data['gerritBuildSuccessfulVerifiedValue']) - XML.SubElement(gtrig, 'gerritBuildFailedVerifiedValue').text = str(data['gerritBuildFailedVerifiedValue']) - if data['triggerOnCommentAddedEvent'] == 'true': - XML.SubElement(gtrig, 'commentAddedTriggerApprovalCategory').text = data['triggerApprovalCategory'] - XML.SubElement(gtrig, 'commentAddedTriggerApprovalValue').text = str(data['triggerApprovalValue']) - XML.SubElement(gtrig, 'buildStartMessage') - XML.SubElement(gtrig, 'buildFailureMessage').text = data['failureMessage'] - XML.SubElement(gtrig, 'buildSuccessfulMessage') - XML.SubElement(gtrig, 'buildUnstableMessage') - XML.SubElement(gtrig, 'customUrl') - - # Jenkins Job module for scm polling triggers - # To use add the following into your YAML: - # trigger: - # pollscm: '@midnight' - # or - # pollscm: '*/15 * * * *' - - def _trigger_pollscm(self, xml_parent, data): - scmtrig = XML.SubElement(xml_parent, 'hudson.triggers.SCMTrigger') - XML.SubElement(scmtrig, 'spec').text = data - - # Jenkins Job module for timed triggers - # To use add the following into your YAML: - # trigger: - # timed: '@midnight' - # or - # timed: '*/15 * * * *' - - def _trigger_timed(self, xml_parent, data): - scmtrig = XML.SubElement(xml_parent, 'hudson.triggers.TimerTrigger') - XML.SubElement(scmtrig, 'spec').text = data diff --git a/modules/jenkins_jobs/files/modules/wrappers.py b/modules/jenkins_jobs/files/modules/wrappers.py deleted file mode 100644 index bab0091074..0000000000 --- a/modules/jenkins_jobs/files/modules/wrappers.py +++ /dev/null @@ -1,53 +0,0 @@ -#! /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 wrappers - -import xml.etree.ElementTree as XML - -def register(registry): - mod = Wrappers() - registry.registerModule(mod) - - -class Wrappers(object): - sequence = 80 - - def gen_xml(self, xml_parent, data): - wrappers = XML.SubElement(xml_parent, 'buildWrappers') - - if 'timeout' in data['main']: - self._timeout(wrappers, data) - if 'ansicolor' in data['main']: - self._ansicolor(wrappers, data) - if 'timestamps' in data['main']: - self._timestamps(wrappers, data) - - def _timeout(self, xml_parent, data): - twrapper = XML.SubElement(xml_parent, 'hudson.plugins.build__timeout.BuildTimeoutWrapper') - tminutes = XML.SubElement(twrapper, 'timeoutMinutes') - tminutes.text = str(data['main']['timeout']) - failbuild = XML.SubElement(twrapper, 'failBuild') - fail = data['main'].get('timeout_fail', False) - if fail: - failbuild.text = 'true' - else: - failbuild.text = 'false' - - def _timestamps(self, xml_parent, data): - XML.SubElement(xml_parent, 'hudson.plugins.timestamper.TimestamperBuildWrapper') - - def _ansicolor(self, xml_parent, data): - XML.SubElement(xml_parent, 'hudson.plugins.ansicolor.AnsiColorBuildWrapper') diff --git a/modules/jenkins_jobs/files/modules/zuul.py b/modules/jenkins_jobs/files/modules/zuul.py deleted file mode 100644 index 54b59c3732..0000000000 --- a/modules/jenkins_jobs/files/modules/zuul.py +++ /dev/null @@ -1,79 +0,0 @@ -#! /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 Zuul - -ZUUL_PARAMETERS = [ - {'description': 'Zuul provided key to link builds with Gerrit events', - 'name': 'UUID', - 'type': 'string'}, - {'description': 'Zuul provided project name', - 'name': 'GERRIT_PROJECT', - 'type': 'string'}, - {'description': 'Zuul provided branch name', - 'name': 'GERRIT_BRANCH', - 'type': 'string'}, - {'description': 'Zuul provided list of dependent changes to merge', - 'name': 'GERRIT_CHANGES', - 'type': 'string'} - ] - -ZUUL_POST_PARAMETERS = [ - {'description': 'Zuul provided key to link builds with Gerrit events', - 'name': 'UUID', - 'type': 'string'}, - {'description': 'Zuul provided project name', - 'name': 'GERRIT_PROJECT', - 'type': 'string'}, - {'description': 'Zuul provided ref name', - 'name': 'GERRIT_REFNAME', - 'type': 'string'}, - {'description': 'Zuul provided old reference for ref-updated', - 'name': 'GERRIT_OLDREV', - 'type': 'string'}, - {'description': 'Zuul provided new reference for ref-updated', - 'name': 'GERRIT_NEWREV', - 'type': 'string'} - ] - -ZUUL_NOTIFICATIONS = [ - {'URL': 'http://127.0.0.1:8001/jenkins_endpoint', - 'protocol': 'HTTP'} - ] - - -def register(registry): - mod = Zuul() - registry.registerModule(mod) - - -class Zuul(object): - sequence = 0 - - def handle_data(self, data): - if ('zuul' not in data.get('triggers', []) and - 'zuul_post' not in data.get('triggers', [])): - return - if 'parameters' not in data: - data['parameters'] = [] - if 'notification_endpoints' not in data: - data['notification_endpoints'] = [] - data['notification_endpoints'].extend(ZUUL_NOTIFICATIONS) - if 'zuul' in data.get('triggers', []): - data['parameters'].extend(ZUUL_PARAMETERS) - data['triggers'].remove('zuul') - if 'zuul_post' in data.get('triggers', []): - data['parameters'].extend(ZUUL_POST_PARAMETERS) - data['triggers'].remove('zuul_post') diff --git a/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml b/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml deleted file mode 100644 index 62500a3e8b..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/ceilometer.yml +++ /dev/null @@ -1,61 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'ceilometer' - disabled: 'false' - github_org: 'stackforge' - review_site: 'review.openstack.org' - node: 'oneiric' - ---- -# python26-essex-gate -main: - name: 'gate-ceilometer-python26-essex' - review_site: 'review.openstack.org' - github_org: 'stackforge' - project: 'ceilometer' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - python26_essex - -scm: - scm: 'false' - -assignednode: - node: 'oneiric' - ---- -# python27-essex-gate -main: - name: 'gate-ceilometer-python27-essex' - review_site: 'review.openstack.org' - github_org: 'stackforge' - project: 'ceilometer' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - python27_essex - -scm: - scm: 'false' - -assignednode: - node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/openstack/cinder.yml b/modules/jenkins_jobs/files/projects/openstack/cinder.yml deleted file mode 100644 index b150da681d..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/cinder.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'cinder' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/devstack-gate.yml b/modules/jenkins_jobs/files/projects/openstack/devstack-gate.yml deleted file mode 100644 index 39ed0a69a6..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/devstack-gate.yml +++ /dev/null @@ -1,252 +0,0 @@ ---- -# merge-gate -main: - name: 'gate-devstack-gate-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'devstack-gate' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -main: - name: 'gate-integration-tests-devstack-vm' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - concurrent: true - timeout: 40 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -parameters: - - name: NODE_LABEL - description: Label of node to use for this build - type: label - default: devstack-precise - -builders: - - trigger_builds: - - project: devstack-update-inprogress - predefined_parameters: - DEVSTACK_NODE_NAME=${NODE_NAME} - - shell: | - #!/bin/bash -xe - # - # This job also gates devstack-gate, but in case a previous run fails, - # we need to always make sure that we're starting with the latest copy - # from master, before we start applying changes to it. If a previous run - # leaves a bad copy of the gate script, we may get stuck. - # - if [[ ! -e devstack-gate ]]; then - git clone https://review.openstack.org/p/openstack-ci/devstack-gate - else - cd devstack-gate - git remote update - git reset --hard - git clean -x -f - git checkout master - git reset --hard remotes/origin/master - git clean -x -f - cd .. - fi - - shell: | - #!/bin/bash -xe - export PYTHONUNBUFFERED=true - cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh - ./safe-devstack-vm-gate-wrap.sh - -post_build_actions: - - archive: - artifacts: logs/* - - trigger_parameterized_builds: - - project: devstack-update-complete - when: complete - predefined_parameters: - DEVSTACK_NODE_NAME=${NODE_NAME} - -scm: - scm: 'false' - -assignednode: - node: 'devstack-precise' - ---- -main: - name: 'gate-tempest-devstack-vm' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - concurrent: true - timeout: 90 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -parameters: - - name: NODE_LABEL - description: Label of node to use for this build - type: label - default: devstack-precise - -builders: - - trigger_builds: - - project: devstack-update-inprogress - predefined_parameters: - DEVSTACK_NODE_NAME=${NODE_NAME} - - shell: | - #!/bin/bash -xe - # - # This job also gates devstack-gate, but in case a previous run fails, - # we need to always make sure that we're starting with the latest copy - # from master, before we start applying changes to it. If a previous run - # leaves a bad copy of the gate script, we may get stuck. - # - if [[ ! -e devstack-gate ]]; then - git clone https://review.openstack.org/p/openstack-ci/devstack-gate - else - cd devstack-gate - git remote update - git reset --hard - git clean -x -f - git checkout master - git reset --hard remotes/origin/master - git clean -x -f - cd .. - fi - - shell: | - #!/bin/bash -xe - export PYTHONUNBUFFERED=true - export DEVSTACK_GATE_TEMPEST=1 - cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh - ./safe-devstack-vm-gate-wrap.sh - -post_build_actions: - - archive: - artifacts: logs/* - - trigger_parameterized_builds: - - project: devstack-update-complete - when: complete - predefined_parameters: - DEVSTACK_NODE_NAME=${NODE_NAME} - -scm: - scm: 'false' - -assignednode: - node: 'devstack-precise' - ---- -# Called by devstack jobs to alert that they have started so that the -# jenkins slave they are running on can be disabled. -main: - name: 'devstack-update-inprogress' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - timeout: 10 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: 100 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -builders: - - shell: | - #!/bin/bash -xe - - if [[ ! -e devstack-gate ]]; then - git clone https://review.openstack.org/p/openstack-ci/devstack-gate - else - cd devstack-gate - git remote update - git pull --ff-only origin - cd .. - fi - - shell: | - #!/bin/bash -xe - export PYTHONUNBUFFERED=true - $WORKSPACE/devstack-gate/devstack-vm-inprogress.py $DEVSTACK_NODE_NAME - -scm: - scm: 'false' - -assignednode: - node: 'master' - ---- -# Called by devstack jobs to alert that they have completed so that the -# jenkins slave may be deleted. -main: - name: 'devstack-update-complete' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - timeout: 10 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: 100 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -builders: - - shell: | - #!/bin/bash -xe - - if [[ ! -e devstack-gate ]]; then - git clone https://review.openstack.org/p/openstack-ci/devstack-gate - else - cd devstack-gate - git remote update - git pull --ff-only origin - cd .. - fi - - shell: | - #!/bin/bash -xe - export PYTHONUNBUFFERED=true - $WORKSPACE/devstack-gate/devstack-vm-delete.py $DEVSTACK_NODE_NAME - -scm: - scm: 'false' - -assignednode: - node: 'master' diff --git a/modules/jenkins_jobs/files/projects/openstack/devstack.yml b/modules/jenkins_jobs/files/projects/openstack/devstack.yml deleted file mode 100644 index 9ce4c66201..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/devstack.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# merge-gate -main: - name: 'gate-devstack-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-dev' - project: 'devstack' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - diff --git a/modules/jenkins_jobs/files/projects/openstack/gerrit-verification-status-plugin.yml b/modules/jenkins_jobs/files/projects/openstack/gerrit-verification-status-plugin.yml deleted file mode 100644 index 92b895dcbe..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/gerrit-verification-status-plugin.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -main: - name: 'gate-gerrit-verification-status-plugin-merge' - github_org: 'openstack-ci' - review_site: 'review.openstack.org' - project: 'gerrit-verification-status-plugin' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/gerrit.yml b/modules/jenkins_jobs/files/projects/openstack/gerrit.yml deleted file mode 100644 index 8543f80061..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/gerrit.yml +++ /dev/null @@ -1,139 +0,0 @@ ---- -# gate-gerrit-merge -main: - name: 'gate-gerrit-merge' - github_org: 'openstack-ci' - review_site: 'review.openstack.org' - project: 'gerrit' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# check-gerrit-unittests -main: - name: 'check-gerrit-unittests' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerrit' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 40 - timeout_fail: true - -triggers: - - zuul - -prebuilders: - - gerrit_git_prep - - gerrit_preclean - -maven: - root_module: - group_id: com.google.gerrit - artifact_id: gerrit-parent - goals: 'clean package -Dgerrit.include-documentation=1 -X' - -postbuilders: - - gerrit_postrun - -post_build_actions: - - war: - site: 'nova.openstack.org' - warfile: 'gerrit-war/target/gerrit*.war' - target_path: 'tarballs/ci/test/' - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# gate-gerrit-unittests -main: - name: 'gate-gerrit-unittests' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerrit' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 40 - timeout_fail: true - -triggers: - - zuul - -prebuilders: - - gerrit_git_prep - - gerrit_preclean - -maven: - root_module: - group_id: com.google.gerrit - artifact_id: gerrit-parent - goals: 'clean package -Dgerrit.include-documentation=1 -X' - -postbuilders: - - gerrit_postrun - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# gerrit-package -main: - name: 'gerrit-package' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerrit' - authenticatedBulid: 'false' - concurrent: 'true' - timeout: 40 - timeout_fail: true - -triggers: - - zuul_post - -prebuilders: - - gerrit_git_prep - - gerrit_preclean - -maven: - root_module: - group_id: com.google.gerrit - artifact_id: gerrit-parent - goals: 'clean package -Dgerrit.include-documentation=1 -X' - -postbuilders: - - gerrit_postrun - -post_build_actions: - - war: - site: 'nova.openstack.org' - warfile: 'gerrit-war/target/gerrit*.war' - target_path: 'tarballs/ci/' - -scm: - scm: 'false' - -assignednode: - node: 'precise' - diff --git a/modules/jenkins_jobs/files/projects/openstack/gerritbot.yml b/modules/jenkins_jobs/files/projects/openstack/gerritbot.yml deleted file mode 100644 index 8d8ad93bf9..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/gerritbot.yml +++ /dev/null @@ -1,164 +0,0 @@ ---- -# pyflakes-gate -main: - name: 'gate-gerritbot-pyflakes' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritbot' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - - pyflakes - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# pep8-gate -main: - name: 'gate-gerritbot-pep8' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritbot' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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: 'precise' - ---- -# merge-gate -main: - name: 'gate-gerritbot-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritbot' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# tarball -main: - name: 'gerritbot-sdist-tarball' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritbot' - concurrent: 'true' - timeout: 30 - timeout_fail: 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 - cp dist/* dist/gerritbot-$BRANCH_PATH.tar.gz - -post_build_actions: - - tarball: - site: 'ci.openstack.org' - project: 'gerritbot' - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# pypi-upload -main: - name: 'gerritbot-pypi' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritbot' - concurrent: 'true' - timeout: 30 - timeout_fail: true - -triggers: - - zuul_post - -builders: - - gerrit_git_prep - - shell: tox -v -evenv python setup.py sdist upload - -post_build_actions: - - tarball: - site: 'ci.openstack.org' - project: 'gerritbot' - -scm: - scm: 'false' - -assignednode: - node: 'pypi' diff --git a/modules/jenkins_jobs/files/projects/openstack/gerritlib.yml b/modules/jenkins_jobs/files/projects/openstack/gerritlib.yml deleted file mode 100644 index 66c90140df..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/gerritlib.yml +++ /dev/null @@ -1,125 +0,0 @@ ---- -# pyflakes-gate -main: - name: 'gate-gerritlib-pyflakes' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritlib' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - - pyflakes - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# pep8-gate -main: - name: 'gate-gerritlib-pep8' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritlib' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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: 'precise' - ---- -# merge-gate -main: - name: 'gate-gerritlib-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritlib' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# pypi-upload -main: - name: 'gerritlib-pypi' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'gerritlib' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul_post - -builders: - - gerrit_git_prep - - shell: tox -v -evenv python setup.py sdist upload - -post_build_actions: - - tarball: - site: 'nova.openstack.org' - project: 'ci' - -scm: - scm: 'false' - -assignednode: - node: 'pypi' - diff --git a/modules/jenkins_jobs/files/projects/openstack/glance.yml b/modules/jenkins_jobs/files/projects/openstack/glance.yml deleted file mode 100644 index 4dafe260c6..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/glance.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'glance' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/heat.yml b/modules/jenkins_jobs/files/projects/openstack/heat.yml deleted file mode 100644 index 7b55d925c4..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/heat.yml +++ /dev/null @@ -1,9 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'heat' - disabled: 'false' - github_org: 'heat-api' - review_site: 'review.openstack.org' - node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/openstack/horizon.yml b/modules/jenkins_jobs/files/projects/openstack/horizon.yml deleted file mode 100644 index a2eea2bc38..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/horizon.yml +++ /dev/null @@ -1,54 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'horizon' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' - ---- -# gate-horizon-selenium -main: - name: 'gate-horizon-selenium' - review_site: 'review.openstack.org' - github_org: 'openstack' - project: 'horizon' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - - selenium - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/jenkins-job-builder.yml b/modules/jenkins_jobs/files/projects/openstack/jenkins-job-builder.yml deleted file mode 100644 index c9a201ad3b..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/jenkins-job-builder.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -# merge-gate -main: - name: 'gate-jenkins-job-builder-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'jenkins-job-builder' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/keystone.yml b/modules/jenkins_jobs/files/projects/openstack/keystone.yml deleted file mode 100644 index 0aa43f6250..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/keystone.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'keystone' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/mraas.yml b/modules/jenkins_jobs/files/projects/openstack/mraas.yml deleted file mode 100644 index 858b7ed50b..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/mraas.yml +++ /dev/null @@ -1,70 +0,0 @@ ---- -main: - name: 'gate-MRaaS-merge' - github_org: 'stackforge' - review_site: 'review.openstack.org' - project: 'MRaaS' - authenticatedBuild: 'false' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - gerrit: - triggerOnPatchsetUploadedEvent: 'false' - triggerOnChangeMergedEvent: 'false' - triggerOnCommentAddedEvent: 'true' - triggerOnRefUpdatedEvent: 'false' - triggerApprovalCategory: 'APRV' - triggerApprovalValue: 1 - failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.' - projects: - - projectCompareType: 'PLAIN' - projectPattern: 'stackforge/MRaaS' - branchCompareType: 'ANT' - branchPattern: '**' - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'oneiric' - ---- -main: - name: 'check-MRaaS-merge' - github_org: 'stackforge' - review_site: 'review.openstack.org' - project: 'MRaaS' - authenticatedBuild: 'false' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - gerrit: - triggerOnPatchsetUploadedEvent: 'true' - triggerOnChangeMergedEvent: 'false' - triggerOnCommentAddedEvent: 'false' - triggerOnRefUpdatedEvent: 'false' - overrideVotes: 'true' - gerritBuildSuccessfulVerifiedValue: 1 - gerritBuildFailedVerifiedValue: -1 - failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.' - projects: - - projectCompareType: 'PLAIN' - projectPattern: 'stackforge/MRaaS' - branchCompareType: 'ANT' - branchPattern: '**' - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/openstack/nova.yml b/modules/jenkins_jobs/files/projects/openstack/nova.yml deleted file mode 100644 index 78b484f9d4..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/nova.yml +++ /dev/null @@ -1,49 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'nova' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - node: 'precise' - ---- -project: - template: 'python_bitrot_jobs' - -values: - name: 'nova' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - node: 'oneiric' - branch_name: 'stable-diablo' - branch_spec: 'origin/stable/diablo' - ---- -project: - template: 'python_bitrot_jobs' - -values: - name: 'nova' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - node: 'precise' - branch_name: 'stable-essex' - branch_spec: 'origin/stable/essex' - ---- -project: - template: 'openstack_publish_jobs' - -values: - name: 'nova' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'nova' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/openstack-ci-puppet.yml b/modules/jenkins_jobs/files/projects/openstack/openstack-ci-puppet.yml deleted file mode 100644 index 49a5a57dbc..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/openstack-ci-puppet.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- -# gate-ci-puppet-merge -main: - name: 'gate-ci-puppet-merge' - review_site: 'review.openstack.org' - github_org: 'openstack' - project: 'openstack-ci-puppet' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# gate-ci-puppet-syntax -main: - name: 'gate-ci-puppet-syntax' - review_site: 'review.openstack.org' - github_org: 'openstack' - project: 'openstack-ci-puppet' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - puppet_syntax - - pyflakes - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml b/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml deleted file mode 100644 index d100c2d108..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/openstack-common.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'openstack-common' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/pbr.yml b/modules/jenkins_jobs/files/projects/openstack/pbr.yml deleted file mode 100644 index c40adf6c67..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/pbr.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'pbr' - disabled: 'false' - github_org: 'openstack-dev' - review_site: 'review.openstack.org' - node: 'precise' - ---- -project: - template: 'pypi_jobs' - -values: - name: 'pbr' - disabled: 'false' - github_org: 'openstack-dev' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'pbr' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/pypi-mirror.yml b/modules/jenkins_jobs/files/projects/openstack/pypi-mirror.yml deleted file mode 100644 index 1b245b8db6..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/pypi-mirror.yml +++ /dev/null @@ -1,49 +0,0 @@ ---- -# pyflakes-gate -main: - name: 'gate-pypi-mirror-pyflakes' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'pypi-mirror' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - pyflakes - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# merge-gate -main: - name: 'gate-pypi-mirror-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'pypi-mirror' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - diff --git a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml b/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml deleted file mode 100644 index 44f63dfa1f..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-cinderclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-cinderclient' - 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 deleted file mode 100644 index 7bed702122..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-glanceclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-glanceclient' - 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 deleted file mode 100644 index 32311eea76..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-keystoneclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-keystoneclient' - 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 deleted file mode 100644 index b88e25466d..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-novaclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-novaclient' - 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 deleted file mode 100644 index 8bd1831ecc..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-openstackclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-openstackclient' - 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 deleted file mode 100644 index 2024e77c04..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-quantumclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'python-quantumclient' - 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 deleted file mode 100644 index e1890d5518..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/python-swiftclient.yml +++ /dev/null @@ -1,23 +0,0 @@ -project: - 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' - disabled: 'false' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'swift.openstack.org' - tarball_project: 'python-swiftclient' - 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 deleted file mode 100644 index 6f2ef5ebf6..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/quantum.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'quantum' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml b/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml deleted file mode 100644 index e9a650957a..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/reddwarf.yml +++ /dev/null @@ -1,9 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'reddwarf' - disabled: 'false' - github_org: 'stackforge' - review_site: 'review.openstack.org' - node: 'oneiric' diff --git a/modules/jenkins_jobs/files/projects/openstack/requirements.yml b/modules/jenkins_jobs/files/projects/openstack/requirements.yml deleted file mode 100644 index 70b08cf862..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/requirements.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -# gate-requirements-merge -main: - name: 'gate-requirements-merge' - review_site: 'review.openstack.org' - github_org: 'openstack' - project: 'requirements' - concurrent: 'true' - timeout: 30 - timeout_fail: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/swift.yml b/modules/jenkins_jobs/files/projects/openstack/swift.yml deleted file mode 100644 index 7f26cad53f..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/swift.yml +++ /dev/null @@ -1,23 +0,0 @@ -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' - github_org: 'openstack' - review_site: 'review.openstack.org' - publisher_site: 'nova.openstack.org' - tarball_project: 'swift' - doc_publisher_site: 'docs.openstack.org' - node: 'precise' diff --git a/modules/jenkins_jobs/files/projects/openstack/tempest.yml b/modules/jenkins_jobs/files/projects/openstack/tempest.yml deleted file mode 100644 index efaba03a7e..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/tempest.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- -# pep8-gate -main: - name: 'gate-tempest-pep8' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'tempest' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - pep8 - -post_build_actions: - - pep8 - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# merge-gate -main: - name: 'gate-tempest-merge' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'tempest' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: 'precise' - diff --git a/modules/jenkins_jobs/files/projects/openstack/zuul.yml b/modules/jenkins_jobs/files/projects/openstack/zuul.yml deleted file mode 100644 index c4913b4c85..0000000000 --- a/modules/jenkins_jobs/files/projects/openstack/zuul.yml +++ /dev/null @@ -1,73 +0,0 @@ -project: - template: 'python_jobs' - -values: - name: 'zuul' - disabled: 'false' - github_org: 'openstack-ci' - review_site: 'review.openstack.org' - node: 'precise' - ---- -# pyflakes-gate -main: - name: 'gate-zuul-pyflakes' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'zuul' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul - -builders: - - gerrit_git_prep - - pyflakes - -scm: - scm: 'false' - -assignednode: - node: 'precise' - ---- -# zuul-docs -main: - name: 'zuul-docs' - review_site: 'review.openstack.org' - github_org: 'openstack-ci' - project: 'zuul' - authenticatedBuild: 'false' - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -triggers: - - zuul_post - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -builders: - - gerrit_git_prep - - docs - -post_build_actions: - - scp: - site: '173.203.107.207' - source: 'doc/build/html/**/*' - target_path: 'ci/zuul' - keep_heirarchy: 'true' - -scm: - scm: 'false' - -assignednode: - node: 'precise' diff --git a/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml b/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml deleted file mode 100644 index 2a8415dcd3..0000000000 --- a/modules/jenkins_jobs/files/templates/openstack_publish_jobs.yml +++ /dev/null @@ -1,78 +0,0 @@ ---- -# docs -main: - name: '@NAME@-docs' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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' - timeout: 30 - timeout_fail: true - timestamps: 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 deleted file mode 100644 index 7d3f953e49..0000000000 --- a/modules/jenkins_jobs/files/templates/pypi_jobs.yml +++ /dev/null @@ -1,117 +0,0 @@ ---- -# docs -main: - name: '@NAME@-docs' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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@-sdist-tarball' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBulid: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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 - 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' - timeout: 30 - timeout_fail: true - timestamps: 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_bitrot_jobs.yml b/modules/jenkins_jobs/files/templates/python_bitrot_jobs.yml deleted file mode 100644 index eda82b353e..0000000000 --- a/modules/jenkins_jobs/files/templates/python_bitrot_jobs.yml +++ /dev/null @@ -1,103 +0,0 @@ ---- -# python26-gate -main: - name: 'periodic-@NAME@-python26-@BRANCH_NAME@' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - timed: '@daily' - -builders: - - python26 - -scm: - scm: 'true' - branches: - - '@BRANCH_SPEC@' - -# >= precise does not have python2.6 -assignednode: - node: 'oneiric' - ---- -# python27-gate -main: - name: 'periodic-@NAME@-python27-@BRANCH_NAME@' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - timed: '@daily' - -builders: - - python27 - -scm: - scm: 'true' - branches: - - '@BRANCH_SPEC@' - -assignednode: - node: '@NODE@' - ---- -# docs-gate -main: - name: 'periodic-@NAME@-docs-@BRANCH_NAME@' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - timed: '@daily' - -builders: - - docs - -scm: - scm: 'true' - branches: - - '@BRANCH_SPEC@' - -assignednode: - node: '@NODE@' - diff --git a/modules/jenkins_jobs/files/templates/python_jobs.yml b/modules/jenkins_jobs/files/templates/python_jobs.yml deleted file mode 100644 index 556f9f1fc5..0000000000 --- a/modules/jenkins_jobs/files/templates/python_jobs.yml +++ /dev/null @@ -1,210 +0,0 @@ ---- -# coverage -main: - name: '@NAME@-coverage' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: 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' - timeout: 30 - timeout_fail: true - timestamps: 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' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - - python26 - -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' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -parameters: - - name: NODE_LABEL - description: Label of node to use for this build - type: label - default: '@NODE@' - -triggers: - - zuul - -builders: - - gerrit_git_prep - - python27 - -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' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - -scm: - scm: 'false' - -assignednode: - node: '@NODE@' - ---- -# docs-gate -main: - name: 'gate-@NAME@-docs' - review_site: '@REVIEW_SITE@' - github_org: '@GITHUB_ORG@' - project: '@NAME@' - authenticatedBuild: 'false' - disabled: @DISABLED@ - concurrent: 'true' - timeout: 30 - timeout_fail: true - timestamps: true - -logrotate: - daysToKeep: 28 - numToKeep: -1 - artifactDaysToKeep: -1 - artifactNumToKeep: -1 - -triggers: - - zuul - -builders: - - gerrit_git_prep - - docs - -scm: - scm: 'false' - -assignednode: - node: '@NODE@' - diff --git a/modules/jenkins_jobs/files/test.sh b/modules/jenkins_jobs/files/test.sh deleted file mode 100755 index 9489b61c11..0000000000 --- a/modules/jenkins_jobs/files/test.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# A simple script to verify that the XML output is unaltered after a change. -# Before you start work, run "./test.sh save". -# As you test your change, run "./test.sh" to see differences in XML output. - -mkdir -p /tmp/jenkins_jobs_test/saved -mkdir -p /tmp/jenkins_jobs_test/test - -if [ "$1" == "save" ] -then - for x in `find projects/ -name *.yml` - do - echo $x - BASENAME=`basename $x` - python jenkins_jobs.py test $x #> /tmp/jenkins_jobs_test/saved/$BASENAME.xml - done -else - for x in `find projects/ -name *.yml` - do - echo $x - BASENAME=`basename $x` - python jenkins_jobs.py test $x > /tmp/jenkins_jobs_test/test/$BASENAME.xml - done - diff -r /tmp/jenkins_jobs_test/saved /tmp/jenkins_jobs_test/test -fi diff --git a/modules/jenkins_jobs/manifests/init.pp b/modules/jenkins_jobs/manifests/init.pp deleted file mode 100644 index ba21c364e7..0000000000 --- a/modules/jenkins_jobs/manifests/init.pp +++ /dev/null @@ -1,48 +0,0 @@ -class jenkins_jobs($url, $username, $password, $site) { - - include pip - - package { 'python-yaml': - ensure => 'present' - } - - file { '/usr/local/jenkins_jobs': - owner => 'root', - group => 'root', - mode => 755, - ensure => 'directory', - recurse => true, - source => ['puppet:///modules/jenkins_jobs/'], - require => Package['python-yaml'], - notify => Exec["jenkins_job_${site}"] - } - - file { '/usr/local/jenkins_jobs/jenkins_jobs.ini': - owner => 'root', - group => 'root', - mode => 440, - ensure => 'present', - content => template('jenkins_jobs/jenkins_jobs.ini.erb'), - replace => 'true', - require => File['/usr/local/jenkins_jobs'], - notify => Exec["jenkins_job_${site}"] - } - - exec { "jenkins_job_${site}": - command => "python /usr/local/jenkins_jobs/jenkins_jobs.py update /usr/local/jenkins_jobs/projects/${site}", - cwd => '/usr/local/jenkins_jobs/', - path => '/bin:/usr/bin', - refreshonly => true, - require => [ - File['/usr/local/jenkins_jobs/jenkins_jobs.ini'], - Package['python-jenkins'] - ] - } - - package { "python-jenkins": - ensure => latest, # okay to use latest for pip - provider => pip, - require => Class[pip] - } - -} diff --git a/modules/openstack_project/files/jenkins_job_builder/config/ceilometer.yml b/modules/openstack_project/files/jenkins_job_builder/config/ceilometer.yml new file mode 100644 index 0000000000..a17dbc5326 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/ceilometer.yml @@ -0,0 +1,80 @@ +- project: + name: ceilometer + github-org: stackforge + node: oneiric + + jobs: + - python-jobs + + +- job: + name: 'gate-ceilometer-python26-essex' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/stackforge/ceilometer + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + # TODO: logrotate this job + #logrotate: + # daysToKeep: 28 + # numToKeep: -1 + # artifactDaysToKeep: -1 + # artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + - python26_essex + + # >= precise does not have python2.6 + node: oneiric + + +- job: + name: 'gate-ceilometer-python27-essex' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/stackforge/ceilometer + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + # TODO: logrotate this job + #logrotate: + # daysToKeep: 28 + # numToKeep: -1 + # artifactDaysToKeep: -1 + # artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + - python27_essex + + node: oneiric diff --git a/modules/openstack_project/files/jenkins_job_builder/config/cinder.yml b/modules/openstack_project/files/jenkins_job_builder/config/cinder.yml new file mode 100644 index 0000000000..5a0499eed5 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/cinder.yml @@ -0,0 +1,10 @@ +- project: + name: cinder + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yml b/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yml new file mode 100644 index 0000000000..c26a1fe598 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/devstack-gate.yml @@ -0,0 +1,273 @@ +- job: + name: gate-devstack-gate-merge + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/devstack-gate + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + + +- job: + name: gate-integration-tests-devstack-vm + project-type: freestyle + concurrent: true + node: devstack-precise + + properties: + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - label: + name: NODE_LABEL + description: Label of node to use for this build + default: devstack-precise + + wrappers: + - timeout: + timeout: 40 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - trigger-builds: + - project: devstack-update-inprogress + predefined_parameters: + DEVSTACK_NODE_NAME=${NODE_NAME} + - shell: | + #!/bin/bash -xe + # + # This job also gates devstack-gate, but in case a previous run fails, + # we need to always make sure that we're starting with the latest copy + # from master, before we start applying changes to it. If a previous run + # leaves a bad copy of the gate script, we may get stuck. + # + if [[ ! -e devstack-gate ]]; then + git clone https://review.openstack.org/p/openstack-ci/devstack-gate + else + cd devstack-gate + git remote update + git reset --hard + git clean -x -f + git checkout master + git reset --hard remotes/origin/master + git clean -x -f + cd .. + fi + - shell: | + #!/bin/bash -xe + export PYTHONUNBUFFERED=true + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + + publishers: + - archive: + artifacts: logs/* + - trigger-parameterized-builds: + - project: devstack-update-complete + when: complete + predefined_parameters: + DEVSTACK_NODE_NAME=${NODE_NAME} + + +- job: + name: gate-tempest-devstack-vm + project-type: freestyle + concurrent: true + node: devstack-precise + + properties: + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - label: + name: NODE_LABEL + description: Label of node to use for this build + default: devstack-precise + + wrappers: + - timeout: + timeout: 90 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - trigger-builds: + - project: devstack-update-inprogress + predefined_parameters: + DEVSTACK_NODE_NAME=${NODE_NAME} + - shell: | + #!/bin/bash -xe + # + # This job also gates devstack-gate, but in case a previous run fails, + # we need to always make sure that we're starting with the latest copy + # from master, before we start applying changes to it. If a previous run + # leaves a bad copy of the gate script, we may get stuck. + # + if [[ ! -e devstack-gate ]]; then + git clone https://review.openstack.org/p/openstack-ci/devstack-gate + else + cd devstack-gate + git remote update + git reset --hard + git clean -x -f + git checkout master + git reset --hard remotes/origin/master + git clean -x -f + cd .. + fi + - shell: | + #!/bin/bash -xe + export PYTHONUNBUFFERED=true + export DEVSTACK_GATE_TEMPEST=1 + cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh + ./safe-devstack-vm-gate-wrap.sh + + publishers: + - archive: + artifacts: logs/* + - trigger-parameterized-builds: + - project: devstack-update-complete + when: complete + predefined_parameters: + DEVSTACK_NODE_NAME=${NODE_NAME} + + +# Called by devstack jobs to alert that they have started so that the +# jenkins slave they are running on can be disabled. +- job: + name: devstack-update-inprogress + project-type: freestyle + concurrent: false + node: master + + properties: + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: 100 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 10 + fail: true + - timestamps + + builders: + - shell: | + #!/bin/bash -xe + + if [[ ! -e devstack-gate ]]; then + git clone https://review.openstack.org/p/openstack-ci/devstack-gate + else + cd devstack-gate + git remote update + git pull --ff-only origin + cd .. + fi + - shell: | + #!/bin/bash -xe + export PYTHONUNBUFFERED=true + $WORKSPACE/devstack-gate/devstack-vm-inprogress.py $DEVSTACK_NODE_NAME + + +# Called by devstack jobs to alert that they have completed so that the +# jenkins slave may be deleted. +- job: + name: devstack-update-complete + project-type: freestyle + concurrent: false + node: master + + properties: + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: 100 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 10 + fail: true + - timestamps + + builders: + - shell: | + #!/bin/bash -xe + + if [[ ! -e devstack-gate ]]; then + git clone https://review.openstack.org/p/openstack-ci/devstack-gate + else + cd devstack-gate + git remote update + git pull --ff-only origin + cd .. + fi + - shell: | + #!/bin/bash -xe + export PYTHONUNBUFFERED=true + $WORKSPACE/devstack-gate/devstack-vm-delete.py $DEVSTACK_NODE_NAME diff --git a/modules/openstack_project/files/jenkins_job_builder/config/devstack.yml b/modules/openstack_project/files/jenkins_job_builder/config/devstack.yml new file mode 100644 index 0000000000..e78ddf03c2 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/devstack.yml @@ -0,0 +1,33 @@ +- job: + name: gate-devstack-merge + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-dev/devstack + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + # TODO: logrotate this job + #logrotate: + # daysToKeep: 28 + # numToKeep: -1 + # artifactDaysToKeep: -1 + # artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerrit-verification-status-plugin.yml b/modules/openstack_project/files/jenkins_job_builder/config/gerrit-verification-status-plugin.yml new file mode 100644 index 0000000000..264a1cded7 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/gerrit-verification-status-plugin.yml @@ -0,0 +1,35 @@ +- project: + name: gerrit-verification-status-plugin + github-org: openstack-ci + node: precise + + # TODO: standardize + #jobs: + #- gate-{name}-merge + +- job: + name: gate-gerrit-verification-status-plugin-merge + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/openstack-ci/gerrit-verification-status-plugin + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + builders: + - gerrit_git_prep + + node: precise diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yml b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yml new file mode 100644 index 0000000000..3f200cc284 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yml @@ -0,0 +1,159 @@ +- project: + name: gerrit + github-org: openstack-ci + node: precise + + # TODO: standardize + #jobs: + # - gate-{name}-merge + + +- job: + name: gate-gerrit-merge + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/openstack-ci/gerrit + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + builders: + - gerrit_git_prep + + node: precise + + +- job: + name: check-gerrit-unittests + project-type: maven + concurrent: true + node: precise + + wrappers: + - timeout: + timeout: 40 + fail: true + + properties: + - github: + url: https://github.com/openstack-ci/gerrit + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + prebuilders: + - gerrit_git_prep + - gerrit_preclean + + maven: + root_module: + group_id: com.google.gerrit + artifact_id: gerrit-parent + goals: 'clean package -Dgerrit.include-documentation=1 -X' + + postbuilders: + - gerrit_postrun + + publishers: + - war: + site: 'nova.openstack.org' + warfile: 'gerrit-war/target/gerrit*.war' + target: 'tarballs/ci/test/' + + +- job: + name: gate-gerrit-unittests + project-type: maven + concurrent: true + node: precise + + wrappers: + - timeout: + timeout: 40 + fail: true + + properties: + - github: + url: https://github.com/openstack-ci/gerrit + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + prebuilders: + - gerrit_git_prep + - gerrit_preclean + + maven: + root_module: + group_id: com.google.gerrit + artifact_id: gerrit-parent + goals: 'clean package -Dgerrit.include-documentation=1 -X' + + postbuilders: + - gerrit_postrun + + +- job: + name: gerrit-package + project-type: maven + concurrent: true + node: precise + + wrappers: + - timeout: + timeout: 40 + fail: true + + properties: + - github: + url: https://github.com/openstack-ci/gerrit + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul_post + + prebuilders: + - gerrit_git_prep + - gerrit_preclean + + maven: + root_module: + group_id: com.google.gerrit + artifact_id: gerrit-parent + goals: 'clean package -Dgerrit.include-documentation=1 -X' + + postbuilders: + - gerrit_postrun + + publishers: + - war: + site: 'nova.openstack.org' + warfile: 'gerrit-war/target/gerrit*.war' + target: 'tarballs/ci/' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerritbot.yml b/modules/openstack_project/files/jenkins_job_builder/config/gerritbot.yml new file mode 100644 index 0000000000..b5ba6b3804 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/gerritbot.yml @@ -0,0 +1,90 @@ +- project: + name: gerritbot + github-org: openstack-ci + node: precise + doc-publisher-site: ci.openstack.org + tarball-publisher-site: ci.openstack.org + + jobs: + - gate-{name}-merge + - gate-{name}-pep8 + - gate-{name}-pyflakes + # TODO: standardize + #- '{name}-sdist-tarball' + #- '{name}-pypi' + +- job: + name: 'gerritbot-sdist-tarball' + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: 'https://github.com/openstack-ci/gerritbot' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + + triggers: + - zuul_post + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit_git_prep + - shell: | + #!/bin/bash -xe + BRANCH=$GERRIT_REFNAME + BRANCH_PATH=`echo $BRANCH | tr / -` + + tox -v -evenv python setup.py sdist + cp dist/* dist/gerritbot-$BRANCH_PATH.tar.gz + + publishers: + - tarball: + project: 'gerritbot' + site: 'ci.openstack.org' + + +- job: + name: 'gerritbot-pypi' + concurrent: true + node: pypi + + properties: + - github: + url: 'https://github.com/openstack-ci/gerritbot' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + + triggers: + - zuul_post + + builders: + - gerrit_git_prep + - shell: tox -v -evenv python setup.py sdist upload + + publishers: + - tarball: + project: 'gerritbot' + site: 'ci.openstack.org' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerritlib.yml b/modules/openstack_project/files/jenkins_job_builder/config/gerritlib.yml new file mode 100644 index 0000000000..1e775c9e50 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/gerritlib.yml @@ -0,0 +1,45 @@ +- project: + name: gerritlib + github-org: openstack-ci + node: precise + doc-publisher-site: ci.openstack.org + tarball-publisher-site: ci.openstack.org + + jobs: + - gate-{name}-merge + - gate-{name}-pep8 + - gate-{name}-pyflakes + # TODO: standardize + #- '{name}-pypi' + +- job: + name: 'gerritlib-pypi' + concurrent: true + node: pypi + + properties: + - github: + url: 'https://github.com/openstack-ci/gerritlib' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + builders: + - gerrit_git_prep + - shell: tox -v -evenv python setup.py sdist upload + + publishers: + - tarball: + project: 'ci' + site: 'nova.openstack.org' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/glance.yml b/modules/openstack_project/files/jenkins_job_builder/config/glance.yml new file mode 100644 index 0000000000..7806057ebe --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/glance.yml @@ -0,0 +1,10 @@ +- project: + name: glance + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/heat.yml b/modules/openstack_project/files/jenkins_job_builder/config/heat.yml new file mode 100644 index 0000000000..85ba5c00d2 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/heat.yml @@ -0,0 +1,7 @@ +- project: + name: heat + github-org: heat-api + node: oneiric + + jobs: + - python-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/horizon.yml b/modules/openstack_project/files/jenkins_job_builder/config/horizon.yml new file mode 100644 index 0000000000..92970a1b70 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/horizon.yml @@ -0,0 +1,43 @@ +- project: + name: horizon + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs + +- job: + name: gate-horizon-selenium + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack/horizon + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + - selenium diff --git a/modules/openstack_project/files/jenkins_job_builder/config/jenkins-job-builder.yml b/modules/openstack_project/files/jenkins_job_builder/config/jenkins-job-builder.yml new file mode 100644 index 0000000000..29f3952949 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/jenkins-job-builder.yml @@ -0,0 +1,34 @@ +- project: + name: jenkins-job-builder + github-org: openstack + node: precise + + # TODO: standardize + #jobs: + # - gate-{name}-merge + +- job: + name: gate-jenkins-job-builder-merge + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/jenkins-job-builder + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep diff --git a/modules/openstack_project/files/jenkins_job_builder/config/keystone.yml b/modules/openstack_project/files/jenkins_job_builder/config/keystone.yml new file mode 100644 index 0000000000..a1a0d98658 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/keystone.yml @@ -0,0 +1,10 @@ +- project: + name: keystone + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/macros.yml b/modules/openstack_project/files/jenkins_job_builder/config/macros.yml new file mode 100644 index 0000000000..8af5dcad1a --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/macros.yml @@ -0,0 +1,115 @@ +- builder: + name: gerrit_git_prep + builders: + - shell: "/usr/local/jenkins/slave_scripts/gerrit-git-prep.sh review.openstack.org" + +- builder: + name: coverage + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-cover.sh" + +- builder: + name: docs + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-docs.sh" + +- builder: + name: maven_test + builders: + - shell: "mvn test" + +- builder: + name: maven_package + builders: + - shell: "mvn package" + +- builder: + name: gerrit_package + builders: + - shell: "/usr/local/jenkins/slave_scripts/package-gerrit.sh" + +- builder: + name: gerrit_preclean + #TODO: multiline: + builders: + - shell: "#!/bin/bash -xe\nrm -fr ~/.m2\nrm -fr ~/.java\n./tools/version.sh --release" + +- builder: + name: gerrit_postrun + builders: + - shell: "./tools/version.sh --reset" + +- builder: + name: pep8 + builders: + - shell: "set -o pipefail ; tox -v -epep8 | tee pep8.txt ; set +o pipefail" + +- builder: + name: pyflakes + builders: + - shell: "tox -v -epyflakes" + +- builder: + name: puppet_syntax + builders: + # TODO: remove blank line + - shell: | + + find . -iname *.pp | xargs puppet parser validate --modulepath=`pwd`/modules + for f in `find . -iname *.erb` ; do + erb -x -T '-' $f | ruby -c + done + +- builder: + name: selenium + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-selenium.sh" + +- builder: + name: python26 + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 26" + - something: + arg: value + +- builder: + name: python27 + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 27" + +- builder: + name: python26_essex + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 26-essex" + +- builder: + name: python27_essex + builders: + - shell: "/usr/local/jenkins/slave_scripts/run-tox.sh 27-essex" + +- builder: + name: tarball + builders: + - shell: "/usr/local/jenkins/slave_scripts/create-tarball.sh {project}" + +# ====================================================================== + +- publisher: + name: tarball + publishers: + - archive: + artifacts: 'dist/*.tar.gz' + - scp: + site: '{site}' + source: 'dist/*.tar.gz' + target: 'tarballs/{project}/' + +- publisher: + name: war + publishers: + - archive: + artifacts: '{warfile}' + - scp: + site: '{site}' + source: '{warfile}' + target: '{target}' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/mraas.yml b/modules/openstack_project/files/jenkins_job_builder/config/mraas.yml new file mode 100644 index 0000000000..e148cef2c5 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/mraas.yml @@ -0,0 +1,82 @@ +- project: + name: MRaaS + github-org: stackforge + node: precise + +- job: + name: gate-MRaaS-merge + concurrent: false + node: oneiric + + properties: + - github: + url: https://github.com/stackforge/MRaaS + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - gerrit: + triggerOnPatchsetUploadedEvent: 'false' + triggerOnChangeMergedEvent: 'false' + triggerOnCommentAddedEvent: 'true' + triggerOnRefUpdatedEvent: 'false' + triggerApprovalCategory: 'APRV' + triggerApprovalValue: 1 + failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.' + projects: + - projectCompareType: 'PLAIN' + projectPattern: 'stackforge/MRaaS' + branchCompareType: 'ANT' + branchPattern: '**' + + builders: + - gerrit_git_prep + + +- job: + name: check-MRaaS-merge + concurrent: false + node: oneiric + + properties: + - github: + url: https://github.com/stackforge/MRaaS + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - gerrit: + triggerOnPatchsetUploadedEvent: 'true' + triggerOnChangeMergedEvent: 'false' + triggerOnCommentAddedEvent: 'false' + triggerOnRefUpdatedEvent: 'false' + overrideVotes: 'true' + gerritBuildSuccessfulVerifiedValue: 1 + gerritBuildFailedVerifiedValue: -1 + failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.' + projects: + - projectCompareType: 'PLAIN' + projectPattern: 'stackforge/MRaaS' + branchCompareType: 'ANT' + branchPattern: '**' + + builders: + - gerrit_git_prep diff --git a/modules/openstack_project/files/jenkins_job_builder/config/nova.yml b/modules/openstack_project/files/jenkins_job_builder/config/nova.yml new file mode 100644 index 0000000000..0dfd2a8ebb --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/nova.yml @@ -0,0 +1,12 @@ +- project: + name: nova + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - python-diablo-bitrot-jobs + - python-essex-bitrot-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yml new file mode 100644 index 0000000000..6680390617 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yml @@ -0,0 +1,63 @@ +- project: + name: ci-puppet + github-org: openstack + node: precise + + # TODO: standardize + #jobs: + # - gate-{name}-merge + +- job: + name: gate-ci-puppet-merge + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack/openstack-ci-puppet + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + + +- job: + name: gate-ci-puppet-syntax + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack/openstack-ci-puppet + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + - puppet_syntax + - pyflakes diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-common.yml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-common.yml new file mode 100644 index 0000000000..16b5005b95 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-common.yml @@ -0,0 +1,10 @@ +- project: + name: openstack-common + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yml new file mode 100644 index 0000000000..a78c53f35e --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yml @@ -0,0 +1,87 @@ +- job-template: + name: '{name}-docs' + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit_git_prep + - docs + + publishers: + - ftp: + site: '{doc-publisher-site}' + source: 'doc/build/html/**' + target: 'developer/{name}' + remove-prefix: 'doc/build/html' + excludes: '' + +- job-template: + name: '{name}-tarball' + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit_git_prep + - tarball: + project: '{name}' + + publishers: + - tarball: + project: '{name}' + site: '{tarball-publisher-site}' + +- job-group: + name: openstack-publish-jobs + jobs: + - '{name}-docs' + - '{name}-tarball' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pbr.yml b/modules/openstack_project/files/jenkins_job_builder/config/pbr.yml new file mode 100644 index 0000000000..6025e33eb2 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/pbr.yml @@ -0,0 +1,10 @@ +- project: + name: pbr + github-org: openstack-dev + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yml b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yml new file mode 100644 index 0000000000..68fc96559e --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yml @@ -0,0 +1,85 @@ +- job-template: + name: '{name}-sdist-tarball' + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit_git_prep + - shell: | + #!/bin/bash -xe + BRANCH=$GERRIT_REFNAME + BRANCH_PATH=`echo $BRANCH | tr / -` + + tox -v -evenv python setup.py sdist + cp dist/* dist/{name}-$BRANCH_PATH.tar.gz + + publishers: + - tarball: + project: '{name}' + site: '{tarball-publisher-site}' + + +- job-template: + name: '{name}-pypi' + project-type: freestyle + concurrent: true + node: pypi + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + builders: + - gerrit_git_prep + - shell: tox -v -evenv python setup.py sdist upload + + publishers: + - tarball: + project: '{name}' + site: '{tarball-publisher-site}' + +- job-group: + name: pypi-jobs + jobs: + - '{name}-docs' + - '{name}-sdist-tarball' + - '{name}-pypi' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pypi-mirror.yml b/modules/openstack_project/files/jenkins_job_builder/config/pypi-mirror.yml new file mode 100644 index 0000000000..bed7e5808b --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/pypi-mirror.yml @@ -0,0 +1,64 @@ +- project: + name: pypi-mirror + github-org: openstack-ci + node: precise + + # TODO: standardize + #jobs: + # - gate-{name}-merge + # - gate-{name}-pyflakes + +- job: + name: gate-pypi-mirror-merge + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/pypi-mirror + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + +- job: + name: gate-pypi-mirror-pyflakes + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/pypi-mirror + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + - pyflakes diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-bitrot-jobs.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-bitrot-jobs.yml new file mode 100644 index 0000000000..5b1d6fc221 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-bitrot-jobs.yml @@ -0,0 +1,140 @@ +- job-template: + name: 'periodic-{name}-python26-{branch-name}' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - timed: '@daily' + + builders: + - python26 + + scm: + - git: + url: 'git://github.com/{github-org}/{name}.git' + branches: + - 'origin/{branch}' + + # >= precise does not have python2.6 + node: oneiric + + +- job-template: + name: 'periodic-{name}-python27-{branch-name}' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - timed: '@daily' + + builders: + - python27 + + scm: + - git: + url: 'git://github.com/{github-org}/{name}.git' + branches: + - 'origin/{branch}' + + node: '{node}' + + +- job-template: + name: 'periodic-{name}-docs-{branch-name}' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - timed: '@daily' + + builders: + - docs + + scm: + - git: + url: 'git://github.com/{github-org}/{name}.git' + branches: + - 'origin/{branch}' + + node: '{node}' + + +- job-group: + name: python-diablo-bitrot-jobs + branch: 'stable/diablo' + branch-name: 'stable-diablo' + node: oneiric + jobs: + - 'periodic-{name}-python26-{branch-name}' + - 'periodic-{name}-python27-{branch-name}' + - 'periodic-{name}-docs-{branch-name}' + +- job-group: + name: python-essex-bitrot-jobs + branch: 'stable/essex' + branch-name: 'stable-essex' + node: precise + jobs: + - 'periodic-{name}-python26-{branch-name}' + - 'periodic-{name}-python27-{branch-name}' + - 'periodic-{name}-docs-{branch-name}' diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-cinderclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-cinderclient.yml new file mode 100644 index 0000000000..d05a16f767 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-cinderclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-cinderclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-glanceclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-glanceclient.yml new file mode 100644 index 0000000000..691737e264 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-glanceclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-glanceclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yml new file mode 100644 index 0000000000..20233bb8d0 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yml @@ -0,0 +1,267 @@ +- job-template: + name: '{name}-coverage' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - zuul_post + + builders: + - gerrit_git_prep + - coverage + + publishers: + - coverage + + node: '{node}' + + +- job-template: + name: 'gate-{name}-pep8' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + - pep8 + + publishers: + - pep8 + + node: '{node}' + + +- job-template: + name: 'gate-{name}-python26' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + - python26 + + # >= precise does not have python2.6 + node: oneiric + + +- job-template: + name: 'gate-{name}-python27' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + parameters: + - label: + name: NODE_LABEL + description: Label of node to use for this build + default: '{node}' + + triggers: + - zuul + + builders: + - gerrit_git_prep + - python27 + + node: '{node}' + + +- job-template: + name: 'gate-{name}-merge' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + + node: '{node}' + + +- job-template: + name: 'gate-{name}-docs' + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + triggers: + - zuul + + builders: + - gerrit_git_prep + - docs + + node: '{node}' + + +- job-template: + name: 'gate-{name}-pyflakes' + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: 'https://github.com/{github-org}/{name}' + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + - pyflakes + + +- job-group: + name: python-jobs + jobs: + - '{name}-coverage' + - 'gate-{name}-merge' + - 'gate-{name}-pep8' + - 'gate-{name}-python26' + - 'gate-{name}-python27' + - 'gate-{name}-docs' + # pyflakes isn't standard diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-keystoneclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-keystoneclient.yml new file mode 100644 index 0000000000..6d4f94d1cd --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-keystoneclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-keystoneclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-novaclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-novaclient.yml new file mode 100644 index 0000000000..08ac2a3abc --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-novaclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-novaclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-openstackclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-openstackclient.yml new file mode 100644 index 0000000000..caac05c5aa --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-openstackclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-openstackclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-quantumclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-quantumclient.yml new file mode 100644 index 0000000000..64c5c3f8d0 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-quantumclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-quantumclient + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-swiftclient.yml b/modules/openstack_project/files/jenkins_job_builder/config/python-swiftclient.yml new file mode 100644 index 0000000000..ab0e47b66a --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/python-swiftclient.yml @@ -0,0 +1,10 @@ +- project: + name: python-swiftclient + github-org: openstack + node: precise + tarball-publisher-site: swift.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - pypi-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/quantum.yml b/modules/openstack_project/files/jenkins_job_builder/config/quantum.yml new file mode 100644 index 0000000000..3bae88f7e4 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/quantum.yml @@ -0,0 +1,10 @@ +- project: + name: quantum + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/reddwarf.yml b/modules/openstack_project/files/jenkins_job_builder/config/reddwarf.yml new file mode 100644 index 0000000000..7786f8e6e9 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/reddwarf.yml @@ -0,0 +1,7 @@ +- project: + name: reddwarf + github-org: stackforge + node: oneiric + + jobs: + - python-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/requirements.yml b/modules/openstack_project/files/jenkins_job_builder/config/requirements.yml new file mode 100644 index 0000000000..c0c01a9428 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/requirements.yml @@ -0,0 +1,34 @@ +- project: + name: requirements + github-org: openstack + node: oneiric + + # TODO: standardize + #jobs: + # - gate-{name}-merge + +- job: + name: gate-requirements-merge + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + + properties: + - github: + url: https://github.com/openstack/requirements + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + builders: + - gerrit_git_prep + + node: precise diff --git a/modules/openstack_project/files/jenkins_job_builder/config/swift.yml b/modules/openstack_project/files/jenkins_job_builder/config/swift.yml new file mode 100644 index 0000000000..6faa2c651e --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/swift.yml @@ -0,0 +1,10 @@ +- project: + name: swift + github-org: openstack + node: precise + tarball-publisher-site: nova.openstack.org + doc-publisher-site: docs.openstack.org + + jobs: + - python-jobs + - openstack-publish-jobs diff --git a/modules/openstack_project/files/jenkins_job_builder/config/tempest.yml b/modules/openstack_project/files/jenkins_job_builder/config/tempest.yml new file mode 100644 index 0000000000..4f4739b0a7 --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/tempest.yml @@ -0,0 +1,67 @@ +- project: + name: tempest + github-org: openstack + node: precise + + # TODO: standardize + #jobs: + # - gate-{name}-merge + # - gate-{name}-pep8 + +- job: + name: gate-tempest-merge + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/openstack-ci/tempest + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + builders: + - gerrit_git_prep + + node: precise + +- job: + name: gate-tempest-pep8 + concurrent: true + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + properties: + - github: + url: https://github.com/openstack-ci/tempest + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + triggers: + - zuul + + builders: + - gerrit_git_prep + - pep8 + + publishers: + - pep8 + + node: precise diff --git a/modules/openstack_project/files/jenkins_job_builder/config/zuul.yml b/modules/openstack_project/files/jenkins_job_builder/config/zuul.yml new file mode 100644 index 0000000000..bbe44c0b6d --- /dev/null +++ b/modules/openstack_project/files/jenkins_job_builder/config/zuul.yml @@ -0,0 +1,79 @@ +- project: + name: zuul + github-org: openstack-ci + node: precise + jobs: + - python-jobs + # TODO: standardize these + #- gate-{name}-pyflakes + #- '{name}-docs + +- job: + name: gate-zuul-pyflakes + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/zuul + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul + + builders: + - gerrit_git_prep + - pyflakes + + +- job: + name: zuul-docs + project-type: freestyle + concurrent: true + node: precise + + properties: + - github: + url: https://github.com/openstack-ci/zuul + - throttle: + max-per-node: 0 + max-total: 0 + option: project + enabled: false + + wrappers: + - timeout: + timeout: 30 + fail: true + - timestamps + + triggers: + - zuul_post + + logrotate: + daysToKeep: 28 + numToKeep: -1 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + + builders: + - gerrit_git_prep + - docs + + publishers: + - scp: + site: '173.203.107.207' + source: 'doc/build/html/**/*' + target: 'ci/zuul' + keep-hierarchy: true diff --git a/modules/openstack_project/manifests/jenkins.pp b/modules/openstack_project/manifests/jenkins.pp index 6d64afa61d..4de417aa09 100644 --- a/modules/openstack_project/manifests/jenkins.pp +++ b/modules/openstack_project/manifests/jenkins.pp @@ -3,6 +3,7 @@ class openstack_project::jenkins($jenkins_jobs_password) { class { 'openstack_project::server': iptables_public_tcp_ports => [80, 443, 4155] } + class { 'jenkins_master': site => 'jenkins.openstack.org', serveradmin => 'webmaster@openstack.org', @@ -11,12 +12,23 @@ class openstack_project::jenkins($jenkins_jobs_password) { ssl_key_file => '/etc/ssl/private/jenkins.openstack.org.key', ssl_chain_file => '/etc/ssl/certs/intermediate.pem', } - class { "jenkins_jobs": + + class { "jenkins_job_builder": url => "https://jenkins.openstack.org/", username => "gerrig", password => $jenkins_jobs_password, - site => "openstack", } + + file { '/etc/jenkins_jobs/config': + owner => 'root', + group => 'root', + mode => 755, + ensure => 'directory', + recurse => true, + source => ['puppet:///modules/openstack_project/jenkins_job_builder/config'], + notify => Exec["jenkins_jobs_update"] + } + file { "/etc/default/jenkins": ensure => 'present', source => 'puppet:///modules/openstack_project/jenkins/jenkins.default'