jenkins:通过Groovy API设置根URL

laf*_*oyb 5 groovy jenkins

我正在尝试通过Groovy API更新Jenkins的根URL,因此我可以编写Jenkins master的部署脚本而无需手动输入(除了:为什么一个工具像build/devops /自动化社区一样受欢迎,因为Jenkins如此抗拒自动化?)

基于此文档,我相信我应该能够使用脚本控制台中的以下脚本更新URL.

import jenkins.model.JenkinsLocationConfiguration
jlc = new jenkins.model.JenkinsLocationConfiguration()
jlc.setUrl("http://jenkins.my-org.com:8080/") 
println(jlc.getUrl())
Run Code Online (Sandbox Code Playgroud)

简而言之,这实例化了一个JenkinsLocationConfiguration对象; setUrl用所需的值调用setter http://jenkins.my-org.com:8080/; 并打印出新的URL以确认它已更改.

println语句打印出我期望的内容,但是在此之后,通过"管理Jenkins" - >"配置系统" - >"Jenkins URL"的Web界面可见的值未按预期更新.

我担心Jenkins没有正确更新该值,这可能会在与外部API通信时导致问题.

这是修复Jenkins根URL的有效方法吗?如果不是,那是什么?否则,为什么更改不会反映在配置页面中?

Pet*_*ans 8

您正在创建一个新的JenkinsLocationConfiguration对象,并更新新对象,而不是正在使用的现有对象

使用

jlc = JenkinsLocationConfiguration.get()
// ...
jlc.save() 
Run Code Online (Sandbox Code Playgroud)

从全局jenkins配置中获取一个,更新它并保存配置描述符.

请参阅:https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/jenkins/model/JenkinsLocationConfiguration.java