在過去十年中,持續集成(Continuous Integration,CI)和持續部署(Continuous Delivery,CD)工具的開發取得了重大進展。 軟件開發與運維(Development Operations,DevOps)一體化技術的發展導致對CI/CD工具的需求快速增長。 現有的解決方案不斷地被改進,努力與時俱進,它們的新版本不斷發布,在質量保證軟件(Quality Assurance,QA)的世界裡,不斷出現許多新產品。 面對如此豐富的選擇,選擇合適的工具並非易事。
在所有現有的 CI/CD 工具中,有兩個項目絕對值得關注這個領域的人。 我們談論的是 Jenkins 和 GitLab CI/CD 工具,它是 GitLab 平台的一部分。 詹金斯有超過
以 G2 平台的數據為例,該平台積累了各種產品的評論以及用戶給予的評分。 這是平均評分
如果我們談論 Jenkins 與其他類似平台相比的受歡迎程度,我們注意到我們發表了一篇比較 Travis CI 和 Jenkins 平台的文章,並安排了一項調查。 85 位用戶參與其中。 受訪者被要求選擇他們最喜歡的 CI/CD 工具。 79% 的人選擇了 Jenkins,5% 的人選擇了 Travis CI,16% 的人表示他們更喜歡其他工具。
投票結果
在其他 CI/CD 工具中,GitLab CI/CD 被提及的次數最多。
如果您認真對待 DevOps,則需要仔細選擇合適的工具,同時考慮項目的具體情況、預算和其他要求。 為了幫助您做出正確的選擇,我們將回顧 Jenkins 和 GitLab CI/CD。 這有望幫助您做出正確的選擇。
詹金斯簡介
Jenkins 開發人員創建了另一個項目 Jenkins X,旨在在 Kubernetes 環境中工作。 Jenkins X 集成了 Helm、Jenkins CI/CD Server、Kubernetes 和其他工具來構建遵循 DevOps 最佳實踐的 CI/CD 管道。 例如,這裡使用 GitOps。
Jenkins 的腳本結構良好、易於理解且易於閱讀這一事實可以為 Jenkins 的優勢錦上添花。 Jenkins 團隊創建了大約 1000 個插件,旨在組織 Jenkins 與各種技術的交互。 腳本可以使用身份驗證系統,例如,它允許您連接到各種封閉系統。
在 Jenkins 流水線的運行過程中,你可以觀察到每一步發生了什麼,某些階段的工作是否成功完成。 但是,您可以在不使用特定圖形界面的情況下觀看所有這些內容,而是使用終端的功能。
詹金斯的特點
Jenkins 的著名特性包括易於設置、各種操作的高度自動化以及出色的文檔。 如果我們談論解決 DevOps 任務,那麼這裡 Jenkins 被認為是一個非常可靠的工具,通常使用它來密切監視項目處理的整個過程是沒有意義的。 其他 CI/CD 工具並非如此。 讓我們談談 Jenkins 的一些最重要的特性。
▍1. 免費、開源、多平台支持
Jenkins 可以運行在 macOS、Windows 和 Linux 平台上。 它還可以在 Docker 環境中運行,允許您組織統一且快速執行的自動化任務。 該工具還可以在支持 Java 的容器(例如 Apache Tomcat 和 GlassFish)中作為 servlet 運行。 定性安裝 Jenkins
▍2。 開發的插件生態系統
Jenkins 插件生態系統似乎比其他 CI/CD 工具的插件生態系統成熟得多。 目前有超過 1500 個 Jenkins 插件。 這些插件旨在解決範圍廣泛的任務,在它們的幫助下,您可以自動化各種項目。 豐富的免費插件可供選擇,這意味著如果您使用 Jenkins,則不必購買昂貴的付費插件。 有可能
▍3. 易於安裝和設置
Jenkins 相當容易安裝和配置。 同時,更新系統的過程也非常方便。 在這裡,再次值得一提的是文檔的質量,因為您可以在其中找到與安裝和配置 Jenkins 相關的各種問題的答案。
▍4. 友好的社區
如前所述,Jenkins 是一個開源項目,其生態系統包含大量插件。 圍繞 Jenkins 開發了一個由用戶和開發人員組成的大型社區,以幫助開發該項目。 社區是推動 Jenkins 發展的因素之一。
▍5。 REST API 的可用性
在使用 Jenkins 時,您可以使用擴展系統功能的 REST API。 用於遠程訪問系統的 API 以三個版本呈現:XML、支持 JSONP 的 JSON、Python。
▍6. 支持並行執行任務
Jenkins 支持 DevOps 任務的並行化。 它可以很容易地與相關工具集成,並接收有關任務結果的通知。 通過使用不同的虛擬機組織項目的並行構建,可以加速代碼測試。
▍7. 支持在分佈式環境中工作
Jenkins 允許您使用多台計算機組織分佈式構建。 該特性適用於大型項目,使用工作方案,根據該方案有一個 Jenkins 主服務器和幾個從機。 從機還可以用於需要在不同環境中組織項目測試的情況。 這些特性使 Jenkins 有別於其他類似項目。
GitLab 簡介
GitLab CI/CD 最初作為獨立項目發布,但在 2015 年,這套工具被集成到 GitLab 8.0 中。 單個 GitLab CI/CD 服務器可以支持超過 25000 個用戶。 基於這樣的服務器,您可以創建高可用性的系統。
GitLab CI/CD 和主要的 GitLab 項目是用 Ruby 和 Go 編寫的。 它們是在 MIT 許可證下發布的。 GitLab CI/CD 除了 CI/CD 工具的常用功能外,還支持與工作調度相關的其他功能。
將 GitLab CI/CD 集成到項目中非常容易。 使用 GitLab CI/CD 時,項目代碼處理過程被劃分為多個階段,每個階段可以由按特定順序執行的多個任務組成。 任務可以微調。
任務可以並行運行。 設置好階段和任務的順序後,CI/CD 管道就可以運行了。 您可以通過監視任務的狀態來監視其進度。 因此,使用 GitLab CI/CD 非常方便,或許比其他同類工具更方便。
GitLab CI/CD 和 GitLab 的特點
GitLab CI/CD 是最受歡迎的 DevOps 工具之一。 該項目以高質量的文檔著稱,其功能簡單易用。 如果您還不熟悉 GitLab CI/CD,此工具的以下功能列表將使您大致了解您可以從中得到什麼。 需要注意的是,其中許多功能都與 GitLab 平臺本身有關,其中集成了 GitLab CI/CD。
▍1. 人氣
GitLab CI/CD 是一種相對較新的工具,已得到廣泛使用。 GitLab CI/CD 已經慢慢成為一種非常流行的 CI/CD 工具,用於自動化測試和軟件部署。 它的設置很簡單。 它也是 GitLab 平台內置的免費 CI/CD 工具。
▍2。 支持 GitLab Pages 和 Jekyll
Jekyll 是一個靜態站點生成器,可以在 GitLab Pages 系統中使用它來創建基於 GitLab 存儲庫的站點。 系統獲取源材料並基於它們生成現成的靜態站點。 您可以通過編輯文件來控制此類網站的外觀和功能 _config.yml
,由傑基爾使用。
▍3. 項目策劃能力
由於能夠規劃項目階段,跟踪問題及其組的便利性增加了。 這使您可以管理項目的工作組織,計劃在特定日期實施。
▍4. CI 運行器的自動縮放
由於負責執行特定任務的運行器的自動縮放,您可以節省大量租用服務器容量的成本。 這非常重要,尤其是涉及到並行測試項目的環境時。 此外,這對於由多個存儲庫組成的大型項目也很重要。
▍5。 問題跟踪工具
GitLab 強大的問題跟踪能力使得許多開源項目都使用了該平台。 GitLab CI/CD 允許並行測試不同的代碼分支。 在系統界面中方便地分析測試結果。 這使 GitLab CI/CD 有別於 Jenkins。
▍6. 限制對存儲庫的訪問
GitLab 平台支持限制對存儲庫的訪問。 例如,可以為在存儲庫中協作處理項目的人員分配適合其角色的權限。 對於企業項目尤其如此。
▍7. 積極的社區支持
圍繞 GitLab 開發了一個活躍的社區,這有助於該平台及其工具的開發,特別是 GitLab CI / CD。 GitLab CI/CD 和 GitLab 的深度集成,除其他外,可以很容易地找到使用 GitLab CI/CD 時出現的問題的答案。
▍8. 支持各種版本控制系統
GitLab CI/CD 是一個系統,它不僅可以處理託管在 GitLab 存儲庫中的代碼。 例如,代碼可以存儲在GitHub倉庫中,使用GitLab CI/CD可以在GitLab的基礎上組織CI/CD流水線。
Jenkins 與 GitLab CI/CD 的比較
Jenkins 和 GitLab CI/CD 都是非常好的工具,它們都能夠讓 CI/CD 流水線順暢運行。 但如果你比較它們,就會發現,儘管它們在許多方面相似,但在某些方面卻彼此不同。
描述
詹金斯
亞搏體育app CI / CD
開源還是閉源
開源
開源
安裝
必需的。
不需要,因為這是 GitLab 平台的內置功能。
獨特的功能
插件支持。
深度集成到版本控制系統中。
支持
不見了。
可用的。
安裝與配置
困難不因
困難不因
系統自部署
這是使用該系統的唯一方法。
支持的。
創建 CI/CD 管道
支持,使用 Jenkins 管道。
支持的。
應用性能監控
不見了。
可用的。
生態系統
有超過 1000 個插件。
該系統正在 GitLab 中開發。
API
支持先進的API系統。
提供 API 以更深入地集成到項目中。
JavaScript 支持
可用的。
可用的。
與其他工具集成
支持與其他工具和平台的集成(Slack、GitHub)。
許多用於與第三方系統集成的工具,尤其是與 GitHub 和 Kubernetes 的集成。
代碼質量控制
支持 - 使用 SonarQube 插件和其他插件。
支持的。
Jenkins 和 GitLab CI/CD 的區別
在描述和比較 Jenkins 和 GitLab CI/CD 之後,讓我們關注這些 DevOps 工具之間的差異。 了解這些差異將幫助您了解那些更喜歡其中一種工具的人。
- GitLab CI/CD 可以完全控制 Git 存儲庫。 我們正在談論管理存儲庫分支和一些其他功能。 但是 Jenkins,雖然它可以與存儲庫一起工作,但並沒有像 GitLab CI / CD 那樣提供對它們的相同級別的控制。
- Jenkins 是一個免費的開源項目。 選擇它的人獨立部署它。 而 GitLab CI/CD 包含在 GitLab 平台中,這是一個交鑰匙解決方案。
- GitLab CI/CD 支持在項目級別工作的高級任務管理工具。 Jenkins 的這一面不太發達。
Jenkins 和 GitLab CI/CD:優點和缺點
現在您對 Jenkins 和 GitLab CI/CD 有了一些了解。 現在,為了讓您更好地了解這些工具,讓我們來看看它們的優點和缺點。 我們假設您已經決定了需要哪種工具。 希望本節能讓您進行自我測試。
▍詹金斯的優勢
- 大量的插件。
- 完全控制工具安裝。
- 跑步者的簡單調試。
- 簡單的節點設置。
- 簡單的代碼部署。
- 非常好的憑證管理系統。
- 靈活性和多功能性。
- 支持各種編程語言。
- 該系統在直觀層面上是可以理解的。
▍Jenkins的弱點
- 插件使用起來可能很棘手。
- 在小型項目中使用 Jenkins 時,自行配置所需的時間可能會非常長。
- 缺乏關於 CI/CD 鏈的一般分析信息。
▍GitLab CI/CD 的優勢
- 與 Docker 良好集成。
- 跑步者的簡單縮放。
- 並行執行屬於 CI/CD 管道階段的任務。
- 在建立任務關係時使用有向無環圖模型。
- 由於運行器並行執行的可能性,具有高水平的可擴展性。
- 易於添加任務。
- 簡單的衝突解決。
- 可靠的安全系統。
▍GitLab CI/CD 的弱點
- 對於每個任務,您需要描述和上傳/下載工件。
- 您無法在實際合併之前測試合併分支的結果。
- 在描述 CI/CD 流水線的階段時,還不可能挑出其中的各個階段。
結果
Jenkins 和 GitLab CI/CD 各有優缺點。 選擇什麼這個問題的答案取決於特定項目的需求和特徵。 今天審查的每個 CI/CD 工具都有某些特性,儘管這些工具是為解決相同的問題而創建的。 同時,Jenkins 是一個獨立的工具,而 GitLab CI/CD 是專為代碼協作而設計的平台的一部分。
在選擇 CI/CD 系統時,除了它的功能之外,還應該考慮可能與之相關的成本,以及支持該項目的 DevOps 工程師究竟習慣於使用什麼。
你使用什麼 CI/CD 工具?
來源: www.habr.com