CI/CD 工具選型:Jenkins 仍是 GitLab CI/CD?

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

在全部可選的用於測試的 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 一直憑藉尖端的功能而高居榜首。咱們在發佈這篇文章時,在社交媒體上進行了一次民意調查。安全

CI/CD 工具選型:Jenkins 仍是 GitLab CI/CD?

另外一個被提到最多的工具是 GitLab CI/CD。做爲一個 DevOps 測試專家,你須要根據你本身的項目、預算和其它需求來仔細審查這些工具。爲了幫助你,我將對 Jenkins vs GitLab CI/CD 作一個深刻的評估,幫助你肯定合適的 CI/CD 工具來知足你的項目需求。服務器

1. Jenkins 介紹

CI/CD 工具選型:Jenkins 仍是 GitLab CI/CD?

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 提供的一些最重要的特性:ide

  1. 免費、開源且易安裝

Jenkins 在 macOS、Unix、Windows 等平臺上都很是容易安裝。它能夠與 Docker 結合,爲自動化做業帶來更高的一致性和額外的速度。它能夠能夠做爲一個 servlet 運行在 Apache Tomcat 和 GlassFish 這樣的 Java 容器中。你能夠找到許多支持和文檔來指導整個安裝過程。工具

  1. 普遍的插件生態系統

這個工具的插件生態系統相比於其它 CI/CD 工具來講更成熟。目前,這個生態系統提供了 1500+ 插件。因爲這些插件的範圍從特定語言開發工具到構建工具,這使得定製化變得很是簡單便利。所以,你不須要購買昂貴的插件。Jenkins 插件集成也適用於一些 DevOps 測試工具。佈局

  1. 易於安裝和配置

這個工具的配置過程很是簡單,只須要在安裝時操做一些步驟。Jenkins 的升級過程也不麻煩且很是直接。並且其提供的支持文檔對於你根據本身的需求配置工具也幫助很大。開發工具

  1. 有用的社區

如你所知,這是一個開源項目,擁有一個龐大的插件生態系統,全部插件的功能都獲得了大量社區貢獻的支持。伴隨 Jenkins 的驚人的社區參與度也是促進其成熟的一個主要緣由。

  1. 提供 REST API

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

  1. 支持並行執行

Jenkins 支持並行測試。你能夠輕鬆將它與不一樣的工具集成並獲得構建是否成功的通知。開發者甚至能夠在不一樣的虛擬機上並行執行多個構建來加速測試過程。

  1. 輕鬆分配工做

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

3. GitLab CI/CD 介紹

CI/CD 工具選型:Jenkins 仍是 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 設置,例如,你的網站的插件和主題。

  1. 里程碑設置

工具中的里程碑設置是跟蹤問題、改進系列問題、繪製倉庫的請求的一種很好的方法。你能夠輕易將項目里程碑分配給任何問題,或者合併項目中不常見的請求,或者將組裏程碑分配給一組問題,或者合併該組中任何項目的請求。

  1. 自動伸縮的持續集成運行器

自動伸縮的 GitLab 持續集成運行器能夠輕鬆管理和節省 90\% EC2 成本。這真的很是重要,特別是對於並行測試環境。並且,對於組件級別或者項目級別的運行器,能夠跨代碼庫使用。

  1. 問題跟蹤和問題討論

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

  1. 使用訪問控制管理 Git 倉庫

你能夠經過訪問權限輕鬆管理 git 倉庫。你能夠輕鬆地向單個倉庫的協做者授予寫入 / 讀取訪問權限,甚至特定組織的成員也能夠對組織的倉庫進行更細粒度的訪問控制。

  1. 活躍的社區支持

活躍且進步的社區是 GitLab CI/CD 的一個主要加分點。提供的全部支持都是開箱即用的,不須要在額外的插件安裝中進行修改。

  1. 代碼評審和合並請求

GitLab CI/CD 不只僅用於構建代碼,還用於評審代碼。它容許使用簡單的合併請求和合並管理系統來進行改進協做。它幾乎支持全部的版本控制系統和構建環境。在 GitHub 項目下實現了大量協做方案,這些項目有助於 GitLab CI/CD 的擴展。

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

Jenkins 和 GitLab CI/CD 都有它們很是擅長的領域和各自的技術追隨者。然而,在討論 Jenkins vs GitLab CI/CD 之爭時,會討論許多功能。下圖是這兩個 CI/CD 工具提供的全部功能的比較。CI/CD 工具選型:Jenkins 仍是 GitLab 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 工具時,除了突出的特性,你還應該查看價格列表和內部熟練度。

做者介紹:Rahul Jain 是 LambdaTest 的一名數字營銷專家,熱愛閱讀和寫做關於最新技術趨勢、SEO、體育和旅行相關的內容。

做者 | Rahul Jain策劃 | 田曉旭文章轉自:InfoQ

相關文章
相關標籤/搜索