使用 Groovy Jenkins API 更新 Jenkins 作业

Updating a Jenkins job with the Groovy Jenkins API

我正在考虑使用 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));
}

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