【问题标题】:Configure Jenkins update channel for stable release in Groovy script?在 Groovy 脚本中配置 Jenkins 更新通道以实现稳定发布?
【发布时间】:2020-07-10 07:47:48
【问题描述】:

我想编写我的 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 语法,我不知道如何更改和保存设置。

【问题讨论】:

  • 我找不到更好的方法来做到这一点。基本安装后,我将/var/lib/jenkins/hudson.model.UpdateCenter.xml 配置文件替换为以下内容:<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://updates.jenkins.io/stable/update-center.json</url> </site> </sites>

标签: groovy jenkins-cli


【解决方案1】:

我也在寻找类似的东西,我刚刚使用 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));

【讨论】:

    【解决方案2】:

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

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

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

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

    以下是我所做的一些观察(请在下面的 cmets 中确认或无效,因为我不是 100% 确定这些):

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

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 2020-06-05
      • 1970-01-01
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      相关资源
      最近更新 更多