diff --git a/jenkins_jobs/modules/builders.py b/jenkins_jobs/modules/builders.py index 2b5a5eeb3..c576833de 100644 --- a/jenkins_jobs/modules/builders.py +++ b/jenkins_jobs/modules/builders.py @@ -1870,6 +1870,29 @@ def github_notifier(parser, xml_parent, data): 'com.cloudbees.jenkins.GitHubSetCommitStatusBuilder') +def ssh_builder(parser, xml_parent, data): + """yaml: ssh-builder + Executes command on remote host + Requires the Jenkins `SSH plugin. + `_ + + :arg str ssh-user-ip: user@ip:ssh_port of machine that was defined + in jenkins according to SSH plugin instructions + :arg str command: command to run on remote server + + Example: + + .. literalinclude:: /../../tests/builders/fixtures/ssh-builder.yaml + """ + builder = XML.SubElement( + xml_parent, 'org.jvnet.hudson.plugins.SSHBuilder') + try: + XML.SubElement(builder, 'siteName').text = str(data['ssh-user-ip']) + XML.SubElement(builder, 'command').text = str(data['command']) + except KeyError as e: + raise MissingAttributeError("'%s'" % e.args[0]) + + def sonar(parser, xml_parent, data): """yaml: sonar Invoke standalone Sonar analysis. diff --git a/setup.cfg b/setup.cfg index caba307a5..628eb8e86 100644 --- a/setup.cfg +++ b/setup.cfg @@ -73,6 +73,7 @@ jenkins_jobs.builders = shining-panda=jenkins_jobs.modules.builders:shining_panda sonar=jenkins_jobs.modules.builders:sonar sonatype-clm=jenkins_jobs.modules.builders:sonatype_clm + ssh-builder=jenkins_jobs.modules.builders:ssh_builder system-groovy=jenkins_jobs.modules.builders:system_groovy trigger-builds=jenkins_jobs.modules.builders:trigger_builds jenkins_jobs.reporters = diff --git a/tests/builders/fixtures/ssh-builder.xml b/tests/builders/fixtures/ssh-builder.xml new file mode 100644 index 000000000..fa88cc45f --- /dev/null +++ b/tests/builders/fixtures/ssh-builder.xml @@ -0,0 +1,9 @@ + + + + + foo@bar:22 + echo foo + + + diff --git a/tests/builders/fixtures/ssh-builder.yaml b/tests/builders/fixtures/ssh-builder.yaml new file mode 100644 index 000000000..4f33897b7 --- /dev/null +++ b/tests/builders/fixtures/ssh-builder.yaml @@ -0,0 +1,4 @@ +builders: + - ssh-builder: + ssh-user-ip: foo@bar:22 + command: echo foo \ No newline at end of file