将变量传递给 scriptText 中的 JobDsl 种子作业(Jenkins)?

Pass variable to JobDsl seed job (Jenkins) in scriptText?

我正在做一个项目,我必须使用 JCasC(配置为代码插件)配置 jenkins。 我必须创建一个作业,但我无法在脚本中传递变量。

我的代码:

      freeStyleJob("SEED") {
        parameters {
          stringParam("MY_PARAMETER", "defaultValue", "A parameter")
        }

        steps {
          jobDsl {
            scriptText('''
            job("seedJOB") {
              displayName('${MY_PARAMETER}') // don't work
              description("${MY_PARAMETER}") // don't work
            //description("$MY_PARAMETER")   // don't work
            //description('$MY_PARAMETER')   // don't work
            // i tried to use triple full quotes instead of triple single quote but it's not working...

              ... here the job...
            '''.stripIndent())
          }
        }

编辑:最佳解决方案:

我正在用“””引号编写 groovy 代码,所以如果我想计算变量:我不必输入 ${} 只需写下您的变量名称: 有了解决办法:

      freeStyleJob("SEED") {
        parameters {
          stringParam("MY_PARAMETER", "defaultValue", "A parameter")
        }

        steps {
          jobDsl {
            scriptText('''
            job("seedJOB") {
              displayName('MY_PARAMETER) // solution

              ... here the job...
            '''.stripIndent())
          }
        }

简单!

可以将它写入文件吗?你会在你的步骤中得到类似的东西:

steps {
  shell('echo $DISPLAY_NAME > display_name.txt')
  jobDsl {
    scriptText('''
      job("seedjob") {
        String jobname = readFileFromWorkspace('display_name.txt').trim()
        displayName(jobname)
      }
    '''.stripIndent())
  }
}

您也可以使用 .properties 文件来更恰当地完成它。