首页 > 解决方案 > 在scriptText中将变量传递给JobDsl种子作业(Jenkins)?

问题描述

我正在做一个项目,我必须使用 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())
          }
        }

简单的!

标签: jenkinsjenkins-job-dsljcasc

解决方案


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

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

您还可以使用 .properties 文件更正确地执行此操作。


推荐阅读