忍受不了官方站點下載速度的速速看過來
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
[admin
]