Jenkins 使用groovy变量触发参数化构建

Jenkins 使用groovy变量触发参数化构建,jenkins,groovy,jenkins-plugins,jenkins-pipeline,Jenkins,Groovy,Jenkins Plugins,Jenkins Pipeline,我有一份Jenkins Freestyle的工作,在构建区域有一个系统groovy脚本。在执行脚本之后,我想触发一个管道作业。管道作业需要一个在groovy scipt中定义的变量 if(condition1){ var = 'String1' }else{ var = 'String2' } 但我需要在“触发其他项目上的参数化构建”选项的“构建后操作”步骤中访问变量var,以触发管道,并将var作为参数。这可能吗?是的,可能。您可以简单地将变量作为键值对写入属性文件,并通过从

我有一份Jenkins Freestyle的工作,在构建区域有一个系统groovy脚本。在执行脚本之后,我想触发一个管道作业。管道作业需要一个在groovy scipt中定义的变量

if(condition1){
    var = 'String1'
}else{
    var = 'String2'
}

但我需要在“触发其他项目上的参数化构建”选项的“构建后操作”步骤中访问变量
var
,以触发管道,并将
var
作为参数。这可能吗?

是的,可能。您可以简单地将变量作为键值对写入属性文件,并通过从属性文件中指定
参数将其加载到生成后操作中

您可以这样保存属性文件

def fw = new OutputStreamWriter(new FileOutputStream("params.properties",true), 'UTF-8')
def props = new Properties()
props.setProperty('TESTPARAM', var)
props.store(fileWriter, null)
fw.close()

我用以下方法解决了我的问题:

在构建之前,我定义了一个参数来使用参数化触发器插件。在我的系统groovy脚本中,我用

def newMailParameter = new StringParameterValue('MAIL_PARAM', mailsFromWS)
build.replaceAction(new ParametersAction(newMailParameter))

现在我可以触发下一个作业,并在其中使用参数
MAIL\u PARAM

Ahh ok。我试过了,但遇到了一些问题,所以请保存属性文件。我使用
Properties props=newproperties()
props.setProperty('TESTPARAM',var)
保存变量。使用
println props.getProperty('TESTPARAM')
我可以读取它,但是我没有文件可以提供给我的触发器插件。好吧,你必须使用
props.store(…)
编辑我的答案并举例说明(未测试)mhm我总是获取
java.io.FileNotFoundException:C:\Jenkins\u Slave\workspace\tmp\tmp2\tmp3\test.properties(系统找不到指定的路径)
。但是路径是正确的,并且带有
C:/Jenkins\u Slave/workspace/tmp/tmp2/tmp3/test.properties
?或者只使用相对路径(答案再次编辑)