持續集成(CI)和持續交付(CD)在過去十年左右時間裏取得了長足的進步。DevOps測試的興起引起了針對CI/CD工具的強烈需求。現有的解決方案一直在與時俱進,無數的新產品或新版本正在進入質量檢查領域。當你有如此多的選擇時,選擇正確的工具必須慎重。git
在全部可用的CI/CD測試工具中,你首先應當考慮的兩個工具是Jenkins和GitLab CI/CD工具。Jenkins在GitHub上擁有16,000多顆星,而GitLab CI/CD僅擁有2012顆。Jenkins是GitLab CI/CD的8倍多。可是,這些數字並非選擇CI/CD工具時惟一須要考慮的問題。這也是爲何儘管星的數量存在巨大差別,但Jenkins 和 GitLab CI/CD仍是在多個檢視平臺上並駕齊驅。編程
以G2[1]爲例,Jenkins在G2上的平均評分爲4.3星,有288條評論,而GitLab CI/CD在G2上的評分爲4.4星,有270條評論。所以咱們所說的Jenkins 和 Gitlab CI/CD在平等的基礎上相互競爭是沒有錯的。有趣的是,Jenkins於2011年發佈,屬於CI/CD業務,它一直是測試人員的首選。然而,自2014年推出以來,GitLab CI/CD一直以其先進的功能進入top位置。咱們在Travis CI vs Jenkins[2]上傳文章,在社交媒體上進行了民意調查[3],結果以下圖:安全
說起最多的另外一工具是GitLab CI/CD。做爲DevOps測試專家,你須要根據項目、預算和其餘要求仔細檢查這些工具。爲了幫助你,我將對Jenkins和GitLab CI/CD進行深刻評估,以幫助你肯定適合你項目要求的正確CI/CD工具。讓咱們從基礎開始分析。服務器
Jenkins介紹併發
Jenkins是著名的可擴展開源CI/CD工具,用於自動化部署。Jenkins徹底用Java編寫,並在MIT許可下啓動。它具備一組強大的功能,能夠自動執行軟件構建、測試、部署、集成和發佈相關的任務。這種用於測試的自動化CI/CD工具可在macOS,Windows和各類UNIX版本(例如OpenSUSE,Ubuntu,Red Hat等)上使用。除了經過本機安裝軟件包外,它還能夠獨立安裝或做爲Docker安裝在任何裝有Java Runtime Environment(JRE)的計算機上。分佈式
Jenkins團隊還有一個名爲Jenkins X的子項目,專門用於運行Kubernetes的無縫集成流水線,開箱即用。Jenkins X巧妙地集成了Helm、Jenkins CI/CD服務器、Kubernetes和其餘工具,以提供具備內置最佳實踐的說明性CI/CD工具管道,例如使用GitOps來指導環境。ide
使用Jenkins的一個優勢是腳本結構合理,易於理解而且可讀性強。Jenkins團隊已經生產了大約1000個插件,使該應用程序能夠與其餘熟悉的技術融合在一塊兒。此外,還可使用插件,例如Credentials Command,它使得在腳本中添加隱藏的身份驗證憑據等變得容易且可行。工具
Jenkins管道開始運行後,你還能夠驗證某個階段(phase)是否經過或失敗,以及每一個階段的總數。你沒法在提供的圖形概述中檢查特定做業的狀態,可是你能夠跟蹤終端中做業的進度。gitlab
Jenkins核心功能佈局
Jenkins以易於設置,自動構建過程以及爲用戶提供大量文檔而聞名。在進行DevOps測試時,Jenkins被認爲是至關可靠的,而且可能沒必要監視整個構建過程,而其餘CI/CD工具則不會。讓咱們看一下Jenkins提供的一些最重要的功能。
免費,開源且易於安裝。Jenkins可輕鬆用於macOS,Unix,Windows和平臺。它能夠與Docker結合使用,爲自動化做業帶來更高的一致性和額外的速度。它也能夠在Java容器(例如Apache Tomcat和GlassFish)中做爲servlet運行。你能夠找到不少支持和文檔來指導整個安裝過程[4]。
普遍的插件生態系統。與其餘CI/CD工具相比,Jenkins的插件生態系統更加成熟。目前,它提供了1500多個插件。這些插件的範圍普遍,既有特定語言的開發工具,也有構建工具,它使定製變得容易且有利可圖。所以,你無需購買昂貴的插件。Jenkins插件集成[5]也可用於許多DevOps測試工具。
易於安裝和配置。該工具的安裝和配置過程很是簡單,由於安裝過程僅須要幾個步驟。Jenkins的升級過程也很輕鬆,直接。一樣,提供的支持文檔對根據你的要求配置工具備很大幫助。
樂於助人的社區。如你所知,這是一個具備豐富插件生態系統的開源項目,全部插件和功能都獲得了社區的普遍支持。Jenkins伴隨着社區的驚人蔘與是其成熟的主要緣由之一。
提供REST API。Jenkins提供了RESTful應用程序編程接口以實現可擴展性。Jenkin的遠程訪問API具備三種不一樣的風格:帶有JSONP支持的Python,XML和JSON。Jenkins網站上的頁面之一包含有關Jenkins API的描述性文檔,可幫助擴展。
支持並行執行。Jenkins智能地支持並行測試。你能夠輕鬆地將其與不一樣的工具集成,並在構建成功或失敗時得到通知。開發人員甚至能夠跨不一樣的虛擬機並行執行多個構建,從而加速其測試套件的執行。
輕鬆分配工做。它能夠絕不費力地運行分佈式工做,即,任務在不一樣的計算機上運行,而不會影響GUI(圖形用戶界面)。值得注意的是,與其餘CI/CD工具相反,只有該特定工具才能使用運行GUI關聯任務的相同實例。
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和Selenium Grid構建自動測試管道。
GitLab CI/CD之前是一個獨立項目,於2015年9月與GitLab 8.0發行版集成到主要的GitLab軟件中。一個單獨的GitLab CI/CD服務器能夠管理25,000多名用戶,而且極可能會造成高可用性設置多活動服務器。
GitLab CI/CD和GitLab用Ruby和Go編寫,並在MIT許可下啓動。除了其餘CI/CD工具所關注的CI/CD以外,GitLab CI/CD還提供計劃,打包,SCM,發佈,配置和檢查。
GitLab CI/CD還提供了存儲庫,所以GitLab CI/CD的集成很是簡單明瞭。在使用GitLab CI/CD時,階段命令包括一系列階段,這些階段將以精確的順序實現或執行。實施後,將爲每一個做業刻畫並配置各類選項。
每一個做業都是一個階段的一部分,而且將在類似的階段自動與其餘做業並行運行。完成後,將配置做業,並所有準備好運行GitLab CI/CD管道。稍後將說明結果,你將能夠檢查在階段內指定的每一個做業的狀態。這就是GitLab CI/CD與DevOps測試中使用的其餘CI/CD工具的不一樣之處。
GitLab CI/CD核心功能
GitLab CI/CD是用於DevOps測試的最受歡迎的CI/CD工具之一。GitLab CI/CD擁有強大的文檔,易於控制,良好的用戶體驗。若是你不熟悉GitLab CI/CD,我將列出GitLab CI/CD的主要功能,這些功能將幫助你更好地瞭解它。下面一塊兒來看看。
高可用性部署。它被普遍使用,而且是最新的開源CI/CD工具之一。GitLab CI/CD的安裝和配置都很容易。它是內置在GitLab中的免費的自託管CI工具。GitLab CI/CD逐漸發展成爲最流行的用於部署自動化的免費CI/CD工具之一。
Jekyll插件支持。Jekyll插件是一個靜態網站生成器,具備對GitHub Pages的強大支持,它使構建過程更簡單。Jekyll插件支持使用HTML文件和Markdown並根據你的佈局偏好建立一個徹底靜態的站點。經過編輯_config.yml文件,你能夠輕鬆配置大多數Jekyll設置,例如你網站的插件和主題。
里程碑設置。工具中的里程碑設置是跟蹤問題、改進一系列問題以及在存儲庫中繪製請求的絕佳方法。你能夠輕鬆地將項目里程碑分配給任何問題,或者僅合併該項目中的請求,也能夠輕鬆地將組裏程碑分配給問題,或者合併該組中任何項目的請求。
自動縮放CI運行器。自動縮放GitLab CI運行程序能夠輕鬆管理並節省90%的EC2成本。這確實是必不可少的,尤爲是對於並行測試環境。一樣,對於組織級別或項目級別的運行者,這對跨組織的倉庫頗有用。
問題跟蹤和問題改組。因爲其出色的問題跟蹤和問題改組功能,GitLab是衆多開源項目的首選CI/CD工具。它巧妙地使你可以並行測試拉取請求和分支。爲了實現簡單且無端障的監控,測試結果顯示在GitHub UI上。因爲具備簡單的用戶界面,將其與Jenkins進行比較時,使用起來特別友好。
使用訪問控制管理Git存儲庫。你能夠輕鬆地管理具備良好訪問權限的Git存儲庫。你能夠輕鬆地向單個存儲庫中的協做者授予寫/讀訪問權限,即便特定組織的成員也能夠對該組織的存儲庫具備更細化的訪問控制。
積極的社區支持。積極向上的社區是GitLab CI/CD的主要優勢之一。全部支持都是開箱即用的,不須要在其餘插件安裝中進行修改。
代碼審查和合並請求。GitLab CI/CD不只用於構建代碼,還用於審查或檢視代碼。它容許經過簡單的合併請求和合並管理系統改善協做。支持或多或少的全部版本控制系統和構建環境。在GitHub項目下實施了許多協做計劃,這些計劃有助於擴展GitLab CI/CD。
Jenkins和GitLab CI/CD比較快照
Jenkins和GitLab CI/CD都擅長於本身的工做,而且擁有本身的技術支持。然而,在討論Jenkins與GitLab CI/CD之間的鬥爭時,出現了許多功能。如下是這兩個CI/CD工具提供的全部功能之間的比較。
特性 | Jenkins | GitLab CI/CD |
---|---|---|
開源仍是商業 | 開源 | 開源 |
產品類型 | 自託管/開箱即用 | 自託管/開箱即用 |
內置CI/CD | Jenkins 根據需求支持CI/CD | 咱們不須要安裝任何東西,它是內置特性 |
獨有特性 | 插件 | 自動DevOps/容許在同一地方持續構建及代碼管理 |
產品類型 | 自託管/開箱即用 | SaaS/開箱即用 |
官方支持/SLA | 沒有官方支持也沒有SLA | 有 |
安裝配置 | 容易 | 容易 |
自託管選項 | 開源軟件,自託管是惟一使用方式 | 可選 |
構建流水線 | 可經過Jenkins 流水線DSL 定製流水線 | 支持 |
應用性能監控 | 不提供分析性能的特性 | 對全部部署的應用都將展現性能數據 |
生態 | 1000個社區插件 | 支持 |
詳細API | 提供詳細的API | 提供API支持深度整合軟件項目 |
特定語言支持:JavaScript | 是 | 是 |
整合 | 支持與其它工具整合(好比 Slack,GitHub) | 許多第三方整合工具可用,最著名的是GitHub和Kubernetes |
CI/CD部署看板 | CI/CD特性部分支持 | 一個可定製的獨立看板,支持查看流水線歷史和最近狀態 |
API | 支持 | 支持,提供REST API以及最新提供了GraphQL API |
代碼質量 | 提供 Sonarqube 插件進行代碼質量檢查,也支持其它不一樣插件 | GitLab也提供了各類插件進行代碼質量檢查 |
Jenkins與GitLab CI/CD之間的區別
既然你已經看到了Jenkins與GitLab CI/CD的功能比較,如今是時候找出兩種DevOps測試工具之間的差別了。這些差別將幫助你瞭解Jenkins和GitLab CI/CD之戰的真正緣由。
藉助GitLab CI/CD,你能夠徹底控制分支和其餘幾個方面來控制Git存儲庫,以確保代碼免受突發威脅。可是,在Jenkins狀況下,你能控制存儲庫,但範圍有限。它不容許徹底控制分支和其餘構面。
Jenkins是「內部託管」的,而且是「免費開放源代碼」,這是編碼人員偏心它的緣由。另外一方面,Gitlab CI/CD是「自託管」和「免費」的,這就是開發人員更喜歡它的緣由。
在GitLab CI/CD中,每一個項目都有一個跟蹤器,該跟蹤器將跟蹤問題並執行代碼審查以提升效率。在使用Jenkins工具時;它更改了支持集合,並簡化了安裝和配置過程。
Jenkins和GitLab CI/CD功能差別
我但願你如今已經瞭解了Jenkins和GitLab CI/CD工具的兩面。爲了實現這一目標,我還列出了與Jenkins和GitLab CI/CD相關的主要利弊。我知道你已經肯定要使用的DevOps測試工具,本節將幫助你加強對選擇正確的CI/CD工具的信心。
Jenkins的優勢
大型插件庫
自託管,即徹底控制工做區
輕鬆調試運行任務,從而完成工做區控制
易於設置節點
易於部署代碼
很好的憑證管理
功能靈活多變
支持不一樣的語言
很是直觀
Jenkins的缺點
複雜的插件集成。
小型項目相對開銷較大,由於你必須本身設置。
缺少對管道的總體跟蹤的分析。
GitLab CI/CD的優勢
更好的Docker集成
擴展運行任務很簡單
分階段並行執行做業
能夠添加有向無環圖流水線
併發運行程序具備很好的可擴展性
合併請求整合
容易添加工做
易於處理衝突問題
良好的安全和隱私政策
GitLab CI/CD的缺點
須要爲每一個做業定義工件並上載/下載。
在實際合併發生以前不太可能測試分支的合併狀態。
目前尚不支持階段中的階段。
Jenkins與GitLab CI/CD,你應該首選哪一種CI/CD工具?
Jenkins和GitLab CI/CD都有各自的優缺點,你在這兩種CI/CD工具之間的最終選擇徹底取決於項目要求和規格。這些CI/CD工具中的每個都有其自身的優缺點,而且被髮布來知足徹底相同的要求:CI/CD的自動化流程(連續集成和交付)。Jenkins用於持續集成,而Gitlab CI/CD用於代碼協做和版本控制。
除了突出的功能,你還應該瀏覽價格表和內部熟練程度,從而爲DevOps測試挑選最佳的CI/CD工具。
祝你測試愉快!
相關連接:
https://www.g2.com/products/jenkins/reviews
https://www.lambdatest.com/blog/travis-ci-vs-jenkins/
https://www.linkedin.com/posts/sarahelson85_cicd-travisci-jenkins-activity-6691235216599658497-Cs4M
https://www.jenkins.io/doc/book/installing/
https://www.lambdatest.com/support/docs/jenkins-with-lambdatest/
原文連接:https://www.lambdatest.com/blog/jenkins-vs-gitlab-ci-battle-of-ci-cd-tools/
Kubernetes管理員認證(CKA)培訓
本次CKA培訓將於11月20到22日在北京開課,培訓基於最新考綱,經過線下授課、考題解讀、模擬演練等方式,幫助學員快速掌握Kubernetes的理論知識和專業技能,並針對考試作特別強化訓練,讓學員能從容面對CKA認證考試,使學員既能掌握Kubernetes相關知識,又能經過CKA認證考試,學員可屢次參加培訓,直到經過認證。點擊下方圖片或者閱讀原文連接查看詳情。