summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Laxalde <denis.laxalde@logilab.fr>2015-11-30 09:22:47 +0100
committerDenis Laxalde <denis.laxalde@logilab.fr>2015-12-02 08:42:26 +0100
commit2de4ba8a8129365991fcabcc16ca8e91b08ed8e1 (patch)
tree6741c25e3325a68e4e0f88427224c7b1709d0f6f
parent440cc0d12f20ea5dbe28a49dd3cca13968711229 (diff)
downloadpython-jenkins-job-builder-2de4ba8a8129365991fcabcc16ca8e91b08ed8e1.tar.gz
python-jenkins-job-builder-2de4ba8a8129365991fcabcc16ca8e91b08ed8e1.tar.xz
python-jenkins-job-builder-2de4ba8a8129365991fcabcc16ca8e91b08ed8e1.zip
Add support for "tox" builder
This builder uses the ShiningPanda plugin. It is implemented as a "tox" builder independent of the "shining-panda" one since the latter defines "common" arguments (such as `nature` or `command`) that do not apply to this tox builder. Change-Id: I99c1fdad392d41deb9c8fdd5c3617bb10860ac39
-rw-r--r--jenkins_jobs/modules/builders.py26
-rw-r--r--setup.cfg1
-rw-r--r--tests/builders/fixtures/tox001.xml9
-rw-r--r--tests/builders/fixtures/tox001.yaml3
-rw-r--r--tests/builders/fixtures/tox002.xml10
-rw-r--r--tests/builders/fixtures/tox002.yaml5
6 files changed, 54 insertions, 0 deletions
diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index c3c09e4a..c26ed347 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -1964,6 +1964,32 @@ def shining_panda(parser, xml_parent, data):
XML.SubElement(t, 'ignoreExitCode').text = str(ignore_exit_code).lower()
+def tox(parser, xml_parent, data):
+ """yaml: tox
+ Use tox to build a multi-configuration project. Requires the Jenkins
+ :jenkins-wiki:`ShiningPanda plugin <ShiningPanda+Plugin>`.
+
+ :arg str ini: The TOX configuration file path (default: tox.ini)
+ :arg bool recreate: If true, create a new environment each time (default:
+ false)
+ :arg str toxenv-pattern: The pattern used to build the TOXENV environment
+ variable. (optional)
+
+ Example:
+
+ .. literalinclude:: /../../tests/builders/fixtures/tox001.yaml
+ :language: yaml
+ """
+ pluginelement = 'jenkins.plugins.shiningpanda.builders.ToxBuilder'
+ t = XML.SubElement(xml_parent, pluginelement)
+ XML.SubElement(t, 'toxIni').text = data.get('ini', 'tox.ini')
+ XML.SubElement(t, 'recreate').text = str(
+ data.get('recreate', False)).lower()
+ pattern = data.get('toxenv-pattern')
+ if pattern:
+ XML.SubElement(t, 'toxenvPattern').text = pattern
+
+
def managed_script(parser, xml_parent, data):
"""yaml: managed-script
This step allows to reference and execute a centrally managed
diff --git a/setup.cfg b/setup.cfg
index 8a0f60c3..7c1a915c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -86,6 +86,7 @@ jenkins_jobs.builders =
sonatype-clm=jenkins_jobs.modules.builders:sonatype_clm
ssh-builder=jenkins_jobs.modules.builders:ssh_builder
system-groovy=jenkins_jobs.modules.builders:system_groovy
+ tox=jenkins_jobs.modules.builders:tox
trigger-builds=jenkins_jobs.modules.builders:trigger_builds
trigger-remote=jenkins_jobs.modules.builders:trigger_remote
jenkins_jobs.reporters =
diff --git a/tests/builders/fixtures/tox001.xml b/tests/builders/fixtures/tox001.xml
new file mode 100644
index 00000000..1456396a
--- /dev/null
+++ b/tests/builders/fixtures/tox001.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <jenkins.plugins.shiningpanda.builders.ToxBuilder>
+ <toxIni>tox.ini</toxIni>
+ <recreate>true</recreate>
+ </jenkins.plugins.shiningpanda.builders.ToxBuilder>
+ </builders>
+</project>
diff --git a/tests/builders/fixtures/tox001.yaml b/tests/builders/fixtures/tox001.yaml
new file mode 100644
index 00000000..4dfead28
--- /dev/null
+++ b/tests/builders/fixtures/tox001.yaml
@@ -0,0 +1,3 @@
+builders:
+ - tox:
+ recreate: True
diff --git a/tests/builders/fixtures/tox002.xml b/tests/builders/fixtures/tox002.xml
new file mode 100644
index 00000000..26cb9291
--- /dev/null
+++ b/tests/builders/fixtures/tox002.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+ <builders>
+ <jenkins.plugins.shiningpanda.builders.ToxBuilder>
+ <toxIni>foo.conf</toxIni>
+ <recreate>false</recreate>
+ <toxenvPattern>TOX_ENV</toxenvPattern>
+ </jenkins.plugins.shiningpanda.builders.ToxBuilder>
+ </builders>
+</project>
diff --git a/tests/builders/fixtures/tox002.yaml b/tests/builders/fixtures/tox002.yaml
new file mode 100644
index 00000000..8376f440
--- /dev/null
+++ b/tests/builders/fixtures/tox002.yaml
@@ -0,0 +1,5 @@
+builders:
+ - tox:
+ ini: "foo.conf"
+ toxenv-pattern: TOX_ENV
+