diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py
index 2b5a5eeb3..9be624bca 100644
--- a/jenkins_jobs/modules/builders.py
+++ b/jenkins_jobs/modules/builders.py
@@ -1949,3 +1949,42 @@ def sonatype_clm(parser, xml_parent, data):
         data.get('module-excludes', '')).lower()
     XML.SubElement(path_config, 'scanProperties').text = str(
         data.get('advanced-options', '')).lower()
+
+
+def beaker(parser, xml_parent, data):
+    """yaml: beaker
+    Execute a beaker build step. Requires the Jenkins :jenkins-wiki:`Beaker
+    Builder Plugin <Beaker+Builder+Plugin>`.
+
+    :arg str content: Run job from string
+                      (Alternative: you can choose a path instead)
+    :arg str path: Run job from file
+                   (Alternative: you can choose a content instead)
+    :arg bool download-logs: Download Beaker log files (default false)
+
+    Example:
+
+    .. literalinclude:: ../../tests/builders/fixtures/beaker-path.yaml
+       :language: yaml
+
+    .. literalinclude:: ../../tests/builders/fixtures/beaker-content.yaml
+       :language: yaml
+    """
+    beaker = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.beakerbuilder.'
+                                        'BeakerBuilder')
+    jobSource = XML.SubElement(beaker, 'jobSource')
+    if 'content' in data and 'path' in data:
+        raise JenkinsJobsException("Use just one of 'content' or 'path'")
+    elif 'content' in data:
+        jobSourceClass = "org.jenkinsci.plugins.beakerbuilder.StringJobSource"
+        jobSource.set('class', jobSourceClass)
+        XML.SubElement(jobSource, 'jobContent').text = data['content']
+    elif 'path' in data:
+        jobSourceClass = "org.jenkinsci.plugins.beakerbuilder.FileJobSource"
+        jobSource.set('class', jobSourceClass)
+        XML.SubElement(jobSource, 'jobPath').text = data['path']
+    else:
+        raise JenkinsJobsException("Use one of 'content' or 'path'")
+
+    XML.SubElement(beaker, 'downloadFiles').text = str(data.get(
+        'download-logs', False)).lower()
diff --git a/setup.cfg b/setup.cfg
index caba307a5..bc5e396cf 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -47,6 +47,7 @@ jenkins_jobs.builders =
     ant=jenkins_jobs.modules.builders:ant
     artifact-resolver=jenkins_jobs.modules.builders:artifact_resolver
     batch=jenkins_jobs.modules.builders:batch
+    beaker=jenkins_jobs.modules.builders:beaker
     builders-from=jenkins_jobs.modules.builders:builders_from
     change-assembly-version=jenkins_jobs.modules.builders:change_assembly_version
     cmake=jenkins_jobs.modules.builders:cmake
diff --git a/tests/builders/fixtures/beaker-content.xml b/tests/builders/fixtures/beaker-content.xml
new file mode 100644
index 000000000..8bd3628a3
--- /dev/null
+++ b/tests/builders/fixtures/beaker-content.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+  <builders>
+    <org.jenkinsci.plugins.beakerbuilder.BeakerBuilder>
+      <jobSource class="org.jenkinsci.plugins.beakerbuilder.StringJobSource">
+        <jobContent>&lt;job group='product-QA'&gt;
+    &lt;whiteboard&gt;
+        Apache 2.2 test
+    &lt;/whiteboard&gt;
+&lt;/job&gt;
+</jobContent>
+      </jobSource>
+      <downloadFiles>false</downloadFiles>
+    </org.jenkinsci.plugins.beakerbuilder.BeakerBuilder>
+  </builders>
+</project>
diff --git a/tests/builders/fixtures/beaker-content.yaml b/tests/builders/fixtures/beaker-content.yaml
new file mode 100644
index 000000000..e8ad30079
--- /dev/null
+++ b/tests/builders/fixtures/beaker-content.yaml
@@ -0,0 +1,8 @@
+builders:
+    - beaker:
+        content: |
+            <job group='product-QA'>
+                <whiteboard>
+                    Apache 2.2 test
+                </whiteboard>
+            </job>
diff --git a/tests/builders/fixtures/beaker-path.xml b/tests/builders/fixtures/beaker-path.xml
new file mode 100644
index 000000000..608ddce34
--- /dev/null
+++ b/tests/builders/fixtures/beaker-path.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+  <builders>
+    <org.jenkinsci.plugins.beakerbuilder.BeakerBuilder>
+      <jobSource class="org.jenkinsci.plugins.beakerbuilder.FileJobSource">
+        <jobPath>test.xml</jobPath>
+      </jobSource>
+      <downloadFiles>true</downloadFiles>
+    </org.jenkinsci.plugins.beakerbuilder.BeakerBuilder>
+  </builders>
+</project>
diff --git a/tests/builders/fixtures/beaker-path.yaml b/tests/builders/fixtures/beaker-path.yaml
new file mode 100644
index 000000000..34eb749f0
--- /dev/null
+++ b/tests/builders/fixtures/beaker-path.yaml
@@ -0,0 +1,4 @@
+builders:
+    - beaker:
+        path: 'test.xml'
+        download-logs: true