Jenkins:如何访问参数化作业中的参数

时间:2017-03-14 17:19:53

标签: jenkins groovy

我有一个参数化的构建,如下所示:

enter image description here

然后我创建了一个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构建步骤,如下所示: enter image description here

但是我收到了这个错误: enter image description here

有任何想法如何解决此错误?

1 个答案:

答案 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作为路径。