您好,登錄后才能下訂單哦!
這篇“好用的CI/CD工具有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“好用的CI/CD工具有哪些”文章吧。
CI/CD實踐同樣適用于基礎架構和第三方應用程序以及內部開發的應用程序。此外,有許多不同的工具,但都使用類似的模式。可能最重要的是,引導貴公司采用這種新的實踐將使你在公司內有很高的威信,你會成為別人跟隨的領路人。
多年來,一些組織一直對基礎架構采用CI/CD實踐,使用Ansible、Chef或Puppet等工具。Test Kitchen等其他工具可以在最終托管應用程序的基礎架構上執行測試。事實上,那些測試甚至可以將應用程序部署到類似生產環境的環境中,針對更高級配置的生產負載執行應用程序級測試。然而,僅僅能夠測試基礎架構就很了不起。
與一些原始的配置管理工具相比,Terraform還可以使用Test Kitchen測試更短暫更冪等的基礎架構配置。加上Linux容器和Kubernetes,你現在可以使用類似生產環境的規范和資源來測試完整的基礎架構和應用程序部署,這些規范和資源在數小時內而不是數月或數年內創建和停用。一切資源在再次部署和測試之前清除干凈。
然而,你還可以專注于對網絡配置或數據庫數據定義語言(DDL)文件進行版本控制,開始在其上面運行小型CI/CD管道。也許它只是檢查語法、語義或一些最佳實踐。實際上,大多數開發管道開始就是這樣。一旦你搭好了腳手架,就更容易在上面構建。一旦做好準備,你將開始為管道尋找各種用例(use case)。
比如說,我經常在公司內部編寫業務通訊,使用MJML在版本控制中維護。我需要能托管一個Web版本,有些人喜歡能夠獲得PDF,于是我構建了一條管道。現在當我創建新的業務通訊時,將它提交、進行GitLab中的合并請求。這自動創建一個index.html,附有指向業務通訊HTML版和PDF版的鏈接。HTML和PDF文件也在管道中創建。除非有人來查看這些內容,否則這些都不發布。然后,GitLab Pages發布該網站,我可以下載HTML作為業務通訊來發送。將來,我會在合并請求合并時或特殊的審批步驟后自動發送業務通訊。這看起來很簡單,但為我節省了很多時間。這正是這些工具的精髓:它們可以為你節省時間。
關鍵是創建抽象工作的工具,以便它們幾乎沒有變化即可應用于多個問題。我還應該指出,我創建的東西幾乎不需要編寫代碼,只需要幾個簡單的HTML模板、循環處理HTML文件的某個節點,以及往索引頁面填充所有HTML頁面和PDF的另一個節點。
其中一些可能看起來有點復雜,但大部分來自我所使用的不同工具的教程。而許多開發人員樂意在這些類型的工作上與你合作,因為他們可能在完成后也覺得很有用。本文所附的鏈接指向我們計劃為DevOps KC開辦的業務通訊,創建網站的所有代碼都來自我在搞內部業務通訊時所做的工作。
下面介紹的許多工具都能提供這種類型的交互,但一些提供的模式略有不同。這個領域的新興模式是用YAML之類的標記性語言對管道進行聲明性描述,每個階段是短暫冪等的。許多這些系統還通過在管道的不同階段創建有向無環圖(DAG)來確保正確的順序。
這些階段通常在Linux容器中運行,可以在容器中執行任何操作。某些工具(如Spinnaker)僅關注部署組件,提供了其他工具通常不包含的運維功能。Jenkins通常以XML格式來保存管道,大多數交互在GUI中進行,但最近的實現使用了采用Groovy的特定領域語言(DSL)。此外,Jenkins作業通常在已安裝特殊Java代理的節點上執行,由多個插件和預安裝組件組成。
Jenkins在其工具中引入了管道,但用起來有點困難,有幾個地方要注意。最近,Jenkins的開發者決定將社區引向幾個不同的計劃,這些計劃有望為這個項目注入新活力,從而真正將CI/CD帶給大眾。我認為最值得關注的計劃是創建可以將Kubernetes集群變成Jenkins CI/CD平臺的云原生Jenkins。
你進一步了解了這些工具并開始將這些實踐帶入貴公司或運維部門后,很快會有人亦步亦趨。你將提高自己和其他人的生產力。不妨更深入一點介紹這些工具。我們將簡要介紹每款工具,并附有提供更多信息的鏈接。
許可證:MIT
GitLab是CI/CD領域的新成員,但它已經成為弗雷斯特研究公司持續集成工具Wave報告的佼佼者,這在競爭如此激烈的領域實屬不易。什么讓GitLab CI如此出色?它使用YAML文件來描述整條管道。它還有一項名為Auto DevOps的功能,讓較簡單的項目可以自動構建管道,并有內置的多個測試。
該系統使用Herokuish構建包來確定語言及如何構建應用程序。一些語言也可以管理數據庫,這是一項真正關鍵的功能,用于構建新應用程序,并從開發過程一開始將它們部署到生產環境中。該系統與Kubernetes直接集成,并使用多種不同的部署方法之一自動將應用程序部署到Kubernetes集群中,比如基于百分比的部署和藍綠部署。
除了CI功能外,GitLab還提供許多補充功能,比如運維和監控,Prometheus會與你的應用程序一起自動部署;使用GitLab Issues、Epics和Milestones,實現項目組合和項目管理;安全檢查內置于管道中,結果作為多個項目的合并值來提供;以及能夠使用WebIDE直接在GitLab中編輯代碼,甚至可以提供管道的預覽或執行部分以獲得更快的反饋。
許可證:Apache 2.0
GoCD來自Thoughtworks的奇思妙想,這足以證明其功能和效率。對我而言,GoCD與其他工具的區別主要在于其價值流圖功能。實際上,管道可以串聯起來,一條管道為下一條管道提供“素材”。這使得部署過程中擁有不同職責的不同團隊加強了獨立性。將這種系統引入到打算讓這些團隊保持獨立的舊企業時,這項功能可能很有用――但讓每個人使用同樣的工具便于以后找到VSM中的瓶頸,并重新組織團隊或努力提高效率。
讓公司的每個產品都有VSM大有助益;GoCD允許在版本控制中以JSON或YAML來描述,并直觀地顯示所有數據,這使得該工具對于試圖更好地了解自身的企業來說更有價值。先安裝GoCD,僅使用手動批準關卡來描繪你的流程。然后讓每個團隊使用手動批準,以便你可以開始收集哪里存在瓶頸方面的數據。
許可證:MIT
Travis CI是我第一次使用的軟件即服務(SaaS)CI系統,它很棒。管道與源代碼一起存儲成YAML,并與GitHub等工具無縫集成。我不記得上次管道因Travis CI或集成而失效是什么時候了,Travis CI的正常運行時間很長。它不僅可以用作SaaS,還有可以托管的版本。我沒有運行那個版本――有很多組件,安裝全部組件看起來有點困難。我猜想使用Travis CI提供的Helm圖表統統部署到Kubernetes會容易得多。那些圖表尚未部署所有內容,但我確信將來會變得更完善。如果你不想應對麻煩,還可以使用企業版。
然而,如果你在開發開源代碼,可以免費使用Travis CI的SaaS版。這是出色團隊提供的出色服務!這減輕了大量開銷,讓你可以使用很常見的平臺來開發開源代碼,沒必要運行任何東西。
許可證:MIT
Jenkins是CI/CD界最正宗、最值得尊敬的事實上的標準。建議你讀一下Jenkin的開發者兼CloudBees首席技術官Kohsuke撰寫的《Jenkins:Shifting Gears》。它總結了過去十年我對Jenkins及社區的種種感受。他描述了多年來需要的創新,我很高興CloudBees在這場轉型中身先士卒。Jenkins對大多數非開發人員來說難度有點大,向來是管理員的一種負擔。然而,這些方面是他們旨在解決的。
Jenkins配置即代碼(JCasC)應該有助于解決困擾管理員多年的復雜配置問題。這便于通過YAML文件對Jenkins主機進行零接觸配置,類似其他CI/CD系統。Jenkins Evergreen旨在基于不同的用例提供預定義的Jenkins配置,從而使這個過程來得更容易。與普通的Jenkins發行版相比,這些發行版應該更易于維護和升級。
Jenkins 2引入了原生管道功能,有兩種類型的管道。你做一些簡單的事情時,兩種管道用起來都不如YAML那么容易,但它們對于完成更復雜的任務相當好。
Jenkins X堪稱Jenkins的全面轉型,很可能是云原生Jenkins的實現(或至少是大多數用戶使用云原生Jenkins時看到的東西)。它將拿來JCasC和Evergreen,直接在Kubernetes上使用、用其所長。對Jenkins來說,眼下是激動人心的時刻,我期待著它繼續創新、不斷領導這個領域。
許可證:Apache 2.0
我通過Pivotal Labs的人員首次接觸了Concourse,那時它還是早期測試版,當時沒有很多同類的工具。該系統由微服務組成,每個作業都在容器內運行。它最有用的其他工具所沒有的功能之一是,能夠從本地系統運行作業。這意味著你可以在本地開發(假設你連接到Concourse服務器)并運行你構建的代碼,就像在真實的構建管道中運行一樣。此外,你可以從本地系統重新運行失效的構建版本,并注入特定的更改來測試修復程序。
Concourse還有一個簡單的擴展系統,依賴資源的基本概念。大致上來說,你希望提供給管道的每項新功能都可以在Docker鏡像中實現,并作為新的資源類型包含在配置中。這使得所有功能都封裝在一個可以獨立升級和修改的單個不可變工件中,破壞性變更未必同時 破壞所有構建版本。
許可證:Apache 2.0
Spinnaker來自Netflix,關注持續部署多過關注持續集成。它可以與其他工具集成,包括Travis和Jenkins,以啟動測試和部署管道。它還與Prometheus和Datadog等監控工具集成,基于這些系統提供的度量指標做出部署方面的決策。比如說,金絲雀部署使用judge概念和收集的度量指標來確定最新的金絲雀部署是否導致相關度量指標出現任何降級、應該回滾,或確定部署是否可以繼續。
與部署有關的幾項額外的獨特功能涵蓋了討論持續部署時常常被忽視的一個方面,這個方面看似對立,但對成功而言至關重要:Spinnaker有助于使持續部署不那么持續。它將阻止一個階段在某些時間運行,防止部署在應用程序生命周期的關鍵時間內出現。它還可以執行手動審批,確保公司業務從變更獲得最大的好處后才發布。實際上,持續集成和持續部署的全部意義在于,業務需求一有變化,準備好盡快部署變更。
許可證:BSD
Screwdriver是一款異常簡單的工具。它使用微服務方法,依賴Nomad、Kubernetes和Docker等工具充當其執行引擎。
Screwdriver還使用YAML來描述管理,包含許多合理的默認值,因此每個管道的樣板配置較少。配置描述了作業之間可能有復雜依賴項的高級工作流。比如說,可以保證作業在另一個作業之后或之前運行。作業可以并行運行,然后結合。比如說,如果任何依賴項成功或只有所有依賴項成功,你還可以使用邏輯運算符來運行作業。更棒的是,你可以指定從合并請求觸發的某些作業。此外,發生這種情況時,依賴作業不會運行,這樣工件進入到生產環境、仍需要進行審查時可以輕松隔離管道。
以上就是關于“好用的CI/CD工具有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。