diff --git a/modules/jenkins_jobs/files/jenkins_jobs.py b/modules/jenkins_jobs/files/jenkins_jobs.py index 16a90d7e4f..e094f2f33e 100644 --- a/modules/jenkins_jobs/files/jenkins_jobs.py +++ b/modules/jenkins_jobs/files/jenkins_jobs.py @@ -118,14 +118,25 @@ class XmlParser(object): def _load_modules(self): for modulename in self.data['modules']: - modulename = 'modules.{name}'.format(name=modulename) - self._register_module(modulename) + full_modulename = 'modules.{name}'.format(name=modulename) + is_project = modulename.startswith('project_') + module = self._register_module(full_modulename, is_project) + if is_project: + self.xml = module.gen_xml(self.xml) - def _register_module(self, modulename): - classname = modulename.rsplit('.', 1)[1] - module = __import__(modulename, fromlist=[classname]) + def _register_module(self, modulename, skip=False): + class_and_alias = modulename.rsplit('.', 1)[1] + classname_split = class_and_alias.split(":") + classname = classname_split[0] + module = __import__(modulename.split(":")[0], fromlist=[classname]) cla = getattr(module, classname) - self.modules.append(cla(self.data)) + if len(classname_split) > 1: + cla_instance = cla(self.data, classname_split[1]) + else: + cla_instance = cla(self.data) + if not skip: + self.modules.append(cla_instance) + return cla_instance def _build(self): XML.SubElement(self.xml, 'actions') diff --git a/modules/jenkins_jobs/files/modules/builders.py b/modules/jenkins_jobs/files/modules/builders.py index 187c1aeb86..6eced9b3a0 100644 --- a/modules/jenkins_jobs/files/modules/builders.py +++ b/modules/jenkins_jobs/files/modules/builders.py @@ -22,12 +22,14 @@ import xml.etree.ElementTree as XML class builders(object): - def __init__(self, data): + + def __init__(self, data, alias='builders'): self.data = data + self.alias = alias def gen_xml(self, xml_parent): - builders = XML.SubElement(xml_parent, 'builders') - for builder in self.data['builders']: + builders = XML.SubElement(xml_parent, self.alias) + for builder in self.data[self.alias]: getattr(self, '_' + builder)(builders) def _add_script(self, xml_parent, script): @@ -53,6 +55,15 @@ class builders(object): self._add_script(xml_parent, '/usr/local/jenkins/slave_scripts/package-gerrit.sh') + def _gerrit_preclean(self, xml_parent): + self._add_script(xml_parent, "#!/bin/bash -xe\n\ +rm -fr ~/.m2\n\ +rm -fr ~/.java\n\ +./tools/version.sh --release") + + def _gerrit_postrun(self, xml_parent): + self._add_script(xml_parent, "./tools/version.sh --reset") + def _pep8(self, xml_parent): self._add_script(xml_parent, 'tox -v -epep8 | tee pep8.txt') diff --git a/modules/jenkins_jobs/files/modules/project_maven.py b/modules/jenkins_jobs/files/modules/project_maven.py new file mode 100644 index 0000000000..30cc4b86c7 --- /dev/null +++ b/modules/jenkins_jobs/files/modules/project_maven.py @@ -0,0 +1,54 @@ +#! /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 + +class project_maven(object): + def __init__(self, data): + self.data = data + + def gen_xml(self, xml_parent): + xml_parent = XML.Element('maven2-moduleset') + root_module = XML.SubElement(xml_parent, 'root_module') + XML.SubElement(root_module, 'groupId').text = self.data['maven']['root_module']['group_id'] + XML.SubElement(root_module, 'artifactId').text = self.data['maven']['root_module']['artifact_id'] + XML.SubElement(xml_parent, 'goals').text = self.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/projects/openstack/gerrit.yml b/modules/jenkins_jobs/files/projects/openstack/gerrit.yml index 09552902c3..5d1c228c46 100644 --- a/modules/jenkins_jobs/files/projects/openstack/gerrit.yml +++ b/modules/jenkins_jobs/files/projects/openstack/gerrit.yml @@ -82,11 +82,12 @@ assignednode: --- # check-gerrit-unittests modules: + - project_maven - properties - scm - assignednode - trigger_gerrit - - builders + - builders:prebuilders - publisher_war main: @@ -112,9 +113,18 @@ trigger: branchCompareType: 'ANT' branchPattern: '**' -builders: +prebuilders: - gerrit_git_prep - - gerrit_package + - 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: 'true' @@ -130,11 +140,13 @@ publisher: --- # gate-gerrit-unittests modules: + - project_maven - properties - scm - assignednode - trigger_gerrit - - builders + - builders:prebuilders + - builders:postbuilders - publisher_none main: @@ -159,9 +171,18 @@ trigger: branchCompareType: 'ANT' branchPattern: '**' -builders: +prebuilders: - gerrit_git_prep - - gerrit_package + - 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: 'true' @@ -172,11 +193,13 @@ assignednode: --- # gerrit-package modules: + - project_maven - properties - scm - assignednode - trigger_gerrit - - builders + - builders:prebuilders + - builders:postbuilders - publisher_war main: @@ -201,9 +224,18 @@ trigger: branchCompareType: 'REG_EXP' branchPattern: '^(?!refs/).*$' -builders: +prebuilders: - gerrit_git_prep - - gerrit_package + - 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: 'true'