偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么應(yīng)該停止依賴Jenkins插件

譯文 精選
開(kāi)發(fā)
當(dāng)下管理Jenkins平臺(tái)已慢慢成為成長(zhǎng)中的團(tuán)隊(duì)和公司的瓶頸,不會(huì)提高反而會(huì)降低敏捷性。

作者 | Vishnu Vasudevan

譯者| 趙青窕

審校 | Noe

?  根據(jù)ActiveState 2020年CI/CD狀態(tài)調(diào)查結(jié)果,Jenkins是目前市場(chǎng)上使用最多的CI/CD工具。作為市場(chǎng)上發(fā)展較早的持續(xù)集成工具,它有足夠的時(shí)間來(lái)進(jìn)行推廣,并一直是推動(dòng)DevOps構(gòu)建和軟件交付方法的關(guān)鍵組成部分。

  得益于逾1800個(gè)插件,使用正確的插件集就很容易對(duì)Jenkins進(jìn)行擴(kuò)展,通過(guò)擴(kuò)展我們幾乎無(wú)所不能。Jenkins用戶可以基于不同的插件獲得個(gè)性化體驗(yàn)。

  插件可能是Jenkins的核心,但它們也很快成為使用Jenkins的團(tuán)隊(duì)的負(fù)擔(dān)。當(dāng)下管理Jenkins平臺(tái)已慢慢成為成長(zhǎng)型團(tuán)隊(duì)和公司的瓶頸,不會(huì)提高反而會(huì)降低敏捷性。

  在本指南中,我將更多地介紹Jenkins的一些缺點(diǎn),以及一些替代方案。

什么是Jenkins插件

  插件對(duì)于使用 Jenkins 非常重要,以至于在安裝過(guò)程中會(huì)要求你從選擇一個(gè)插件開(kāi)始。默認(rèn)安裝附帶大約 20 個(gè)插件,以及你在安裝期間選擇的任何插件。 這些插件負(fù)責(zé)將你的 CI/CD 同 GitHub 或 Bitbucket 等外部工具集成以進(jìn)行版本控制。插件還擴(kuò)展了 Jenkins 的功能及其工作方式。即使是編排構(gòu)建的管道系統(tǒng)(pipeline system)也是一個(gè)插件,可以使用其他插件進(jìn)行修改。

  你可以通過(guò)市場(chǎng)向 Jenkins 添加新插件。市場(chǎng)中的所有插件都是基于社區(qū)且開(kāi)源的,這意味著任何人都可以創(chuàng)建符合他們需求的自定義插件并將其釋放到市場(chǎng)上。通常情況下,在選擇插件時(shí),你需要注意以下三個(gè)重要事項(xiàng):

  ●插件的受歡迎程度可以通過(guò)安裝次數(shù)來(lái)評(píng)估

  ●它的維護(hù)情況如何,可以通過(guò)查看最近一次更新的時(shí)間來(lái)估計(jì)

  ●所需的依賴關(guān)系,比如你是否需要安裝其他的插件

為什么 Jenkins 插件可能存在弊端

  雖然大量可用的插件曾經(jīng)被視為是平臺(tái)的優(yōu)勢(shì),但現(xiàn)在經(jīng)常被視為一個(gè)缺點(diǎn),助長(zhǎng)了許多人與 Jenkins 之間的愛(ài)恨情仇。當(dāng)它第一次發(fā)布時(shí),Jenkins 感覺(jué)就像一個(gè)美妙的自助服務(wù)環(huán)境,一個(gè)可靠的開(kāi)發(fā)團(tuán)隊(duì)幾乎可以使用 Jenkins 管道和正確的插件集做任何事情。然而,今天,你需要真正的 Jenkins 專業(yè)知識(shí)來(lái)維護(hù) Jenkins 服務(wù)器,這是一個(gè)劣勢(shì),尤其是與市場(chǎng)上較新的 SaaS CI/CD相比較時(shí)。

  有很多與 Jenkins 插件生態(tài)系統(tǒng)相關(guān)的常態(tài)問(wèn)題。首當(dāng)其沖的就是升級(jí)和依賴的無(wú)休止循環(huán)。一個(gè)簡(jiǎn)單的項(xiàng)目可能需要超過(guò) 25 個(gè)不同的插件,且你安裝的每個(gè)插件又需要其他的插件來(lái)保證其可以正常工作。這會(huì)導(dǎo)致你陷入進(jìn)退兩難,比如你安裝了兩個(gè)插件,每個(gè)插件都需要相同的第三個(gè)插件才能工作,并且每個(gè)都依賴于第三個(gè)插件的不同版本,從而導(dǎo)致安裝問(wèn)題或錯(cuò)誤。

  當(dāng)你發(fā)現(xiàn)插件存在安全漏洞時(shí),就會(huì)出現(xiàn)更大的問(wèn)題。如果你發(fā)現(xiàn)某個(gè)插件不安全或有漏洞,你可以在 GitHub 上提交問(wèn)題并等待該插件被打補(bǔ)丁,但如果補(bǔ)丁永遠(yuǎn)不會(huì)到來(lái)怎么辦?你可以忍受安全漏洞,可以找到替換插件并修改所有管道以適應(yīng)新插件,或者復(fù)制插件并修補(bǔ)它,然后成為該插件的新維護(hù)者。鑒于每天都會(huì)發(fā)現(xiàn)新的安全漏洞并且插件需要經(jīng)常修補(bǔ),這很快就會(huì)觸發(fā)大量的工作。

  這也導(dǎo)致了 Jenkins 插件的另一個(gè)問(wèn)題。即使是非常流行的插件也經(jīng)常被原始維護(hù)者隨意地維護(hù)或放棄。從維護(hù)者的角度來(lái)看,這是完全可以理解的。插件是為了解決問(wèn)題而創(chuàng)建的,大多數(shù)維護(hù)者并不打算在他們的工作之外成為專業(yè)的插件維護(hù)者。但是在用戶方面,這會(huì)導(dǎo)致插件的支持很差,因?yàn)榫S護(hù)者是社區(qū)成員,沒(méi)有義務(wù)無(wú)限期地維護(hù)插件。

  Jenkins 插件的最后一個(gè)問(wèn)題是缺乏透明度。 如果不仔細(xì)檢查代碼,你將無(wú)法知道插件的范圍,并且你無(wú)法根據(jù)需要來(lái)限制插件的一些訪問(wèn)和操作權(quán)限。因此,在選擇插件時(shí),信任因素非常重要,需要小心減少潛在的攻擊面。

Jenkins 插件如何影響你的組織

  當(dāng)你考慮在單個(gè)團(tuán)隊(duì)中使用 Jenkins 時(shí),這些問(wèn)題看起來(lái)可能不是一個(gè)大問(wèn)題。他們可以使用他們最喜歡的插件集構(gòu)建相應(yīng)的管道,并且假設(shè)沒(méi)有安全問(wèn)題,一切都會(huì)工作地很好。但是隨著公司的發(fā)展,更多的開(kāi)發(fā)人員加入進(jìn)來(lái),創(chuàng)建了新的團(tuán)隊(duì),并且有多個(gè)應(yīng)用程序和服務(wù),Jenkins 插件就不能很好地工作。如果你讓每個(gè)人都使用他們想要的任何插件,你很快就會(huì)遇到依賴和升級(jí)問(wèn)題。另一方面,如果你限制開(kāi)發(fā)人員可以使用的插件,整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的士氣可能都會(huì)變得低落。

  Jenkins 只允許一個(gè)主節(jié)點(diǎn),因此,在設(shè)計(jì)時(shí)根本沒(méi)有考慮到高可用性。由于這些設(shè)計(jì)選擇,必須重新啟動(dòng)服務(wù)器以更改配置或安裝新插件,但這類操作會(huì)導(dǎo)致服務(wù)器停機(jī)并中斷組織中依賴 Jenkins 的每個(gè)人的工作。目前這個(gè)困境沒(méi)有簡(jiǎn)單的解決方案。為每個(gè)團(tuán)隊(duì)創(chuàng)建 Jenkins 服務(wù)器純粹是浪費(fèi)財(cái)力,并且會(huì)逐漸形成一個(gè)個(gè)的小團(tuán)體。擁有獨(dú)立 Jenkins 服務(wù)器的團(tuán)隊(duì)將基于不同的插件集構(gòu)建不兼容的管道,從而無(wú)法為你的團(tuán)隊(duì)間彼此共享自動(dòng)化工作的情況做好準(zhǔn)備。

  你不能讓Jenkins成為一個(gè)真正的自助服務(wù)平臺(tái),因?yàn)樗僮髌饋?lái)會(huì)很復(fù)雜,而且會(huì)減少團(tuán)隊(duì)之間的合作。但是反對(duì)Jenkins插件的最大論點(diǎn)是插件是安全隱患。如前所述,幾乎所有插件都是社區(qū)創(chuàng)建和支持的。你需要相信維護(hù)人員使用了有利于安全的最佳方式,并針對(duì)新發(fā)現(xiàn)的漏洞都會(huì)對(duì)插件進(jìn)行了修補(bǔ),如果要正確地完成這些工作,可能需要每周進(jìn)行一次。CI/CD平臺(tái)通常可以訪問(wèn)許多系統(tǒng),并擁有修改基礎(chǔ)設(shè)施和與生產(chǎn)環(huán)境交互所需的憑證。這使得任何CI/CD平臺(tái)都成為基礎(chǔ)設(shè)施中非常敏感的一部分,而安全性應(yīng)該是這些工具的首要任務(wù)。

如何停止依賴Jenkins插件?

  到目前為止,你已經(jīng)可以很好地理解Jenkins插件的一些問(wèn)題。如果你正在考慮停止依賴,轉(zhuǎn)向一個(gè)更安全的開(kāi)發(fā)環(huán)境,你可以采取下面的方式。

1.仔細(xì)地管理插件

  創(chuàng)建一個(gè)精心挑選的插件列表,并堅(jiān)持使用這些插件。這個(gè)列表應(yīng)該同時(shí)考慮安全性和可維護(hù)性的問(wèn)題。一般來(lái)說(shuō),最好堅(jiān)持使用如GitHub或Amazon Web Services等云提供商集成的插件,因?yàn)樗鼈兺ǔ?huì)得到相應(yīng)云提供商的社區(qū)和開(kāi)發(fā)者的大力支持。例如,GitHub插件是一個(gè)維護(hù)良好的插件,你可以依賴它。在主服務(wù)器上運(yùn)行升級(jí)并運(yùn)行新插件之前,先在輔助Jenkins服務(wù)器上測(cè)試它們。

  避免更改Jenkins管道工作方式的插件,因?yàn)槿绻@些插件工作異常,不再被維護(hù),或者存在安全漏洞,你將需要重做整個(gè)管道。

  通過(guò)檢查插件的GitHub庫(kù),主動(dòng)關(guān)注插件的健康狀況,看看它們是否正在積極地被維護(hù)。如果發(fā)現(xiàn)異常,你應(yīng)該尋找替代插件。這可以防止將來(lái)升級(jí)Jenkins服務(wù)器或發(fā)現(xiàn)安全漏洞時(shí)導(dǎo)致的停機(jī)。插件是具有潛在漏洞的獨(dú)立軟件,攻擊者可以利用這些漏洞來(lái)訪問(wèn)你的構(gòu)建系統(tǒng),以及Jenkins出于必要時(shí)授予讀寫(xiě)權(quán)限的其他部分,如代碼存儲(chǔ)庫(kù)、云提供商和網(wǎng)絡(luò)連接。正如在SolarWinds供應(yīng)鏈攻擊事件中,攻擊者通過(guò)構(gòu)建管道將惡意軟件注入,不久后,受污染的軟件又被交付給公司的數(shù)萬(wàn)個(gè)客戶。這表明,CI/CD管道是構(gòu)建流程中被信任的一部分,只需要一段惡意代碼,不僅能讓你的公司受到攻擊,還可以讓你的客戶受到攻擊。這一領(lǐng)域的極端敏感性使得插件的監(jiān)控和管理至關(guān)重要。

2.實(shí)用容器

  容器技術(shù)使你能夠?qū)Νh(huán)境的所有依賴關(guān)系進(jìn)行打包,多虧了Docker插件,你可以在Docker容器中運(yùn)行Jenkins。Docker容器可以使用為任務(wù)創(chuàng)建的映像并充當(dāng)Jenkins代理,完成構(gòu)建所需的所有依賴項(xiàng),從而無(wú)需在服務(wù)器上安裝插件。

3.使用更少的插件

  Jenkins插件問(wèn)題的一個(gè)最簡(jiǎn)單的解決方案就是使用更少的插件。使用的插件越少,問(wèn)題就越少。為了達(dá)到該目的,你可以選擇腳本而不是插件。例如,發(fā)送Slack通知就像發(fā)送一個(gè)HTTP請(qǐng)求到一個(gè)API一樣簡(jiǎn)單,并且可以避免依賴第三方插件。腳本可能比插件更可靠,因?yàn)槟憧梢栽诒镜厥褂盟鼈儊?lái)執(zhí)行相同的操作。雖然這看起來(lái)比使用插件需要更多的工作,但你可以在公司內(nèi)部共享你的自動(dòng)化腳本,并在任何管道中使用它們,且不影響Jenkins服務(wù)器。

  第二種方法是盡可能多地使用Jenkins模板(Jenkins templates)。模板允許你定義可重用的管道(任務(wù))片段,并添加一個(gè)抽象層,使開(kāi)發(fā)人員更容易配置和使用Jenkins。使用模板為你提供了一種識(shí)別所需插件的簡(jiǎn)單方法,因?yàn)槟阈枰牟寮悄0逯幸玫牟寮?。這為你提供了一個(gè)協(xié)作構(gòu)建管道的地方,并減少了跨組織使用的插件數(shù)量。

總結(jié)

  Jenkins及其插件生態(tài)系統(tǒng)對(duì)于尋找項(xiàng)目中CI/CD解決方案的人非常有吸引力。然而,不利的插件維護(hù)、多種不同的依賴關(guān)系和安全風(fēng)險(xiǎn)已經(jīng)使許多人對(duì)該工具產(chǎn)生了反感。

  Jenkins插件管理將會(huì)影響你的企業(yè),而管理不善的插件會(huì)使你的企業(yè)處于危險(xiǎn)之中。實(shí)施緩和策略非常重要,比如通過(guò)定義標(biāo)準(zhǔn)作業(yè)或管道來(lái)最小化插件數(shù)量,仔細(xì)管理插件,在單獨(dú)的實(shí)例上測(cè)試插件和升級(jí),以及使用基于容器的作業(yè)來(lái)減少對(duì)Jenkins插件的依賴。

  如果你厭倦了管理你的CI/CD生態(tài)系統(tǒng),包括你的Jenkins服務(wù)器,你可能會(huì)對(duì)一個(gè)無(wú)代碼的DevOps平臺(tái)感興趣,它可以取代許多Jenkins插件。這樣的平臺(tái)還可以連接你現(xiàn)有的工具,提高你團(tuán)隊(duì)的敏捷性和響應(yīng)性,并允許你專注于創(chuàng)建優(yōu)秀的軟件,而不是管理你的管道。

譯者介紹

  趙青窕,51CTO社區(qū)編輯,從事多年驅(qū)動(dòng)開(kāi)發(fā)。研究興趣包含安全OS和網(wǎng)絡(luò)安全領(lǐng)域,發(fā)表過(guò)網(wǎng)絡(luò)相關(guān)專利。

  原文標(biāo)題:Why You Should Stop Relying on Jenkins Plug-ins

  鏈接:?https://dzone.com/articles/why-you-should-stop-relying-on-jenkins-plugins-2??

責(zé)任編輯:張潔 來(lái)源: 51CTO
相關(guān)推薦

2022-05-06 08:00:00

APIBallerina編程語(yǔ)言

2024-10-18 11:55:47

2024-08-16 09:05:26

CSSmarginpadding

2015-08-24 10:51:00

全棧

2015-08-25 09:57:18

程序員全棧工程師

2022-07-06 09:29:40

JMH性能測(cè)試

2013-01-07 11:31:11

大數(shù)據(jù)大數(shù)據(jù)應(yīng)用

2019-08-12 07:29:28

餐館物聯(lián)網(wǎng)IOT

2018-06-08 15:27:59

云計(jì)算企業(yè)存儲(chǔ)

2022-11-24 14:46:59

物聯(lián)網(wǎng)數(shù)字醫(yī)療虛擬現(xiàn)實(shí)

2022-05-16 09:27:37

UbuntuUbuntu LTS

2019-01-18 12:50:57

NoSQL數(shù)據(jù)庫(kù)Oracle

2024-09-02 08:53:44

2015-04-21 10:11:15

云托管Linux桌面

2022-01-23 13:51:30

Arch LinuxLinux

2020-06-05 14:09:42

Kubernetes容器應(yīng)用程序

2021-05-26 09:27:22

物聯(lián)網(wǎng)人工智能AIoT

2012-05-19 22:17:30

Android

2013-01-08 10:19:35

大數(shù)據(jù)數(shù)據(jù)分析大數(shù)據(jù)全球技術(shù)峰會(huì)

2019-07-01 05:00:48

企業(yè)投資物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)