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