什么是 Jenkins? 運用Jenkins持續(xù)集成

【注】本文譯自:https://www.edureka.co/blog/what-is-jenkins/
? ??持續(xù)集成是 DevOps 最重要的部分,用于集成各個 DevOps 階段。Jenkins 是最著名的持續(xù)集成工具,我知道你很好奇 Jenkins 受歡迎的原因以及 Jenkins 是否容易學(xué)習(xí)。我確信閱讀完本文后,您的所有問題都會得到解答。

? ??讓我們用簡要概括什么是 Jenkins。
什么是 Jenkins 以及為什么要使用它?
? ? Jenkins 是一個用 Java 編寫的開源自動化工具,帶有用于持續(xù)集成的插件。Jenkins 用于持續(xù)構(gòu)建和測試您的軟件項目,從而使開發(fā)人員更容易將更改集成到項目中,并使用戶更容易獲得新的構(gòu)建。它還允許您通過與大量測試和部署技術(shù)集成來持續(xù)交付軟件。
? ? 借助 Jenkins,組織可以通過自動化來加速軟件開發(fā)過程。Jenkins 集成了各種開發(fā)生命周期過程,包括構(gòu)建、文檔、測試、打包、模擬、部署、靜態(tài)分析等等。
? ??Jenkins 借助插件實現(xiàn)了持續(xù)集成。插件允許集成各種 DevOps 階段。如果要集成特定工具,則需要安裝該工具的插件。例如 Git、Maven 2 項目、Amazon EC2、HTML 發(fā)布者等。
? ??下圖描繪了 Jenkins 正在集成各個 DevOps 階段:
Jenkins 的優(yōu)勢包括:
是一個具有社區(qū)大力支持的開源工具。
易于安裝。
擁有 1000 多個插件,可簡化您的工作。如果不存在插件,則可通過編碼實現(xiàn)并與社區(qū)共享。
它是免費的。
它是用 Java 構(gòu)建的,因此可以移植到所有主要平臺。
? ??Jenkins 的某些方面將其與其他持續(xù)集成工具區(qū)分開來。讓我們看看這些要點。
Jenkins 的特性
? ??以下是有關(guān)Jenkins的一些事實,這些事實使它比其他的持續(xù)集成工具更好:
應(yīng)用:Jenkins 應(yīng)用非常廣泛,在全球范圍內(nèi)有超過 147,000 個活躍安裝和超過 100 萬用戶。
插件:Jenkins 與1000 多個插件互連,從而使其可以與大多數(shù)開發(fā)、測試和部署工具集成。
? ??從以上幾點可以看出,Jenkins 在全球范圍內(nèi)有很高的需求。在我們深入研究 Jenkins 之前,先了解什么是持續(xù)集成以及它的重要性。
什么是持續(xù)集成?
? ??持續(xù)集成是一種開發(fā)實踐,在這種實踐中,要求開發(fā)人員每天多次或更頻繁地對共享存儲庫中的源代碼提交更改。然后構(gòu)建存儲庫中進行的每個提交。這使團隊可以及早發(fā)現(xiàn)問題。除此之外,根據(jù)持續(xù)集成工具的不同,還有其他一些功能,例如在測試服務(wù)器上部署構(gòu)建應(yīng)用程序,為相關(guān)團隊提供構(gòu)建和測試結(jié)果等。
? ??讓我們通過用例了解它的重要性。
持續(xù)集成示例:諾基亞
? ??我敢肯定,您一生中的某些時候都使用過諾基亞手機。在諾基亞的一個軟件產(chǎn)品開發(fā)項目中,有一個名為每晚構(gòu)建(Nightly builds)的過程。每晚構(gòu)建可以被認為是持續(xù)集成的前身。這意味著每天晚上,自動化系統(tǒng)都會拉一整天添加到共享存儲庫中的代碼并構(gòu)建該代碼。這個想法與持續(xù)集成非常相似,但是由于在夜間構(gòu)建的代碼很大,因此查找和修復(fù)錯誤確實很麻煩。因此,諾基亞采用了持續(xù)集成(CI)。 結(jié)果,構(gòu)建了對存儲庫中的源代碼的所有提交。 如果構(gòu)建結(jié)果表明代碼中存在錯誤,則開發(fā)人員僅需要檢查該特定提交。 這大大減少了發(fā)布新軟件所需的時間。

? ??現(xiàn)在是了解 Jenkins 如何實現(xiàn)持續(xù)集成的正確時機。
運用?Jenkins 持續(xù)集成
? ? 讓我們想象一個場景,構(gòu)建了應(yīng)用程序的完整源代碼,然后將其部署在測試服務(wù)器上進行測試。聽起來這是開發(fā)軟件的理想方法,但是這個過程存在許多缺陷。我將逐一解釋:
開發(fā)人員必須等到開發(fā)出完整的軟件才能獲得測試結(jié)果。
測試結(jié)果很有可能顯示多個錯誤。開發(fā)人員很難找到這些錯誤,因為他們必須檢查應(yīng)用程序的整個源代碼。
這會減慢軟件交付過程。
關(guān)于編碼或架構(gòu)問題、構(gòu)建失敗、測試狀態(tài)和文件發(fā)布上傳等問題的持續(xù)反饋會導(dǎo)致軟件質(zhì)量下降。
整個過程是手動的,這增加了頻繁故障的風(fēng)險。
? ??從上述問題可以明顯看出,不僅軟件交付過程變慢,而且軟件質(zhì)量也下降了。這導(dǎo)致了客戶的不滿。因此,為了克服這種混亂,迫切需要一個系統(tǒng),使開發(fā)人員可以連續(xù)觸發(fā)構(gòu)建并測試源代碼中的每個更改。這就是 CI 的全部意義所在。Jenkins 是可用的最成熟的 CI 工具,因此讓我們看看運行 Jenkins 的持續(xù)集成如何克服了上述缺點。
? ??首先,我將向您介紹運用 Jenkins 進行持續(xù)集成的通用流程圖,可以一目了然地看到 Jenkins 如何克服上述缺點。同時有助您了解 Jenkins 的工作方式。

? ??上圖描述了以下功能:
首先,開發(fā)人員將代碼提交到源代碼存儲庫。同時,Jenkins 服務(wù)器會定期檢查存儲庫是否有更改。
提交后不久,Jenkins 服務(wù)器檢測到源代碼存儲庫中發(fā)生的更改。Jenkins 將拉出這些更改,并將開始準(zhǔn)備新的構(gòu)建。
如果構(gòu)建失敗,那么相關(guān)團隊將得到通知。
如果構(gòu)建成功,Jenkins 將在測試服務(wù)器中部署新的版本。
在測試之后,Jenkins 會生成反饋,然后通知開發(fā)人員構(gòu)建和測試結(jié)果。
它將繼續(xù)檢查源代碼存儲庫中是否對源代碼進行了更改,并且整個過程不斷重復(fù)。
? ??您現(xiàn)在知道了 Jenkins 是如何克服傳統(tǒng) SDLC 缺點的。下表顯示了“運用 Jenkins 前后”的對比。
運用 Jenkins 前后對比
