推薦 10 個好用的 CI/CD 工具
編輯 | Lisa
雖然雲平台的到來讓開發者免於安裝和維護物理伺服器,但測試和部署代碼過程依舊需要人為完成,持續集成可以自動消除構建、測試和部署代碼的大部分痛苦。如果希望最大限度提高效率,持續集成和交付工具是最好的選擇。
實際上,所有開發者都可在軟體開發中使用 CI/CD,但團隊使用可以獲得更大優勢,尤其是大型團隊,因為他們通常在處理相同的互鎖代碼塊。持續集成最全面的實現是在測試之前構建代碼,尋找未被發現的錯誤和不兼容問題,這些可能是由不同的團隊成員寫入代碼時創建的,持續集成伺服器可以同步所有程序員的工作,並幫助團隊檢測所有問題。
雖然 CI/CD 熱度不退,但完全自動化的部署方式會讓團隊管理者感到不踏實,因此很多團隊習慣在此過程中添加一些手動暫停,並增加問責制和其他保證代碼在可控範圍內的規則,這種混合方法被稱為持續交付,因為它將代碼提供給某一階段或測試集群,並等待開發者最終推向生產。
如果在伺服器機房中持續集成非常好,那麼在雲中可以實現更快交付和更高效率。在最好的情況下,雲可以拆分任務並行運行。服務從大量硬體開始,然後在許多團隊之間共享,只要所有人不同時推送代碼,構建和測試將運行得很快。
或許,唯一令團隊擔心的問題就是失去控制。所有雲服務都需要將代碼交給第三方,這種選擇可能讓某些人感到不自由。即便所有的雲服務都在努力強調安全性,但依舊讓人擔心。以下是在雲中進行持續集成的 10 種不同選項,可以幫助開發者更好得適應這一過程。
CloudBees
CloudBees 核心源自 Jenkins,這是著名的持續集成開源項目,添加了測試支持以及代碼運行保證。該公司將所有實驗插件清理乾淨,添加了一些自研實驗插件,然後打磨正確以便在需要時如期工作。
CloudBees 僱用了 80%的 Jenkins 開發團隊,為開源項目貢獻代碼,因此可以確信他們對這個平台有很好的理解。為了加快速度,CloudBees 還添加了大量並行化工具跟蹤開發過程。
CloudBees 提供各種價位,從免費到入門套件和全年服務,並為需要該工具但不需要雲計算的開發者提供 Jenkins 支持。
AWS CodePipeline
亞馬遜用於持續集成和部署的工具 AWS CodePipeline 經過優化,可以將代碼交付給 AWS 伺服器,同時為代碼和數據提供更複雜的路徑。基本工具為主要編程語言(Java,Python,Node.js,Ruby,Go,Android,.Net Core for Linux)提供了一個很好的預配置構建環境,發送之前將結果轉儲到 S3 中並關閉伺服器就可以開始運行。
CodeBuild 在 CodePipe 由 CodePipeline 觸發時從 CodeCommit 中獲取最新結果,並將其交給 CodeDeploy。如果需要配置大量 Code 代碼,可以直接跳到 CodeStar,這提供了另一層面的自動化。在技術上並不需要支付任何代碼層費用,亞馬遜收取的費用主要是沿途使用的計算和存儲資源。
Bitbucket Pipelines
Atlassian 是流行的 Jira 和代碼庫 Bitbucket 背後的公司,決定創建 Bitbucket Pipelines(Bitbucket 雲中的持續集成工具)以包括更多集成。構建機制和 Atlassian 其他工具之間的連接形式成為重點,因此這隻作為 Bitbucket 中項目的一個選項,另一個選項指向部署。
如果開發者選擇為主要語言(Java,JavaScript,Python,PHP,.Net 等)定義的模板,則只需單擊幾下即可構建和部署代碼,除此之外的選項不存在。Atlassian 確實鼓勵一個似乎是圖表和 webhook 混合到其他服務的應用程序市場。在我寫這篇文章時,圖表上的頂級應用程序會將 Bitbucket 與 Jenkins 連接起來,大概是為了做一些無法在牆內快速完成的事情。
Pipelines 的主要優點是速度,Atlassian 已預先設計從代碼到運行部署的大多數主要途徑,只需花費幾美元就可以使用。很難比較使用 Bitbucket 的成本,因為構建只需幾分鐘,就像大多數無伺服器模型一樣,團隊通常會使用一組實例來處理 Jenkins 構建。
GitLab CI / CD
Atlassian 最大的競爭對手之一是 GitLab。GitLab 的構建,測試和部署機制同樣直接連接到其 Git 存儲庫,因此可以根據規則觸發。該過程主要圍繞 Docker 容器構建,可以大大簡化圍繞 Jenkins 構建必須完成的一些配置工作。
構建任務可以針對任何語言,但必須由 GitLab Runner 觸發,GitLab Runner 是一個用 Go 編寫的自動縮放工具,適用於大多數平台。這種靈活性意味著可以在其他計算機上觸發任何任務,這對於精心設計的架構而言可能非常有用,這些架構不僅僅提供微服務。
定價與級別捆綁在一起以滿足需求,最高級別可以獲得最佳功能,比如安全儀錶板和在共享機器集群上構建 50,000 分鐘,部分流程中使用自己的計算機或在其他雲中使用單獨的實例是免費的。
CircleCI
許多持續集成工具專註於在 Linux 環境中構建代碼。CircleCI 既可在 Linux 環境中構建和提供,也可以構建 Android 應用程序以及 Xcode(適用於 iOS,MacOS,tvOS 或 watchOS)。
CircleCI 使用 Docker,在其所有層次中為代碼配置測試環境。構建從新容器開始,所有測試也是如此,Mac 工作在類似的虛擬機中,避免了配置中的一些問題。
定價主要集中在構建的 CPU 數量上。用戶數和存儲庫數量上限為無窮大,但構建分鐘數和容器數是計量的。第一個容器是免費的,可以在其中運行一個構建,如果想要更多並行性或更高吞吐量,需要收費。
Travis CI
如果構建需要在 Windows 機器上測試的代碼,那麼 Travis CI 可以提供一站式服務。該公司已經提供了一段時間的 MacOS 和 Linux 選項,剛剛推出 Windows 選項,讓生成更多代碼變得更加簡單。
目前,Linux 代碼支持 Ubuntu 基本版本,Mac 代碼以 OS X,Xcode 和 JDK 的十幾種組合之一運行。Windows 代碼只支持一個版本的 Windows Server(1803)。Travis CI 提供 30 多種語言支持列表,並構建預先配置且可以運行的規則。
定價基於一次執行的並發任務數,但這些構建可以佔用的分鐘數沒有正式限制。定製化工作沒有免費選項,但開源項目永遠免費,這可能是嘗試 Travis CI 最簡單的方法。
Azure Pipelines
雖然,Azure 可能沒有太多提供 ENIAC 程序員,但確實為代碼提供 Microsoft、Linux 和 MacOS 路徑。該堆棧包含 Docker 容器和 Azure 硬體。如果更喜歡命令行,則可以使用 YAML 指定。
有免費並行任務試用,1800 分鐘的構建時間。如果想要更多的並行性或更多構建時間則需要付費。
CodeShip
使用持續集成工具時,配置任務列表通常是最大的挑戰。CodeShip 在兩個服務級別採用兩種不同的方法。基礎版本計劃包括大量自動化和預配置以及圖形用戶界面,用於設置任務的大致輪廓。高級版本允許配置和用於定義構建環境的 Docker 容器,可以選擇將多少個構建專用於任務以及可能的配置。
基礎版本提供免費套餐,包括一台構建機器,無限制項目和人員,但每月只有 100 個構建。如果超過 100 個項目,並希望在一個月內完成所有項目,則需要付費。一旦付費,就沒有構建數量或者花費多少時間的上限,只需選擇構建和測試即可處理任務。
Sauce Labs
以上大多數工具集中在編排從存儲庫到部署的代碼流,Sauce Labs 則專註於測試。基於雲的服務提供了各種各樣的組合,以確保一切正常。如果想在 Windows 10 上運行的 Firefox 58 上進行測試,或者在 MacOS 上的 Firefox 56,只要選擇 Java,Node,Ruby 或 PHP 等其中之一,測試腳本就可以用選擇的語言編寫,雲將並行定位每個處理器。 Sauce Labs 專門將測試與其他 CI 工具或管道集成,因此可以在本地運行 Jenkins,然後將測試委託給 Sauce Labs。
Jenkins and Hudson
在雲中啟動持續集成最簡單的方法之一是租用伺服器實例並啟動 Jenkins 或 Hudson。二者很久以前就開始用作測試 Java 代碼的程序,當開發人員和 Oracle 之間出現爭議時,其分成了兩個陣營,開發人員需要認真查看開源許可。
雖然 Jenkins 和 Hudson 可能已經開始作為構建 Java 項目的工具,但其早已超越這個利基市場,並可處理幾乎所有語言,有數千個插件來處理構建、打包、測試和部署。代碼是開源的,因此使用時不需要額外付費,只需支付伺服器費用和配置時間。
參考鏈接
https://www.infoworld.com/article/3341320/ci-cd/cicd-as-a-service-10-tools-for-continuous-integration-and-delivery-in-the-cloud.html?nsdr=true&page=2
點個好看少個 bug
??
※創新技術重塑未來物聯網
※對不起,我用代碼評審毀了程序員的生活
TAG:InfoQ |