我有一个参数化的构建,如下所示:
然后我创建了一个groovy脚本来创建一个变量URL_TOMCAT,其值取决于TARGET_TOMCAT参数:
即使在更新之后,我也遇到了相同的错误
import hudson.model.*
def target = build.buildVariableResolver.resolve("TARGET_TOMCAT")
def URL_TOMCAT = ""
switch(target ) {
case "tomcat1": URL_TOMCAT= "http://localhost:8080/manager/text"
break
case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text"
break
}
然后我想获取URL_TOMCAT值并调整maven构建步骤,如下所示:
有任何想法如何解决此错误?
答案 0 :(得分:1)
在你的groovy脚本中,你需要进行一次API调用,以便将Jenkins的参数值输入你的工作区。
Import hudson.model
def targetTomcat = build.buildVariableResolver.resolve("TARGET_TOMCAT")
def URL_TOMCAT = ""
switch(targetTomcat) {
case "tomcat1": URL_TOMCAT = "http://localhost:8080/manager/text"
break
case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text"
break
}
我想指出URL_TOMCAT
变量不可用于任何其他构建阶段,它只限于常规构建步骤。如果您想将URL_TOMCAT
变量暴露给构建的其余部分,则需要以某种方式将其暴露给构建环境。我通常通过将值作为键值对写入文件并使用EnvInject Plugin
您可以将其写入groovy中的文件,如下所示:
def workspace = build.buildVariableResolver.resolve("WORKSPACE")
new File("${workspace}\\Environment.Variables").write("URL_TOMCAT=${URL_TOMCAT}")
如果您不想将其写入作业工作区,则可以跳过抓取该值并只编写特定路径。
在groovy构建步骤之后添加一个Envinject构建步骤,并在Properties File Path字段中输入包含键值对的文件的路径。您应该能够像其他构建中的任何其他环境变量一样引用URL_TOMCAT。继续使用about路径,我会使用${WORKSPACE}\Environment.Variables
作为路径。