[英]Access Jenkins Parameter in Groovy
我如何访问 Groovy 中的参数值? 这似乎是一个微不足道的问题,但却让我痛苦了好几个小时。
dslFactory.job(name) {
parameters {
activeChoiceParam('ENTERPRISESERVER') {
description('')
choiceType('SINGLE_SELECT')
groovyScript {
script("""[
"vws-10-persmft",
"vws-10-persmft2",
"vws-10-persmft3",
// "vws-10-persmfe",
// "vws-10-persmfe2",
"vts-10-perse9",
//"vts-10-perse8",
//"vts-10-perse7",
"vws-10-perskmt5"
]""")
}
}
}
steps {
def targetServer = '${ENTERPRISESERVER}'
powerShell """
Write-Output 'Target Server: $targetServer'
Invoke-Command -ComputerName '$targetServer' -ScriptBlock {
Restart-Service -Name 'SEEShutdown';
Restart-Service -Name 'SEEMonitor';
};
"""
}
}
当我运行该代码时,出现以下错误:
+ ... Invoke-Command -ComputerName '${ENTERPRISESERVER}' -Scrip ...
所以出于某种原因,Groovy 没有解析${ENTERPRISESERVER}
。 我试过使用$ENTERPRISESERVER
,它不会编译:
de.akdb.pers.ci.JobScriptsSpec > test script bootstrap.groovy FAILED
org.spockframework.runtime.UnallowedExceptionThrownError at JobScriptsSpec.groovy:24
Caused by: javaposse.jobdsl.dsl.DslScriptException at JobScriptsSpec.groovy:21
Caused by: groovy.lang.MissingPropertyException at JobScriptsSpec.groovy:21
我究竟做错了什么?
我还尝试了以下问题的解决方案:
Jenkins Job DSL:在作业步骤中使用 groovyScript 中的参数
尝试以下操作之一。
def targetServer = "${ENTERPRISESERVER}"
def targetServer = params.ENTERPRISESERVER
据我了解,ENTERPRISESERVER 是为您要创建的作业定义的,它在创建该作业的 dsl 代码中无效。
这意味着 ENTERPRISESERVER 在 PowerShell 脚本中是直接可见和可用的。
我从未使用过 PowerShell,但在 BASH 中可以通过“$ENTERPRISESERVER”访问它。
dsl 代码中的 shell 脚本应使用“\$ENTERPRISESERVER”转义 param/var 取消引用。
试试!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.