Add support for maven jobs.
Add a project module type with some special case rules so that the general case does not have to add one to its yaml files. Change-Id: Id110e79c34fa3982275f549d017adb03a1faf473
This commit is contained in:
parent
55570cf7e6
commit
018bb1c288
@ -118,14 +118,25 @@ class XmlParser(object):
|
|||||||
|
|
||||||
def _load_modules(self):
|
def _load_modules(self):
|
||||||
for modulename in self.data['modules']:
|
for modulename in self.data['modules']:
|
||||||
modulename = 'modules.{name}'.format(name=modulename)
|
full_modulename = 'modules.{name}'.format(name=modulename)
|
||||||
self._register_module(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):
|
def _register_module(self, modulename, skip=False):
|
||||||
classname = modulename.rsplit('.', 1)[1]
|
class_and_alias = modulename.rsplit('.', 1)[1]
|
||||||
module = __import__(modulename, fromlist=[classname])
|
classname_split = class_and_alias.split(":")
|
||||||
|
classname = classname_split[0]
|
||||||
|
module = __import__(modulename.split(":")[0], fromlist=[classname])
|
||||||
cla = getattr(module, 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):
|
def _build(self):
|
||||||
XML.SubElement(self.xml, 'actions')
|
XML.SubElement(self.xml, 'actions')
|
||||||
|
@ -22,12 +22,14 @@
|
|||||||
import xml.etree.ElementTree as XML
|
import xml.etree.ElementTree as XML
|
||||||
|
|
||||||
class builders(object):
|
class builders(object):
|
||||||
def __init__(self, data):
|
|
||||||
|
def __init__(self, data, alias='builders'):
|
||||||
self.data = data
|
self.data = data
|
||||||
|
self.alias = alias
|
||||||
|
|
||||||
def gen_xml(self, xml_parent):
|
def gen_xml(self, xml_parent):
|
||||||
builders = XML.SubElement(xml_parent, 'builders')
|
builders = XML.SubElement(xml_parent, self.alias)
|
||||||
for builder in self.data['builders']:
|
for builder in self.data[self.alias]:
|
||||||
getattr(self, '_' + builder)(builders)
|
getattr(self, '_' + builder)(builders)
|
||||||
|
|
||||||
def _add_script(self, xml_parent, script):
|
def _add_script(self, xml_parent, script):
|
||||||
@ -53,6 +55,15 @@ class builders(object):
|
|||||||
self._add_script(xml_parent,
|
self._add_script(xml_parent,
|
||||||
'/usr/local/jenkins/slave_scripts/package-gerrit.sh')
|
'/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):
|
def _pep8(self, xml_parent):
|
||||||
self._add_script(xml_parent, 'tox -v -epep8 | tee pep8.txt')
|
self._add_script(xml_parent, 'tox -v -epep8 | tee pep8.txt')
|
||||||
|
|
||||||
|
54
modules/jenkins_jobs/files/modules/project_maven.py
Normal file
54
modules/jenkins_jobs/files/modules/project_maven.py
Normal file
@ -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
|
@ -82,11 +82,12 @@ assignednode:
|
|||||||
---
|
---
|
||||||
# check-gerrit-unittests
|
# check-gerrit-unittests
|
||||||
modules:
|
modules:
|
||||||
|
- project_maven
|
||||||
- properties
|
- properties
|
||||||
- scm
|
- scm
|
||||||
- assignednode
|
- assignednode
|
||||||
- trigger_gerrit
|
- trigger_gerrit
|
||||||
- builders
|
- builders:prebuilders
|
||||||
- publisher_war
|
- publisher_war
|
||||||
|
|
||||||
main:
|
main:
|
||||||
@ -112,9 +113,18 @@ trigger:
|
|||||||
branchCompareType: 'ANT'
|
branchCompareType: 'ANT'
|
||||||
branchPattern: '**'
|
branchPattern: '**'
|
||||||
|
|
||||||
builders:
|
prebuilders:
|
||||||
- gerrit_git_prep
|
- 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:
|
||||||
scm: 'true'
|
scm: 'true'
|
||||||
@ -130,11 +140,13 @@ publisher:
|
|||||||
---
|
---
|
||||||
# gate-gerrit-unittests
|
# gate-gerrit-unittests
|
||||||
modules:
|
modules:
|
||||||
|
- project_maven
|
||||||
- properties
|
- properties
|
||||||
- scm
|
- scm
|
||||||
- assignednode
|
- assignednode
|
||||||
- trigger_gerrit
|
- trigger_gerrit
|
||||||
- builders
|
- builders:prebuilders
|
||||||
|
- builders:postbuilders
|
||||||
- publisher_none
|
- publisher_none
|
||||||
|
|
||||||
main:
|
main:
|
||||||
@ -159,9 +171,18 @@ trigger:
|
|||||||
branchCompareType: 'ANT'
|
branchCompareType: 'ANT'
|
||||||
branchPattern: '**'
|
branchPattern: '**'
|
||||||
|
|
||||||
builders:
|
prebuilders:
|
||||||
- gerrit_git_prep
|
- 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:
|
||||||
scm: 'true'
|
scm: 'true'
|
||||||
@ -172,11 +193,13 @@ assignednode:
|
|||||||
---
|
---
|
||||||
# gerrit-package
|
# gerrit-package
|
||||||
modules:
|
modules:
|
||||||
|
- project_maven
|
||||||
- properties
|
- properties
|
||||||
- scm
|
- scm
|
||||||
- assignednode
|
- assignednode
|
||||||
- trigger_gerrit
|
- trigger_gerrit
|
||||||
- builders
|
- builders:prebuilders
|
||||||
|
- builders:postbuilders
|
||||||
- publisher_war
|
- publisher_war
|
||||||
|
|
||||||
main:
|
main:
|
||||||
@ -201,9 +224,18 @@ trigger:
|
|||||||
branchCompareType: 'REG_EXP'
|
branchCompareType: 'REG_EXP'
|
||||||
branchPattern: '^(?!refs/).*$'
|
branchPattern: '^(?!refs/).*$'
|
||||||
|
|
||||||
builders:
|
prebuilders:
|
||||||
- gerrit_git_prep
|
- 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:
|
||||||
scm: 'true'
|
scm: 'true'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user