如何使用api更新jenkins作业

dsy*_*uen 19 api jenkins

我必须使用它的api创建/更新jenkins作业,因为我的所有作业都使用其他脚本也使用的参数,并且我试图集中脚本,所以当我在一个地方更改它时,更改反映了所有.

目前,如果有人更改了脚本,他们也必须手动编辑jenkins作业的参数.

我看到了远程API用于创建作业的示例,并且能够成功创建测试作业,但是如何编辑现有作业,除了删除它并再次创建它(这不是一个选项,因为我必须维护构建历史记录).

小智 16

你可以像这样使用python:

from jenkinsapi.jenkins import Jenkins
jenkinsSource = 'http://10.52.123.124:8080/'
server = Jenkins(jenkinsSource, username = 'XXXXX', password = 'YYYYY')
myJob=server.get_job("__test")
myConfig=myJob.get_config()
print myConfig
new = myConfig.replace('<string>clean</string>', '<string>string bean</string>')
myJob.update_config(new)
Run Code Online (Sandbox Code Playgroud)


dsy*_*uen 10

如果其他人也在寻找相同的答案,

看起来解决方案要容易得多,您只需更新config.xml并将更新后的config.xml发布回jenkins,您的工作就会更新.

  • 找到这个非常有用的食谱,如何更新config.xml http://benkiew.wordpress.com/2012/01/12/automating-hudsonjenkins-via-rest-and-curl-a-very-small-cookbook/ (2认同)

小智 6

您还可以将更新的config.xml发布到可以获取的URL config.xml,以编程方式更新作业的配置.

获取url模式: $JENKINS_SERVER/job/$JOB_NAME/config.xml

详细的doc模式: $JENKINS_SERVER/job/$JOB_NAME/api

示例:https://ci.jenkins-ci.org/job/infra_atlassian-base/api/