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



我想编写我的 Jenkins 安装脚本。我使用总是使用 Jenkins 的"稳定"版本(当前:2.121.3(,但我注意到当我安装稳定版本时,更新网站(在管理员>插件中>提前(设置为"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语法,我不知道如何更改和保存设置。

我也在寻找这样的东西,我只是用 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));

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

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

UpdateCenter 类源代码确认更新站点的值实际上已加载(我想在 Jenkins 开始时(,之后不可能更改列表。

所以我想设置自定义更新站点的唯一方法是拥有一个自定义更新站点是在开始时向 Jenkins 提供自定义hudson.model.UpdateCenter.xml

以下是我提出的一些观察结果(请在下面的评论中确认或无效,因为我对这些不是 100% 确定(:

  • 自定义更新站点必须具有 IDdefault
  • 插件的发现似乎在第一次启动时失败。必须重新启动 Jenkins 才能发现插件。

最新更新