api - 使用 Groovy Jenkins API 更新 Jenkins 作业

标签 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));
}

最佳答案

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

关于api - 使用 Groovy Jenkins API 更新 Jenkins 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31272288/

相关文章:

api - 如何在 REST API 中返回资源计数?

ruby-on-rails - 如何用 Grape 返回空响应?

javascript - 使用 JavaScript 的云 API(亚马逊、Azure)

python - json对象作为获取参数

python - 如何在多进程系统中实现锁?

grails - 将多个选定的下拉值保存到Grails中的单个列中

java - 是否有通过 "with"-function 进行对象构造的更常规替代方案

java - Groovy + JPA + Spring 不工作

jenkins - 带有 Bitbucket 分支插件的多分支管道的 DSL 种子作业抑制分支的自动构建

git - Jenkins Git 用户内容插件