在Groovy脚本中配置Jenkins更新通道以稳定发布?

时间:2018-08-21 09:30:45

标签: groovy jenkins-cli

我想编写我的Jenkins安装脚本。我一直使用Jenkins的“稳定”版本(当前:2.121.3),但是我注意到当我安装稳定版本时,更新网站(在admin> plugin> advance中)设置为“ https://updates.jenkins.io/update-center.json” “这不是稳定版本。我必须将此设置更改为“ http://updates.jenkins-ci.org/stable/update-center.json”。

我想通过脚本自动执行。我知道我可以在/var/lib/jenkins/hudson.model.UpdateCenter.xml文件中更改此设置,但是我更喜欢使用Groovy脚本来做到这一点。

但是我找不到在Groovy脚本中更改此设置的方法,因为我既不了解Jenkins / Hudson数据模型又不是Groovy语法,我不知道如何更改和保存设置。

2 个答案:

答案 0 :(得分:1)

对于当前的Jenkins核心API版本(> 2.16X),

UpdateCenter JavadocUpdateSite Javadoc不显示任何允许添加或更新更新站点的方法。

UpdateCenter Class源代码确认更新站点的值已实际加载(我想是在Jenkins的开头),之后无法更改列表。

因此,我想设置自定义更新站点的唯一方法是拥有一个自定义更新站点,即一开始就为Jenkins提供自定义hudson.model.UpdateCenter.xml

以下是我的一些观察结果(请在下面的评论中确认或作废,因为我对这些情况不是100%肯定的):

  • 自定义更新站点必须具有ID default
  • 首次发现插件似乎失败。必须重新启动Jenkins才能发现插件。

答案 1 :(得分:0)

我也在寻找类似的东西,我只是用groovy解决了这个问题,希望对其他人也有帮助。

import hudson.model.UpdateCenter;
import hudson.model.UpdateSite;
import hudson.util.PersistedList;
import jenkins.model.Jenkins

site = "http://updates.jenkins.io/update-center.json"; // TBD: update as necessary
PersistedList < UpdateSite > sites = Jenkins.getInstance().getUpdateCenter().getSites();
for (UpdateSite s: sites) {
  if (s.getId().equals(UpdateCenter.ID_DEFAULT))
    sites.remove(s);
}
sites.add(new UpdateSite(UpdateCenter.ID_DEFAULT, site));