我有一个使用 Inject environment variables to the build process 步骤的 Jenkins Ivy 工作。我正在编写 DSL 脚本,以便可以使用 job-dsl-plugin 插件动态创建此作业。

我为此设置了以下几行:

steps {
  envInjectBuilder {
    propertiesFilePath('/tmp/file')
  }
}

但是 steps 方法只能应用于自由式作业,而不能应用于 Ivy 作业。我在控制台输出中得到了这个:
Processing DSL script ivyJob.groovy
java.lang.IllegalStateException: steps cannot be applied for Ivy jobs

DSL 插件不支持 Ivy 工作的 EnvInject 吗?如果没有,有没有办法以编程方式执行此操作?我知道 EnvInject 与 Ivy 作业兼容,因为我可以手动创建该作业。

谢谢。

最佳答案

EnvInject 插件允许在构建生命周期的多个点注入(inject)变量。构建步骤只是一种可能性。对于 Ivy 项目类型,作业属性和包装器选项将起作用。

ivyJob('example') {
  environmentVariables {
    env('ONE', '1')
    propertiesFile('env.properties')
    keepBuildVariables(true)
  }
  wrappers {
    environmentVariables {
      env('ONE', '1')
      envs(FOO: 'bar', TEST: '123')
      propertiesFile('env.properties')
    }
  }
}

有关详细信息,请参阅作业 DSL API 查看器:
  • https://jenkinsci.github.io/job-dsl-plugin/#path/ivyJob-environmentVariables
  • https://jenkinsci.github.io/job-dsl-plugin/#path/ivyJob-wrappers-environmentVariables
  • 关于Jenkins job-dsl-plugin : how to inject environment variables to an Ivy job?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38213185/

    10-13 09:40