Jenkins插件:以编程方式创建新作业

时间:2013-01-14 16:11:43

标签: jenkins hudson jenkins-plugins

如何在插件中创建新的Jenkins作业?

我有一个Jenkins插件,可以监听消息队列,当消息到达时,会触发一个新事件来创建一个新作业(或者开始运行)。

我正在寻找类似的东西:

Job myJob = new Job(...);

我知道我可以使用REST API或CLI,但由于我在插件中,我会使用java内部解决方案。

2 个答案:

答案 0 :(得分:6)

使用Job DSL Plugin

从插件页面:

Jenkins是一个用于管理构建的精彩系统,人们喜欢使用其UI来配置作业。不幸的是,随着工作岗位数量的增加,维护它们变得乏味,并且使用UI的范例也会崩溃。此外,在这种情况下的常见模式是复制作业以创建新作业,这些“孩子”习惯偏离其原始“模板”,因此难以保持这些作业之间的一致性。
  Jenkins job-dsl-plugin尝试通过允许在程序化表单中使用与生成的作业同步的模板的绝对最小值来定义作业来解决此问题。目标是让您的项目能够定义他们想要与项目相关的所有作业,声明他们对作业的意图,将常用内容留给先前定义的模板或隐藏在DSL后面的模板。

答案 1 :(得分:3)

您只需执行以下操作即可创建新的hudson / jenkins作业:

FreeStyleProject proj = Hudson.getInstance().createProject(FreeStyleProject.class, NAMEOFJOB);

如果您希望能够处理更新(并且您已经拥有config.xml):

import hudson.model.AbstractItem
import javax.xml.transform.stream.StreamSource
import jenkins.model.Jenkins

final jenkins = Jenkins.getInstance()

final itemName = 'name-of-job-to-be-created-or-updated'
final configXml = new FileInputStream('/path/to/config.xml')
final item = jenkins.getItemByFullName(itemName, AbstractItem.class)

if (item != null) {
  item.updateByXml(new StreamSource(configXml))
} else {
  jenkins.createProjectFromXML(itemName, configXml)
}

在执行此操作之前,请确保您拥有核心.jar文件。