该插件的网站说,您可以创建一个常规脚本来运行以确定参数列表。
怎么解决呢?指示什么也没说。
variable bindings
。如何使用?我必须深入研究源代码才能找到这些问题的答案,所以我希望这对其他人有帮助。
1.脚本在什么情况下运行?
该脚本在groovy.lang.GroovyShell中运行。该类当前来自Groovy 1.8.5库。以下是代码摘录:
// line 419 - 443 of the ExtendedChoiceParamaterDefinition
else if(!StringUtils.isBlank(groovyScript)) {
try {
GroovyShell groovyShell = new GroovyShell();
setBindings(groovyShell, bindings);
Object groovyValue = groovyShell.evaluate(groovyScript);
String processedGroovyValue = processGroovyValue(isDefault, groovyValue);
return processedGroovyValue;
}
catch(Exception e) {
}
}
else if(!StringUtils.isBlank(groovyScriptFile)) {
try {
GroovyShell groovyShell = new GroovyShell();
setBindings(groovyShell, bindings);
groovyScript = Util.loadFile(new File(groovyScriptFile));
Object groovyValue = groovyShell.evaluate(groovyScript);
String processedGroovyValue = processGroovyValue(isDefault, groovyValue);
return processedGroovyValue;
}
catch(Exception e) {
}
}
2.我应该从脚本中返回什么?
如上面的代码所示,脚本应返回一个字符串,该字符串带有您在参数或String []数组中指定的任何定界符。这是处理脚本返回的值的函数的片段:
// line 450 - 465 of ExtendedChoiceParameterDefinition
private String processGroovyValue(boolean isDefault, Object groovyValue) {
String value = null;
if(groovyValue instanceof String[]) {
String[] groovyValues = (String[])groovyValue;
if(!isDefault) {
value = StringUtils.join((String[])groovyValue, multiSelectDelimiter);
}
else if(groovyValues.length > 0) {
value = groovyValues[0];
}
}
else if(groovyValue instanceof String) {
value = (String)groovyValue;
}
return value;
}
3.脚本的cwd是哪个目录? 是环境变量WORKSPACE吗?
有关系吗?您可以使用以下命令从脚本内访问环境变量WORKSPACE。
Map<String, String> props = System.getenv();
def currentDir = props.get('WORKSPACE');
4.还有一个额外的字段,称为变量绑定。 如何使用?
这是属性文件格式的键=值文件。这些名称然后可以在groovy脚本中解析。
e.g.
key1=foo
prop2=bar
如何在Jenkins管道Groovy脚本中访问“Maven元数据插件”提供的参数值? 我创建了一个带有两个参数的作业: 管道Groovy脚本: 虽然SomeStr的值打印正确,但上述尝试都不能用于SomeArtifact属性。我在有Groovy沙盒和没有Groovy沙盒的情况下都尝试过,但是没有成功。 版本: Jenkins 2.14, Maven Metadata Plugin for Jenk
问题内容: 扩展选择参数插件很棒,我在通过UI https://wiki.jenkins- ci.org/display/JENKINS/Extended+Choice+Parameter+plugin 配置的作业中使用它 但是,我正在努力使其在样式管道脚本中运行。由于Jenkins管道语法生成器创建了以下代码段,因此扩展选择参数插件似乎尚未与管道脚本完全兼容: 如果我手动创建参数,则会得到与ht
我想在詹金斯中强制执行以下场景: 我有工作A和工作B 我想在执行作业B时禁用作业A,在执行作业B后,我想再次启用作业A。 为了启用/禁用作业A,我使用了Groovy插件:Groovy插件 Groovy插件提供了两种可能性:执行Groovy脚本和执行系统Groovy脚本。 在开始执行作业B时,我添加了以下代码片段: 执行工作B后: 当我运行作业B时,它失败了,出现以下异常: 当我运行作业B时,它失败
在 Jenkins 中,我尝试使用 Groovy 脚本将参数传递到构建管道的下游作业中。在我的第一份工作中,我添加了一个构建步骤“执行 Groovy 脚本”,并将内容添加到 Groovy 命令中: 我得到输出: 我已经在我的机器上安装了Groovy 1.5.8,我的Jenkins版本是1.519。我在这里做错了什么。
问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题