【问题标题】:trigger parameterized build with groovy variable使用 groovy 变量触发参数化构建
【发布时间】:2017-03-31 08:13:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: jenkins groovy jenkins-plugins jenkins-pipeline


    【解决方案1】:

    是的,这是可能的。您可以简单地将变量作为键值对写入属性文件中,然后通过指定 Parameters from properties file 将其加载到构建后操作中。

    你可以像这样保存你的属性文件

    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()
    

    【讨论】:

    • 嗯,好的。我试过了,但我遇到了一些麻烦,所以保存属性文件。我使用Properties props = new Properties()props.setProperty('TESTPARAM', var) 来保存变量。使用println props.getProperty('TESTPARAM') 我可以阅读它,但我没有文件可以提供给我的触发器插件
    • 好吧,您必须使用props.store(...)保存您的工作区中的文件
    • 用一个例子编辑了我的答案(未测试)
    • 嗯,我总是得到java.io.FileNotFoundException: C:\Jenkins_Slave\workspace\tmp\tmp2\tmp3\test.properties (The system cannot find the path specified)。但这条路绝对是对的
    • C:/Jenkins_Slave/workspace/tmp/tmp2/tmp3/test.properties ?或者只是使用相对路径(再次编辑答案)
    【解决方案2】:

    我通过以下方式解决了我的问题:

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

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

    现在我可以触发下一个作业并在其中使用我的参数MAIL_PARAM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多