Merge "Add support for 'Groovy Label Assignment Plugin'"
This commit is contained in:
commit
d91bfa7d27
@ -887,6 +887,65 @@ def slave_prerequisites(registry, xml_parent, data):
|
||||
prereqs, data, mappings, fail_required=True)
|
||||
|
||||
|
||||
def groovy_label(registry, xml_parent, data):
|
||||
"""yaml: groovy-label
|
||||
This plugin allows to use Groovy script to restrict where this project
|
||||
can be run.
|
||||
|
||||
Requires the Jenkins :jenkins-wiki:`Groovy Label Assignment Plugin
|
||||
<Groovy+Label+Assignment+plugin>`.
|
||||
|
||||
Return value from Groovy script is treated as Label Expression.
|
||||
It is treated as followings:
|
||||
|
||||
- A non-string value will be converted to a string using toString()
|
||||
- When null or blank string is returned, node restriction does not take
|
||||
effect (or is not overwritten).
|
||||
- When exception occurred or Label Expression is not parsed correctly,
|
||||
builds are canceled.
|
||||
|
||||
:arg str script: Groovy script (default '')
|
||||
:arg bool sandbox: Use Groovy Sandbox. (default false)
|
||||
If checked, run this Groovy script in a sandbox with limited abilities.
|
||||
If unchecked, and you are not a Jenkins administrator, you will need to
|
||||
wait for an administrator to approve the script
|
||||
:arg list classpath: Additional classpath entries accessible from
|
||||
the script, each of which should be an absolute local path or
|
||||
URL to a JAR file, according to "The file URI Scheme" (optional)
|
||||
|
||||
Minimal Example:
|
||||
|
||||
.. literalinclude::
|
||||
/../../tests/properties/fixtures/groovy-label-minimal.yaml
|
||||
:language: yaml
|
||||
|
||||
Full Example:
|
||||
|
||||
.. literalinclude::
|
||||
/../../tests/properties/fixtures/groovy-label-full.yaml
|
||||
:language: yaml
|
||||
"""
|
||||
sub_element = XML.SubElement(xml_parent,
|
||||
'jp.ikedam.jenkins.plugins.'
|
||||
'groovy__label__assignment.'
|
||||
'GroovyLabelAssignmentProperty')
|
||||
sub_element.set('plugin', 'groovy-label-assignment')
|
||||
security = XML.SubElement(sub_element, 'secureGroovyScript')
|
||||
security.set('plugin', 'script-security')
|
||||
mapping = [
|
||||
('script', 'script', ''),
|
||||
('sandbox', 'sandbox', False),
|
||||
]
|
||||
|
||||
helpers.convert_mapping_to_xml(
|
||||
security, data, mapping, fail_required=True)
|
||||
if data and 'classpath' in data:
|
||||
classpath = XML.SubElement(security, 'classpath')
|
||||
for value in data['classpath']:
|
||||
entry = XML.SubElement(classpath, 'entry')
|
||||
XML.SubElement(entry, 'url').text = value
|
||||
|
||||
|
||||
class Properties(jenkins_jobs.modules.base.Base):
|
||||
sequence = 20
|
||||
|
||||
|
25
tests/properties/fixtures/groovy-label-full.xml
Normal file
25
tests/properties/fixtures/groovy-label-full.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project>
|
||||
<properties>
|
||||
<jp.ikedam.jenkins.plugins.groovy__label__assignment.GroovyLabelAssignmentProperty plugin="groovy-label-assignment">
|
||||
<secureGroovyScript plugin="script-security">
|
||||
<script>$LABEL_NAME</script>
|
||||
<sandbox>true</sandbox>
|
||||
<classpath>
|
||||
<entry>
|
||||
<url>file:/minimal/absolute/path/to/file.jar</url>
|
||||
</entry>
|
||||
<entry>
|
||||
<url>file:///traditional/absolute/path/to/file.jar</url>
|
||||
</entry>
|
||||
<entry>
|
||||
<url>http://example.org/path/to/file.jar</url>
|
||||
</entry>
|
||||
<entry>
|
||||
<url>https://example.org/path/to/file.jar</url>
|
||||
</entry>
|
||||
</classpath>
|
||||
</secureGroovyScript>
|
||||
</jp.ikedam.jenkins.plugins.groovy__label__assignment.GroovyLabelAssignmentProperty>
|
||||
</properties>
|
||||
</project>
|
9
tests/properties/fixtures/groovy-label-full.yaml
Normal file
9
tests/properties/fixtures/groovy-label-full.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
properties:
|
||||
- groovy-label:
|
||||
script: "$LABEL_NAME"
|
||||
sandbox: true
|
||||
classpath:
|
||||
- "file:/minimal/absolute/path/to/file.jar"
|
||||
- "file:///traditional/absolute/path/to/file.jar"
|
||||
- "http://example.org/path/to/file.jar"
|
||||
- "https://example.org/path/to/file.jar"
|
11
tests/properties/fixtures/groovy-label-minimal.xml
Normal file
11
tests/properties/fixtures/groovy-label-minimal.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project>
|
||||
<properties>
|
||||
<jp.ikedam.jenkins.plugins.groovy__label__assignment.GroovyLabelAssignmentProperty plugin="groovy-label-assignment">
|
||||
<secureGroovyScript plugin="script-security">
|
||||
<script/>
|
||||
<sandbox>false</sandbox>
|
||||
</secureGroovyScript>
|
||||
</jp.ikedam.jenkins.plugins.groovy__label__assignment.GroovyLabelAssignmentProperty>
|
||||
</properties>
|
||||
</project>
|
2
tests/properties/fixtures/groovy-label-minimal.yaml
Normal file
2
tests/properties/fixtures/groovy-label-minimal.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
properties:
|
||||
- groovy-label
|
Loading…
Reference in New Issue
Block a user