diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index b446d5c97..b66bec5cf 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -1970,6 +1970,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/tests/builders/fixtures/tox001.xml b/tests/builders/fixtures/tox001.xml
new file mode 100644
index 000000000..1456396a3
--- /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 000000000..4dfead283
--- /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 000000000..26cb9291f
--- /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 000000000..8376f440a
--- /dev/null
+++ b/tests/builders/fixtures/tox002.yaml
@@ -0,0 +1,5 @@
+builders:
+  - tox:
+      ini: "foo.conf"
+      toxenv-pattern: TOX_ENV
+