如何通过Groovy中的Jenkins API执行jenkins作业保存事件?

时间:2016-08-04 16:40:11

标签: jenkins groovy jenkins-plugins jenkins-job-dsl

我使用ez-template创建模板并根据该模板创建其他作业。但是,显然,只有在手动单击“保存”或“应用”按钮时才会应用模板。我使用了以下Jenkins Job DSL代码来尝试实现此目的:

job("job_name") {
  properties {
    templateImplementationProperty {
      exclusions(['ez-templates', 'job-params', 'disabled', 'description'])
      syncAssignedLabel(true)
      syncBuildTriggers(true)
      syncDescription(false)
      syncDisabled(false)
      syncMatrixAxis(true)
      syncOwnership(true)
      syncScm(true)
      syncSecurity(true)
      templateJobName('template')
    }
  }
}

这可以很好地为该作业创建XML,但它永远不会被应用/保存/提交。如何通过Jenkins Job DSL API实现此功能?

2 个答案:

答案 0 :(得分:1)

Job DSL使用两种Jenkins API方法来创建或更新作业Jenkins#createProjectFromXML(...)source)和AbstractItem#updateByXml(...)source)。第一种方法导致ItemListener#onCreate(...)事件,第二种方法导致SavableListener#onChange(...)事件。

EZ模板插件仅对ItemListener#onUpdated(...)source)做出反应。

如果您使用的是Job DSL,则不一定需要EZ模板插件,因为Job DSL提供了自己的模板机制,请参阅https://jenkinsci.github.io/job-dsl-plugin/#path/job-using

job('job_name') {
  using('template')
}

如果您仍想使用EZ模板插件,我建议提交EZ模板插件的功能请求,以便对上述两个事件做出反应。

链接API文档:

答案 1 :(得分:0)

ez-templates 1.3.0

中改进了此行为