DEVOPS 二月 21, 2020

墙内 Jenkins 插件下载的一种解决方案

文章字数 2.8k 阅读约需 3 mins. 阅读次数 0

原创发表于 DavidZ Blog,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。

前言

闲来无聊,在家折腾 DevOps,第一步当然是部署一个 Jenkins 啦,然而一顿操作猛如虎,插件一个都下载不下来,总不能给 Jenkins 加个代理吧,所以有了下面这一通折腾。

原因

下载超时

根据经验,国外这些软件下载失败基本上都是因为链接不上服务器,换个源就好了。所以简单百度,找到大量相关教程,换了清华源在内的四五个镜像源,均无效。

这就非常奇怪了,所以我打开了清华源的update-center.json,仔细看了看,发现了蹊跷之处。原来,这个文件里面基本上所有插件的链接都指向了官网链接http://updates.jenkins-ci.org/download/plugins/。所以我们使用https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json只加速了下载这个文件的过程,而并没有加速下载插件的过程。

解决方案

那么解决方案就很简单了,我们只需要把/var/jenkins_home/updates/default.json这个文件中的所有

http://updates.jenkins-ci.org/download/plugins/

替换成,

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

这样就好啦,但是总不能每次都自己手动替换吧,所以有下面这两个稍微复杂一点的自动化解决方案。

方案 1 使用 nginx 重定向

这个方法是参考的jenkins 插件下载加速最终方案

具体我没有试,但是我之前写过 Nginx 的重定向,简单来讲就是遇到官方的地址,就重定向到清华源,配置起来稍微复杂一点。

方案 2 自己搭建 Jenkins Update Center

这个是我自己尝试出来的,原理就是我在服务器上定时(每小时)从清华源下载update-center.json,然后再把里面的 URL 替换成正确的地址,然后对外提供服务。

但是 Jenkins 对于update-center.json的地址有验证,具体验证方法不清楚(我实在是懒的研究了)。

山重水复疑无路,柳暗花明又一村

我在 Jenkins 的 Issue 里面找到一个老哥说验证这个功能可以通过属性参数关闭,于是,这个问题就很简单啦。

hudson.model.DownloadService.noSignatureCheck=true

加上这个属性就好啦。

具体教程

哈,插件全秒!😄


上一篇:
下一篇:
0%