使用Groovy Jenkins API更新Jenkins作业

Sha*_*non 5 api groovy jenkins

我正在使用Groovy脚本控制台在Jenkins上创建和更新作业。使用此处记录的API

http://javadoc.jenkins-ci.org/

我发现了如何通过使用创建工作 createProjectFromXML(String name, InputStream xml)

但是,如果作业已经存在,则此方法将失败。如何使用新的xml更新现有作业?

更新资料

基于@ogondza的回答,我使用了以下内容来创建然后更新作业

import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*
import java.io.*
import java.nio.charset.StandardCharsets
import javax.xml.transform.stream.*

config = """......My config.xml......"""

InputStream stream = new ByteArrayInputStream(config.getBytes(StandardCharsets.UTF_8));

job = Jenkins.getInstance().getItemByFullName("job_name", AbstractItem)

if (job == null) {
  println "Constructing job"
  Jenkins.getInstance().createProjectFromXML("job_name", stream);
}
else {
  println "Updating job"
  job.updateByXml(new StreamSource(stream));
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*dža 3

使用AbstractItem#updateByXml进行更新。另请注意,您可以使用 REST API 和 Jenkins CLI 通过 XML 创建/更新作业。