當前位置: 妍妍網 > 碼農

Jenkins vs GitLab CI/CD 到底怎麽選?

2024-03-26碼農

自:InfoQ,作者:Rahul Jain,策劃:田曉旭

近十年來,持續整合(Continuous Integration,CI)和持續交付(Continuous Delivery,CD)領域都取得了很大的進步。DevOps 測試的興起導致了對 CI/CD 工具的快速需求。現有的解決方案總是隨著時間的推移而改進,大量新產品或新版本正在進入 QA 領域。當你手頭有這麽多選項時,選擇正確的工具確實會有一點兒挑戰。

在所有可選的用於測試的 CI/CD 工具中,Jenkins 和 GitLab CI/CD 是你肯定應該考慮的兩款工具。Jenkins 在 GitHub 上有 16,000+ 點贊,而 GitLab CI/CD 有 2012 個點贊。Jenkins 的點贊數是 GitLab CI/CD 的點贊數的 8 倍多。

然而,這些數位並不是選擇一款 CI/CD 工具時需要檢視的唯一東西。這也是盡管在點贊數上有巨大的差距,Jenkins vs GitLab CI/CD 在多個評審平台上還有著激烈的競爭。以 G2 為例,Jenkins 在 G2 上平均評分為 4.3 星,有 288 條評論;GitLab CI/CD 在 G2 上的平均評分為 4.4 星,有 270 條評論。可以說,Jenkins vs GitLab CI/CD 是一場旗鼓相當的競爭。有趣的是,Jenkins 是在 2011 年釋出的,而且在 CI/CD 業務上,它一直是測試人員的首選。然而,自 2014 年釋出以來,GitLab CI/CD 一直憑借尖端的功能而高居榜首。我們在釋出這篇文章時,在社交媒體上進行了一次民意調查。

另一個被提到最多的工具是 GitLab CI/CD。作為一個 DevOps 測試專家,你需要根據你自己的計畫、預算和其它需求來仔細審查這些工具。為了幫助你,我將對 Jenkins vs GitLab CI/CD 做一個深入的評估,幫助你確定合適的 CI/CD 工具來滿足你的計畫需求。

1. Jenkins 介紹

Jenkins 是一款著名的可延伸的用於自動化部署的開源 CI/CD 工具。Jenkins 是完全用 Java 編寫的,是在 MIT 授權下釋出的。它有一組強大的功能,可以將軟體的構建、測試、部署、整合和釋出等相關任務自動化。這款用於測試的自動化 CI/CD 工具可以在 macOS、Windows 和各種 UNIX 版本(例如 OpenSUSE、Ubuntu、Red Hat 等)系統上使用。除了透過本地安裝包安裝,它還可以在任何安裝過 Java 執行時環境(Java Runtime Environment,JRE)的機器上單獨安裝或者作為一個 Docker 安裝。Jenkins 團隊還有一個子計畫叫做 Jenkins X,專門執行一個與 Kubernetes 無縫銜接的開箱即用的 pipeline。Jenkins X 巧妙地整合了 Helm、Jenkins CI/CD 伺服器、Kubernetes 以及其它一些工具,來提供一個內建最佳實踐的規範的 CI/CD 工具 pipeline,例如使用 GitOps 來管理環境。使用 Jenkins 的一個加分點是,其指令碼結構良好、易於理解並且可讀性很強。Jenkins 團隊已經開發了近 1000 個外掛程式,使得應用程式可以與其它熟悉的技術混合使用。除此之外,還可以使用 Credentials Command 之類的外掛程式。這使得向指令碼中添加隱藏的身份驗證憑證等變得簡單可行。一旦 Jenkins pipeline 開始執行,你還可以驗證每個階段透過與否以及每個階段的總數。但是,你不能在提供的圖形化概覽中檢查特定作業的狀態。你可以做的是跟蹤終端中的作業進度。

2. Jenkins 核心特性

Jenkins 以其易於配置、自動化構建過程和它向使用者提供的大量文件而聞名。當談到 DevOps 測試時,Jenkins 被認為是非常可靠的,而且沒必要監視整個構建過程,而對於其它 CI/CD 工具則不會這麽放心。

讓我們看看 Jenkins 提供的一些最重要的特性:

1. 免費、開源且易安裝

Jenkins 在 macOS、Unix、Windows 等平台上都非常容易安裝。它可以與 Docker 結合,為自動化作業帶來更高的一致性和額外的速度。它可以可以作為一個 servlet 執行在 Apache Tomcat 和 GlassFish 這樣的 Java 容器中。你可以找到許多支持和文件來指導整個安裝過程。

2. 廣泛的外掛程式生態系

這個工具的外掛程式生態系相比於其它 CI/CD 工具來說更成熟。目前,這個生態系提供了 1500+ 外掛程式。由於這些外掛程式的範圍從特定語言開發工具到構建工具,這使得客製化變得非常簡單便利。因此,你不需要購買昂貴的外掛程式。Jenkins 外掛程式整合也適用於一些 DevOps 測試工具。

3. 易於安裝和配置

這個工具的配置過程非常簡單,只需要在安裝時操作一些步驟。Jenkins 的升級過程也不麻煩且非常直接。而且其提供的支持文件對於你根據自己的需求配置工具也幫助很大。

4. 有用的社群

如你所知,這是一個開源計畫,擁有一個龐大的外掛程式生態系,所有外掛程式的功能都得到了大量社群貢獻的支持。伴隨 Jenkins 的驚人的社群參與度也是促進其成熟的一個主要原因。

5. 提供 REST API

Jenkins 提供了 REST 風格的應用程式介面來便於擴充套件。Jenkins 的遠端接入 API 有三種不同的風格——Python、XML 以及 JSON(支持 JSONP)。Jenkins 網站中有一個頁面有關於 Jenkins API 的描述性文件,有助於擴充套件。

6. 支持並列執行

Jenkins 支持並列測試。你可以輕松將它與不同的工具整合並得到構建是否成功的通知。開發者甚至可以在不同的虛擬機器上並列執行多個構建來加速測試過程。

7. 輕松分配工作

它可以毫不費力地執行分布式工作,即任務在不同的機器上執行,而不會對 GUI(使用者圖形界面)造成影響。值得一提的是,與其它 CI/CD 工具相比,只有這款工具能夠使用與執行 GUI 相關任務的同一個例項。

3. GitLab CI/CD 介紹

在所有用於測試的 CI/CD 工具中,GitLab CI/CD 毫無疑問是最新且最受贊賞的選擇。它是一款免費且自托管的內建於 GitLab CI/CD 的持續整合工具。GitLab CI/CD 有一個社群版本,提供了 git 倉庫管理、問題跟蹤、程式碼評審、wiki 和活動訂閱。許多公司在本地安裝 GitLab CI/CD,並將它與 Active Directory 和 LDAP 伺服器連線來進行安全授權和身份驗證。GitLab CI/CD 先前是作為一個獨立計畫釋出的,並從 2015 年 9 月釋出的 GitLab 8.0 正式版開始整合到 GitLab 主軟體。一個單獨的 GitLab CI/CD 伺服器可以管理 25000 多個使用者,它還可以與多個活躍的伺服器構成一個高可用性的配置。GitLab CI/CD 和 GitLab 是用 Ruby 和 Go 編寫的,並在 MIT 授權下釋出。除了其它 CI/CD 工具關註的 CI/CD 功能之外,GitLab CI/CD 還提供了計劃、打包、源碼管理、釋出、配置和審查等功能。GitLab CI/CD 還提供了倉庫,因此 GitLab CI/CD 的整合非常簡單直接。在使用 GitLab CI/CD 時,phase 命令包含一系列階段,這些階段將按照精確的順序實作或執行。在實作後,每個作業都被描述和配置了各種選項。每個作業都是一個階段的一個部份,會在相似的階段與其它作業一起自動並列執行。一旦你那樣做,作業就被配置好了,你就可以執行 GitLab CI/CD 管道了。其結果會稍後演示,而且你可以檢查某個階段你指定的每一個作業的狀態。這也是 GitLab CI/CD 與其它用於 DevOps 測試的 CI/CD 工具的不同之處。

4. GitLab CI/CD:核心特性

GitLab CI/CD 是最受歡迎的用於 DevOps 測試的 CI/CD 工具之一。GitLab CI/CD 文件豐富、易於控制且使用者體驗好。如果你剛接觸 GitLab CI/CD,我列舉了 GitLab CI/CD 的主要功能,會有助於你了解它。來看看吧。

1. 高可用性部署

它被廣泛采用,是最新可用的開源 CI/CD 工具之一。GitLab CI/CD 的安裝和配置都很簡單。它是內建於 GitLab 的免費且自托管的持續整合工具。GitLab CI/CD 逐漸發展成最受歡迎的用於自動化部署的免費 CI/CD 工具之一。

2.Jekyll 外掛程式支持

Jekyll 外掛程式是一個靜態網站生成器,對 GitHub Pages 有比較好的支持,它使得構建過程更簡單。Jekyll 外掛程式支持使用 HTML 檔和 Markdown,基於你的布局偏好,建立一個完全靜態的站點。你可以透過編輯你的 _config.yml 檔來很容易地配置大部份 Jekyll 設定,例如,你的網站的外掛程式和主題。

3. 裏程碑設定

工具中的裏程碑設定是跟蹤問題、改進系列問題、繪制倉庫的請求的一種很好的方法。你可以輕易將計畫裏程碑分配給任何問題,或者合並計畫中不常見的請求,或者將組裏程碑分配給一組問題,或者合並該組中任何計畫的請求。

4. 自動伸縮的持續整合執行器

自動伸縮的 GitLab 持續整合執行器可以輕松管理和節省 90% EC2 成本。這真的非常重要,特別是對於並列測試環境。而且,對於元件級別或者計畫級別的執行器,可以跨程式碼庫使用。

5. 問題跟蹤和問題討論

由於其強大的問題跟蹤和問題討論功能,GitLab 是無數開源計畫首選的 CI/CD 工具。它巧妙地允許你並列測試拉取請求和分支。為了簡單方便地監控,測試結果被顯示在 GitHub UI 上。由於簡單的使用者介面,相比於 Jenkins,它使用起來更加友好。

6. 使用存取控制管理 Git 倉庫

你可以透過存取許可權輕松管理 git 倉庫。你可以輕松地向單個倉庫的協作者授予寫入 / 讀取存取許可權,甚至特定組織的成員也可以對組織的倉庫進行更細粒度的存取控制。

7. 活躍的社群支持

活躍且進步的社群是 GitLab CI/CD 的一個主要加分點。提供的所有支持都是開箱即用的,不需要在額外的外掛程式安裝中進行修改。

8. 程式碼評審和合並請求

GitLab CI/CD 不僅僅用於構建程式碼,還用於評審程式碼。它允許使用簡單的合並請求和合並管理系統來進行改進協作。它幾乎支持所有的版本控制系統和構建環境。在 GitHub 計畫下實作了大量協作方案,這些計畫有助於 GitLab CI/CD 的擴充套件。

5. Jenkins vs GitLab CI/CD 的功能對比

Jenkins 和 GitLab CI/CD 都有它們非常擅長的領域和各自的技術追隨者。然而,在討論 Jenkins vs GitLab CI/CD 之爭時,會討論許多功能。下圖是這兩個 CI/CD 工具提供的所有功能的比較。

6. Jenkins vs GitLab CI/CD 之間的區別

既然你已經看了 Jenkins vs GitLab CI/CD 之間的功能對比,那也是時候來看看這兩個 DevOps 測試工具之間的差別。這些差別將幫助你理解 Jenkins vs GitLab CI/CD 之爭背後的真正原因。在 GitLab CI/CD 的幫助下,你可以透過對分支和其它一些方面的完全控制來控制 Git 倉庫,從而使你的程式碼免受突然的威脅。然而,使用 Jenkins 時,你雖然可以控制程式碼庫,但只有幾個方面。Jenkins 不允許完全控制分支和其它方面。Jenkins 是「內部托管的」和「免費開源的」,這也是程式設計師選擇它的原因。另一方面,GitLab CI/CD 是「自托管的」和「免費的」,這就是為什麽開發人員更喜歡它。在 GitLab CI/CD 中,每一個計畫都有一個跟蹤程式,它將跟蹤問題並進行程式碼評審來提高效率。而在 Jenkins 工具中,它改變了一些設定支持和一個簡單的安裝配置過程。

7. Jenkins vs GitLab CI/CD 優缺點

我希望你現在理解 Jenkins vs GitLab CI/CD 這兩個工具。為了更進一步,我列舉了與 Jenkins vs GitLab CI/CD 有關的主要優點和缺點。我知道你已經決定了你要使用的 DevOps 測試工具,本節將幫您增強選擇正確的 CI/CD 工具的信念。

Jenkins 的優點

  • 大量外掛程式庫

  • 自托管,例如對工作空間的完全控制

  • 容易偵錯執行,由於對工作空間的絕對控制

  • 容易搭建節點

  • 容易部署程式碼

  • 非常好的憑證管理

  • 非常靈活多樣的功能

  • 支持不同的語言

  • 非常直觀

  • Jenkins 的缺點

  • 外掛程式整合復雜

  • 對於比較小的計畫開銷比較大,因為你需要自己搭建

  • 缺少對整個 pipeline 跟蹤的分析

  • GitLab CI/CD 的優點

  • 更好的 Docker 整合

  • 運行程式擴充套件或收縮比較簡單

  • 階段內的作業並列執行

  • 有向無環圖 pipeline 的機會

  • 由於並行運行程式而非常易於擴充套件收縮

  • 合並請求整合

  • 容易添加作業

  • 容易處理沖突問題

  • 良好的安全和私密政策

  • GitLab CI/CD 的缺點

  • 需要為每個作業定義構建並上傳 / 下載

  • 在實際合並行生之前測試合並狀態是不可能的

  • 還不支持細分階段

  • 8. Jenkins vs GitLab CI/CD 如何選

    Jenkins 和 GitLab CI/CD 都有它們各自的優點和缺點,你在這兩個工具之間的最終選擇取決於計畫需求和規格。其中每一個 CI/CD 工具都有它自己的優勢和劣勢,釋出時都實作了完全相同的需求:自動化 CI/CD(持續整合和交付)的過程。Jenkins 用於持續整合,而 GitLab CI/CD 用於程式碼協作和版本控制。在選擇最佳的用於 DevOps 測試的 CI/CD 工具時,除了突出的特性,你還應該檢視價格列表和內部熟練度。

    往期推薦


    點亮,伺服器三年不宕機