Jenkins 插件中心国内镜像源发布

Jenkins 社区的网络基础设施都是架设在国外的服务器上,而且,并没有在国内有 CDN 或者负载均衡的配置。对所有的 Jenkins 用户而言,1500+的插件可以帮助他们解决很多问题。然而,我相信,对于国内的很多用户来说, 可能有过一些不太愉快的经历——插件下载速度很慢,甚至会超时。难道遇到这种情况下,我们就只能等吗?

程序员,作为天生懒惰的人,总是希望能通过手中的键盘来解决各种个样的问题。凭什么?下载一个插件, 我还的苦苦地等待来自美国的数据包呢?数数你手里的 Jenkins 都安装了多少个插件。30个算少的吧。经过一番搜索,发现果然已经有前人帮忙把大树种好了。让我们一起感谢“清华大学开源软件镜像站”提供的镜像服务:

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

但是,当我兴冲冲地把 Jenkins 插件管理页面的更新中心的地址修改后,却发现了一个奇怪的情况,好像还是那么慢啊。不管是换地址,还是换4G,换电脑都解决不了这个网络排队的问题。本着开源的精神(不满意就提 issue 或者 Pull Request), 我只好继续挖掘这里的秘密。下面,是我向 TUNA 提的一个 issue(可以看到貌似我并不是第一个吐槽的人):

https://github.com/tuna/issues/issues/659

是的,rsync 可以帮我们把106G的文件同步过来,免去了出国下载插件的麻烦,可没有解决最后一公里的痛。

通过下面的 PR 我们可以大致了解到,Jenkins 是通过解析 update-center.json 文件的方式来获取插件版本, 以及下载插件的。另外,如果你认为只是修改下文件里的 URL 就能解决这个问题的话,那么,请再仔细想一下这个事情。既然小白兔可以把地址修改为一个比较方便的值,那么,大灰狼为啥不能往那些插件里加点辣椒水呢。Jenkins 作为一个在 CI/CD 领域里领先了15年之久的大叔,当然不会输给了一些小毛贼。简单来说呢,这个事情 是通过两把钥匙来解决的——官方用其中一把钥匙给文件做了签名,并保管起来;把另外一把钥匙对外公布(保存在发行版中)。只有通过了公钥验证的 update-center.json 文件,才会被使用到。

https://github.com/jenkins-infra/update-center2/pull/245

知道了问题所在,解决起来自然就容易了。Jenkins 中文社区帮大家把钥匙和地址的问题解决了,按图索骥三步走:

想了解技术细节?担心我们是大灰狼?我们欢迎喜欢学习的同学,更欢迎人民大众的检阅。提问题,提需求,提代码,提文档,都是可以的。实际上,我们的整套方案中,所有的部分(除了拿一把钥匙以外) 都是开源的,包括还不够完善的设计文档。而且,并不需要花一分钱,完全利用现有的计算、存储资源。此处,让我们再次感谢清华开源镜像站点、GitHub Actions、码云 Page 等。

https://github.com/jenkins-zh/mirror-adapter

最重要的事情,一定要在最后才说出来(不喜欢认真阅读文档的同学,对不起了)。想要体验极速 安装插件的同学,请认准 Jenkins 简体中文插件的版本:1.0.10

https://plugins.jenkins.io/localization-zh-cn

本文分享自微信公众号 - DevOps持续集成(devopsadmin)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

终于有人把 Git 分支讲清楚了!

从本质上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。

15310
来自专栏硬核项目经理的专栏

PHP设计模式之模板方法模式

模板方法模式,也是我们经常会在不经意间有会用到的模式之一。这个模式是对继承的最好诠释。当子类中有重复的动作时,将他们提取出来,放在父类中进行统一的处理,这就是模...

6310
来自专栏芋道源码1024

一起来学 SpringBoot 2.x | 第十五篇:actuator 与 spring-boot-admin 可以说的秘密

一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了actuator 的作用,细心的朋友可能会发现通过http res...

9430
来自专栏芋道源码1024

IntelliJ IDEA 重大更新:支持 CPU 火焰图,新增酷炫主题

就在上周,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3Beta,本篇文章,我将根据官方博客以及自己的...

10720
来自专栏芋道源码1024

Hmily:高性能异步分布式事务TCC框架

Hmily框架特性[https://github.com/yu199195/hmily]

8410
来自专栏AI小白入门

【经验】关于自然语言处理进阶的建议

自然语言处理这个方向我感觉已经泛滥了,很多方向的人都开始转向该专业,当然也包括转向计算机视觉的。之前我写过一篇文章

10130
来自专栏微信公众号:Java团长

这 10 个让你笑的合不拢嘴的 GitHub 项目,居然拿了 7 万星!

我敢保证看完下面的几个项目,你收藏夹一定会多几个网址,越用越开心,用完之后高呼 "GitHub大法好”、“女装才是正义!"对于我来说,GitHub那是每天必刷,...

12120
来自专栏网管叨bi叨

etcd常用操作介绍

最简单的安装方法是直接去etcd GitHub的Release页下载预编译好的二进制文件。etcd官方为各个系统提供了不同的二进制文件,供开发者根据自己的系统去...

8610
来自专栏芋道源码1024

树莓派上利用 Tensorflow 实现小车的自动驾驶

github传送门:https://github.com/Timthony/self_drive

7910
来自专栏京程一灯

用 MelonJS 开发一个游戏[每日前端夜话0xD9]

游戏开发并不需要局限于使用 Unity 或 Unreal Engine4 的用户。JavaScript 游戏开发已经有一段时间了。实际上,最流行的浏览器(例如C...

14010

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励