如何创建公共Jenkins更新站点的本地镜像?

gre*_*det 12 jenkins jenkins-plugins

我们在没有Internet访问权限的服务器上运行Jenkins(甚至通过代理).安装和保持Jenkins安装是最新的是一件痛苦的事!

我的想法是通过具有Internet访问权限的Windows工作站制作完整的Jenkins公共更新站点的本地镜像.然后通过NFS共享将此本地镜像提供给Jenkins.

所以我的问题:如何制作本地镜像?你有更好/更简单的想法让Jenkins安装保持最新吗?

小智 5

要生成更新站点 (update-center.json),您可以使用https://github.com/jenkins-infra/backend-update-center2项目

我的步骤:

  1. 生成自签名证书
    openssl genrsa -out your-update-center.key 1024
    openssl req -new -x509 -days 1095 -key your-update-center.key -out your-update-center.crt
  1. 将所有插件放入您的 Nexus 2 maven 存储库
  2. 克隆并构建 backend-update-center2 项目
  3. 生成更新中心.json
mvn exec:java -Dexec.args="-id default -h /dev/null 
    -o update-center.json -repository ULR_TO_NEXUS_REPO 
    -remoteIndex .index/nexus-maven-repository-index.gz -repositoryName YOUR_REPO_NAME 
    -directLink -pretty -nowiki -key your-update-center.key 
    -certificate your-update-center.crt 
    -root-certificate your-update-center.crt”
  1. 发布您的 update-center.json。必须可以通过 http/https 访问
  2. 将生成的 your-update-center.crt 复制到 JENKINS_HOME/update-center-rootCAs 文件夹
  3. “Jenkins?插件管理?高级?更新站点”定义链接到已发布的update-center.json

附注。不要忘记生成和发布 Nexus 2 nexus-maven-repository-index.gz 索引文件。为此使用“发布索引”任务。

您可以在https://github.com/ikedam/backend-update-center2/wiki/How-to-create-your-own-Jenkins-Update-Center找到有关更新程序中心的一些其他信息

  • 一旦插件可以在本地访问,这可以成为解决方案的一部分。但是有没有办法从公共 Jenkins 插件存储库中自动镜像插件? (4认同)

Pet*_*tze 1

手动下载war文件,停止服务器,替换war,重新启动服务器,问题出在哪里?插件也是如此。

如果我考虑一下,可能有更好的方法,在可以访问互联网的系统上安装沙箱 Jenkins。您使用 UI 更新服务器,然后可以彻底测试更新后的 Jenkins。完成后,您只需将 war 和 hpi 文件复制到您的“生产”Jenkins 中。现在你甚至有了一个很好的流程和质量保证。

  • 如果您注意到在插件/高级中,有一个更新 URL 的设置,它返回某种 JSON。您也许可以让您的镜像获取此文件,使用它下载本地所需的所有插件,然后重写它并公开指向本地副本的 JSON 的修改版本。与镜像 NuGet 服务器没有什么不同。 (3认同)
  • 问题是我不想每次更新时都手动执行。我想要一种自动化整个升级过程的方法。但你是对的,我正在考虑在某种存储库中管理整个詹金斯安装,从另一个系统更新它,并在更新正常后推送更改。但我认为 Jenkins 可能有一些功能可以帮助管理这个问题。 (2认同)