Merge "Update ScriptTrigger plugin"

This commit is contained in:
Jenkins 2016-07-04 17:56:58 +00:00 committed by Gerrit Code Review
commit bc449aea10
12 changed files with 107 additions and 37 deletions

View File

@ -40,6 +40,7 @@ from jenkins_jobs.errors import JenkinsJobsException
from jenkins_jobs.errors import MissingAttributeError from jenkins_jobs.errors import MissingAttributeError
import jenkins_jobs.modules.base import jenkins_jobs.modules.base
from jenkins_jobs.modules import hudson_model from jenkins_jobs.modules import hudson_model
from jenkins_jobs.modules.helpers import convert_mapping_to_xml
logger = logging.getLogger(str(__name__)) logger = logging.getLogger(str(__name__))
@ -1493,35 +1494,41 @@ def script(parser, xml_parent, data):
:arg str label: Restrict where the polling should run. (default '') :arg str label: Restrict where the polling should run. (default '')
:arg str script: A shell or batch script. (default '') :arg str script: A shell or batch script. (default '')
:arg str script-file-path: A shell or batch script path. (optional) :arg str script-file-path: A shell or batch script path. (default '')
:arg str cron: cron syntax of when to run (default '') :arg str cron: cron syntax of when to run (default '')
:arg bool enable-concurrent: Enables triggering concurrent builds. :arg bool enable-concurrent: Enables triggering concurrent builds.
(default false) (default false)
:arg int exit-code: If the exit code of the script execution returns this :arg int exit-code: If the exit code of the script execution returns this
expected exit code, a build is scheduled. (default 0) expected exit code, a build is scheduled. (default 0)
Example: Full Example:
.. literalinclude:: /../../tests/triggers/fixtures/script001.yaml .. literalinclude:: /../../tests/triggers/fixtures/script-full.yaml
:language: yaml
Minimal Example:
.. literalinclude:: /../../tests/triggers/fixtures/script-minimal.yaml
:language: yaml
""" """
data = data if data else {}
st = XML.SubElement( st = XML.SubElement(
xml_parent, xml_parent,
'org.jenkinsci.plugins.scripttrigger.ScriptTrigger' 'org.jenkinsci.plugins.scripttrigger.ScriptTrigger'
) )
st.set('plugin', 'scripttrigger')
label = data.get('label') label = data.get('label')
mappings = [
('script', 'script', ''),
('script-file-path', 'scriptFilePath', ''),
('cron', 'spec', ''),
('enable-concurrent', 'enableConcurrentBuild', False),
('exit-code', 'exitCode', 0)
]
convert_mapping_to_xml(st, data, mappings, fail_required=True)
XML.SubElement(st, 'script').text = str(data.get('script', ''))
if 'script-file-path' in data:
XML.SubElement(st, 'scriptFilePath').text = str(
data.get('script-file-path'))
XML.SubElement(st, 'spec').text = str(data.get('cron', ''))
XML.SubElement(st, 'labelRestriction').text = str(bool(label)).lower() XML.SubElement(st, 'labelRestriction').text = str(bool(label)).lower()
if label: if label:
XML.SubElement(st, 'triggerLabel').text = label XML.SubElement(st, 'triggerLabel').text = label
XML.SubElement(st, 'enableConcurrentBuild').text = str(
data.get('enable-concurrent', False)).lower()
XML.SubElement(st, 'exitCode').text = str(data.get('exit-code', 0))
def groovy_script(parser, xml_parent, data): def groovy_script(parser, xml_parent, data):
@ -1538,35 +1545,42 @@ def groovy_script(parser, xml_parent, data):
evaluated to true, a build is scheduled. (default '') evaluated to true, a build is scheduled. (default '')
:arg str script-file-path: Groovy script path. (default '') :arg str script-file-path: Groovy script path. (default '')
:arg str property-file-path: Property file path. All properties will be set :arg str property-file-path: Property file path. All properties will be set
as parameters for the triggered build. (optional) as parameters for the triggered build. (default '')
:arg bool enable-concurrent: Enable concurrent build. (default false) :arg bool enable-concurrent: Enable concurrent build. (default false)
:arg str label: Restrict where the polling should run. (default '') :arg str label: Restrict where the polling should run. (default '')
:arg str cron: cron syntax of when to run (default '') :arg str cron: cron syntax of when to run (default '')
Example: Full Example:
.. literalinclude:: /../../tests/triggers/fixtures/groovy-script.yaml .. literalinclude:: /../../tests/triggers/fixtures/groovy-script-full.yaml
:language: yaml
Minimal Example:
.. literalinclude::
/../../tests/triggers/fixtures/groovy-script-minimal.yaml
:language: yaml
""" """
gst = XML.SubElement( gst = XML.SubElement(
xml_parent, xml_parent,
'org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger' 'org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger'
) )
gst.set('plugin', 'scripttrigger')
mappings = [
('system-script', 'groovySystemScript', False),
('script', 'groovyExpression', ''),
('script-file-path', 'groovyFilePath', ''),
('property-file-path', 'propertiesFilePath', ''),
('enable-concurrent', 'enableConcurrentBuild', False),
('cron', 'spec', ''),
]
convert_mapping_to_xml(gst, data, mappings, fail_required=True)
XML.SubElement(gst, 'groovySystemScript').text = str(
data.get('system-script', False)).lower()
XML.SubElement(gst, 'groovyExpression').text = str(data.get('script', ''))
XML.SubElement(gst, 'groovyFilePath').text = str(data.get(
'script-file-path', ''))
if 'property-file-path' in data:
XML.SubElement(gst, 'propertiesFilePath').text = str(
data.get('property-file-path'))
XML.SubElement(gst, 'enableConcurrentBuild').text = str(
data.get('enable-concurrent', False)).lower()
label = data.get('label') label = data.get('label')
XML.SubElement(gst, 'labelRestriction').text = str(bool(label)).lower() XML.SubElement(gst, 'labelRestriction').text = str(bool(label)).lower()
if label: if label:
XML.SubElement(gst, 'triggerLabel').text = label XML.SubElement(gst, 'triggerLabel').text = label
XML.SubElement(gst, 'spec').text = str(data.get('cron', ''))
def rabbitmq(parser, xml_parent, data): def rabbitmq(parser, xml_parent, data):

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger plugin="scripttrigger">
<groovySystemScript>true</groovySystemScript>
<groovyExpression>groovy-content</groovyExpression>
<groovyFilePath>path/to/filename</groovyFilePath>
<propertiesFilePath>/path/to/properties/file</propertiesFilePath>
<enableConcurrentBuild>true</enableConcurrentBuild>
<spec>H/15 * * * *</spec>
<labelRestriction>true</labelRestriction>
<triggerLabel>master</triggerLabel>
</org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger>
</triggers>
</project>

View File

@ -0,0 +1,9 @@
triggers:
- groovy-script:
script: groovy-content
script-file-path: path/to/filename
property-file-path: /path/to/properties/file
cron: H/15 * * * *
enable-concurrent: true
label: master
system-script: true

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger plugin="scripttrigger">
<groovySystemScript>false</groovySystemScript>
<groovyExpression/>
<groovyFilePath/>
<propertiesFilePath/>
<enableConcurrentBuild>false</enableConcurrentBuild>
<spec/>
<labelRestriction>false</labelRestriction>
</org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger>
</triggers>
</project>

View File

@ -0,0 +1,2 @@
triggers:
- groovy-script

View File

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project> <project>
<triggers class="vector"> <triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger> <org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger plugin="scripttrigger">
<groovySystemScript>true</groovySystemScript> <groovySystemScript>true</groovySystemScript>
<groovyExpression/> <groovyExpression/>
<groovyFilePath>path/to/filename</groovyFilePath> <groovyFilePath>path/to/filename</groovyFilePath>
<propertiesFilePath/>
<enableConcurrentBuild>true</enableConcurrentBuild> <enableConcurrentBuild>true</enableConcurrentBuild>
<spec>H/15 * * * *</spec>
<labelRestriction>true</labelRestriction> <labelRestriction>true</labelRestriction>
<triggerLabel>master</triggerLabel> <triggerLabel>master</triggerLabel>
<spec>H/15 * * * *</spec>
</org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger> </org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger>
</triggers> </triggers>
</project> </project>

View File

@ -5,4 +5,3 @@ triggers:
enable-concurrent: true enable-concurrent: true
label: master label: master
system-script: true system-script: true

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project> <project>
<triggers class="vector"> <triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.ScriptTrigger> <org.jenkinsci.plugins.scripttrigger.ScriptTrigger plugin="scripttrigger">
<script>exit 0</script> <script>exit 0</script>
<scriptFilePath>$WORKSPACE/scripts</scriptFilePath> <scriptFilePath>$WORKSPACE/scripts</scriptFilePath>
<spec>H/15 * * * *</spec> <spec>H/15 * * * *</spec>
<enableConcurrentBuild>true</enableConcurrentBuild>
<exitCode>0</exitCode>
<labelRestriction>true</labelRestriction> <labelRestriction>true</labelRestriction>
<triggerLabel>master</triggerLabel> <triggerLabel>master</triggerLabel>
<enableConcurrentBuild>false</enableConcurrentBuild>
<exitCode>0</exitCode>
</org.jenkinsci.plugins.scripttrigger.ScriptTrigger> </org.jenkinsci.plugins.scripttrigger.ScriptTrigger>
</triggers> </triggers>
</project> </project>

View File

@ -3,7 +3,7 @@ triggers:
script: 'exit 0' script: 'exit 0'
script-file-path: '$WORKSPACE/scripts' script-file-path: '$WORKSPACE/scripts'
cron: 'H/15 * * * *' cron: 'H/15 * * * *'
enable-concurrent: False enable-concurrent: true
label: master label: master
exit-code: 0 exit-code: 0

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<project>
<triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.ScriptTrigger plugin="scripttrigger">
<script/>
<scriptFilePath/>
<spec/>
<enableConcurrentBuild>false</enableConcurrentBuild>
<exitCode>0</exitCode>
<labelRestriction>false</labelRestriction>
</org.jenkinsci.plugins.scripttrigger.ScriptTrigger>
</triggers>
</project>

View File

@ -0,0 +1,2 @@
triggers:
- script

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project> <project>
<triggers class="vector"> <triggers class="vector">
<org.jenkinsci.plugins.scripttrigger.ScriptTrigger> <org.jenkinsci.plugins.scripttrigger.ScriptTrigger plugin="scripttrigger">
<script>exit 0</script> <script>exit 0</script>
<scriptFilePath/>
<spec>H/15 * * * *</spec> <spec>H/15 * * * *</spec>
<labelRestriction>true</labelRestriction>
<triggerLabel>master</triggerLabel>
<enableConcurrentBuild>false</enableConcurrentBuild> <enableConcurrentBuild>false</enableConcurrentBuild>
<exitCode>0</exitCode> <exitCode>0</exitCode>
<labelRestriction>true</labelRestriction>
<triggerLabel>master</triggerLabel>
</org.jenkinsci.plugins.scripttrigger.ScriptTrigger> </org.jenkinsci.plugins.scripttrigger.ScriptTrigger>
</triggers> </triggers>
</project> </project>