通过 Artifactory 更新 Jenkins 插件

问题描述 投票:0回答:3

我想通过 Artifactory 更新 Jenkins 插件。

  1. 创建一个名为 Jenkins-update 的远程存储库
  2. 创建一个名为 jenkins-update-center 的本地存储库
  3. 从仓库 Jenkins-update 获取 update-center.json 到本地,并将 URL 从 'http://updates.jenkins-ci.org/' 修改为我自己的 URL 'https://artifacts.xxx update-center.json 中的 .com/artifactory/Jenkins-update/',然后将 update-center.json 放入本地仓库。

    #!/bin/sh
    curl -L -o /tmp/update-center.json http://localhost:8081/artifactory/Jenkins-update-cache/update-center.json
    sed -i 's#http://updates.jenkins-ci.org/#https://artifacts.xxx.com/artifactory/Jenkins-update/#g' /tmp/update-center.json
    curl -L -uuser:pass -T /tmp/update-center.json "http://localhost:8081/artifactory/jenkins-update-center/update-center.json"
    
  4. 将默认更新站点从“http://updates.jenkins-ci.org/”更改为“https://artifacts.xxx.com/artifactory/jenkins-update-center/update-center.json” ' 在詹金斯

存在错误 'SHA-512 摘要不匹配:预期=49a22dc23f739a76623d10128b6803f79e0489de3ded0f1d01f3dfba4557136c7f318baaf4749a7713ec4b3f56633f2ac3afc4703e87d423当我单击“立即检查”按钮时,“更新站点‘默认’”中的 ede029d68f84c74d。

我应该怎么做才能让 Jenkins 从 Artifactory 更新插件?

Tkx

jenkins artifactory
3个回答
1
投票

update-center.json 的内容更改后,您需要重新生成该文件的“signature”部分。 为此,您需要生成密钥对(更多详细信息请参阅如何创建公共 Jenkins 更新站点的本地镜像?

您也可以使用以下建议的方法:

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

另一种方法是在 Jenkins 和 Artifactory 服务器之间设置透明的 https 代理 - 在这种情况下 update-center.json 不会更改并且签名验证应该可以正常工作。

致以最诚挚的问候,

德米特罗·戈尔布诺夫


0
投票

截至2023年1月10日,在artifactory上制作jenkins插件的镜像存在问题。

Artifactory 文档仅描述了如何创建镜像:https://jfrog.com/knowledge-base/how-to-configure-artifactory-as-a-mirror-for-jenkins-plugins/

但这并不是一个完整的解决方案。因为这会导致每个插件都需要手动更新的情况。拥有具有大量依赖项的插件是一项巨大的工作。

需要生成一个文件:update-center.json

有一个内部的 jenkins 工具可以执行此操作:https://github.com/jenkins-infra/update-center2,但文档很差并且包含模糊的语句,例如:

经过一些修改,它也可以轻松用于生成您的公司更新中心。

没有明确的描述,该怎么办。 我尝试按照步骤进行操作,但完全失败了。工具需要一些特殊的环境变量,这些变量也没有记录等等。

因此,根据我的经验,在神器上镜像 jenkins 插件实际上是不可能的。老实说,我想在这里错了。


0
投票

所以我设法创建了 jenkins 存储库并使其通过神器工作,

步骤: 创建远程存储库:(类型通用)

Repository Key:  rmt-jenkins-ci-updates
URL: https://mirrors.jenkins.io/war/

Repository Key: rmt-jenkins-ci-updates-stable
URL: https://mirrors.jenkins.io/war-stable/

Repository Key: rmt-jenkins-ci-updates-stable
URL: https://mirrors.jenkins.io/war-stable/

Repository Key: rmt-jenkins-plugins
URL: https://mirrors.jenkins.io/plugins/

在所有这些中,如果您使用代理,请在“高级”中进行设置: 网络->代理 确保运行“测试”以查看连接是否有效。

现在创建虚拟仓库:

Repository Key: jenkins

向下滚动到存储库并添加我们创建的所有 4 个存储库。

现在您将能够看到虚拟存储库“jenkins”下可供下载的文件列表

(在您下载它们之前,这些文件将是空的 - 尝试在 jenkins 虚拟存储库下的artifactory 中下载文件以查看一切正常,如果您无法下载并收到错误“无法找到资源”,则意味着您是代理使用需要允许重定向并阻止它们 - 您可以在防火墙中看到我们被阻止的内容是 get.jenkins.io 等)

现在您已成功下载文件,请转到 Jenkins ui - 管理 jenkins - 插件 - 高级并将“更新站点”设置为

“https://my-artifactory.com/artifactory/jenkins/update-center.json”

然后提交看看没有错误。如果没问题,您将能够在manage-jenkins-plugins-updates 下看到您可以更新的插件。

如果出现错误:

"SSLHandshakeException: No subject alternative DNS name matching updates.jenkins.io found"
在 jenkins 中安装插件:“skip-certificate-check”

它还不能工作,因为你必须在神器 nginx 中进行重定向, 首先-您需要将此 URL 设置为“updates.jenkins.io”以重定向到您的 artifacory,因为 jenkins 在 update-center.json 中获取插件及其所有下载 url,并且该 url 是updates.jenkins.io

然后你进入artifactory nginx并添加这些重定向:

location ~ /download/plugins/(.*)$ {
    proxy_pass          http://artifactory:8081/artifactory/jenkins/$1;
}
location ~ /download/war/(.*)$ {
    proxy_pass          http://artifactory:8081/artifactory/jenkins/$1;
}


Restart nginx 

和测试

© www.soinside.com 2019 - 2024. All rights reserved.