diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index 519c32236..3eef3a380 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -1076,6 +1076,41 @@ def conditional_step(parser, xml_parent, data): build_step(steps_parent, step) +def maven_builder(parser, xml_parent, data): + """yaml: maven-builder + Execute Maven3 builder + + :arg str name: Name of maven installation from the configuration + :arg str pom: Location of pom.xml (default 'pom.xml') + :arg str goals: Goals to execute + :arg str maven-opts: Additional options for maven (optional) + + Requires the Jenkins `Artifactory Plugin + `_ + allows your build jobs to deploy artifacts automatically to Artifactory. + + Example: + + .. literalinclude:: /../../tests/builders/fixtures/maven-builder001.yaml + :language: yaml + """ + maven = XML.SubElement(xml_parent, 'org.jfrog.hudson.maven3.Maven3Builder') + + required = { + 'mavenName': 'name', + 'goals': 'goals', + } + + for key in required: + try: + XML.SubElement(maven, key).text = data[required[key]] + except KeyError: + raise MissingAttributeError(required[key]) + + XML.SubElement(maven, 'rootPom').text = data.get('pom', 'pom.xml') + XML.SubElement(maven, 'mavenOpts').text = data.get('maven-opts', '') + + def maven_target(parser, xml_parent, data): """yaml: maven-target Execute top-level Maven targets diff --git a/setup.cfg b/setup.cfg index 77a153034..b3550d786 100644 --- a/setup.cfg +++ b/setup.cfg @@ -62,6 +62,7 @@ jenkins_jobs.builders = groovy=jenkins_jobs.modules.builders:groovy inject=jenkins_jobs.modules.builders:inject managed-script=jenkins_jobs.modules.builders:managed_script + maven-builder=jenkins_jobs.modules.builders:maven_builder maven-target=jenkins_jobs.modules.builders:maven_target msbuild=jenkins_jobs.modules.builders:msbuild multijob=jenkins_jobs.modules.builders:multijob diff --git a/tests/builders/fixtures/maven-builder001.xml b/tests/builders/fixtures/maven-builder001.xml new file mode 100644 index 000000000..ec96740a0 --- /dev/null +++ b/tests/builders/fixtures/maven-builder001.xml @@ -0,0 +1,11 @@ + + + + + mvn3 + clean install + modules/pom.xml + + + + diff --git a/tests/builders/fixtures/maven-builder001.yaml b/tests/builders/fixtures/maven-builder001.yaml new file mode 100644 index 000000000..a8cc81fbd --- /dev/null +++ b/tests/builders/fixtures/maven-builder001.yaml @@ -0,0 +1,5 @@ +builders: + - maven-builder: + name: mvn3 + pom: modules/pom.xml + goals: clean install