当前位置: 首页 > 面试题库 >

使用Groovy Jenkins API更新Jenkins作业

呼延弘方
2023-03-14
问题内容

我正在使用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创建/更新作业。



 类似资料:
  • 我必须使用jenkins的api创建/更新一个jenkins作业,因为我的所有作业都使用了其他脚本也使用的参数,并且我试图将脚本集中起来,这样当我在一个地方更改它时,所做的更改就会反映在所有的脚本中。 当前,如果有人更改了脚本,他们也必须手动编辑jenkins作业的参数。 我看到了用于创建作业的远程API的示例,并且能够成功地创建测试作业,但是除了删除并重新创建一个现有作业之外,我如何编辑它(这不

  • 我有一份詹金斯的工作,计划在特定的时间进行。我想以编程方式修改该计时。 我试图通过安装Schedule build插件并使用。但这将使作业处于保持java线程的静默期。我希望在不将其置于静默期的情况下修改计划条目。

  • 我正在用一些初始数据绘制一个条形图,然后在单击按钮时尝试更新。我收到错误“未捕获的类型错误:无法读取未定义的属性'长度'”。单击更新后,将发生错误。如何解决此问题并启用更新功能以绘制新的条形图? D3代码:

  • 问题内容: 我正在使用Jenkins 1.461,使用SVN轮询时遇到问题。我的存储库URL的格式为svn + ssh:// __ ***。我已将Jenkins配置为每5分钟轮询一次更改。发生的情况是每5分钟检测到更改: 从2012年5月2日开始8:26:24 PM在2012年5月2日8:26:25 PM收到XXXXXXXXX的SCM轮询请求svn + ssh:// XXXX / svn / XX

  • 如何在不丢失任何作业或配置的情况下,从作为Linux服务运行的现有jenkins安装更新jenkins?

  • 问题内容: 我在Mac上将Jenkins作为CI服务器运行。在具有用户jenkins的典型设置的情况下,它在macOS 10.12上运行良好。 今天,我将macOS升级到10.13(High Sierra)。升级过程完成后,Jenkins无法启动。此外,系统上没有用户詹金斯。所有Jenkins文件都存在,但是在设置->用户和组中没有jenkins用户。如果我尝试在终端中使用jenkins用户,例如