如何選擇基于云的CI/CD平臺(tái)?

2022-10-04    分類: 網(wǎng)站建設(shè)

如何選擇基于云的CI/CD平臺(tái)?

在云中托管CI/CD既可以加快開(kāi)發(fā)管道和源代碼存儲(chǔ)庫(kù)之間的交互,也可以使開(kāi)發(fā)人員的工作更輕松。

如果你的目標(biāo)是高速軟件開(kāi)發(fā)和將工作構(gòu)建頻繁交付到生產(chǎn)環(huán)境,則你需要至少自動(dòng)化部分測(cè)試和交付過(guò)程。

理想情況下,這意味著為你的項(xiàng)目實(shí)施 CI/CD 管道,以及在客戶看到軟件之前捕獲錯(cuò)誤的測(cè)試套件,以及實(shí)現(xiàn)管道步驟的腳本。

持續(xù)集成 (CI) 是一種以一致的方式自動(dòng)化軟件構(gòu)建、打包和測(cè)試的方法。CI 有助于讓團(tuán)隊(duì)相信他們檢查到源代碼版本控制中的更改不會(huì)破壞構(gòu)建或?qū)㈠e(cuò)誤引入軟件。

CI 的端點(diǎn)通常是對(duì)軟件存儲(chǔ)庫(kù)主分支的完整簽入。

持續(xù)交付 (CD) 自動(dòng)將經(jīng)過(guò)測(cè)試的軟件交付到基礎(chǔ)設(shè)施環(huán)境。這通常并不意味著將其直接投入生產(chǎn)以查看客戶是否抱怨。

通常,組織首先將構(gòu)建推送到開(kāi)發(fā)環(huán)境。在開(kāi)發(fā)人員自己擊敗并發(fā)布新版本后,它通常會(huì)進(jìn)入一個(gè)測(cè)試環(huán)境,在那里它被更廣泛的用戶群體使用(有時(shí)只是專門的內(nèi)部測(cè)試人員,有時(shí)更多的用戶注冊(cè)了 beta 測(cè)試或“狗食”)并密切監(jiān)控。

最后,如果一切順利,測(cè)試人員會(huì)簽字并將新版本推送到生產(chǎn)環(huán)境。

在 CD 的每個(gè)階段,都有選項(xiàng)可以快速恢復(fù)到舊版本并生成錯(cuò)誤報(bào)告票供開(kāi)發(fā)人員在新版本中解決。目標(biāo)不是將大量構(gòu)建投入生產(chǎn),而是在不引入回歸的情況下不斷改進(jìn)和增強(qiáng)軟件。這些實(shí)踐的另一個(gè)術(shù)語(yǔ)是“devops”。

為什么要在云中托管 CI/CD?

在你自己的數(shù)據(jù)中心托管 CI/CD 平臺(tái)是一個(gè)可行的選擇,特別是對(duì)于要求在防火墻內(nèi)托管其應(yīng)用程序和數(shù)據(jù)的公司。這樣做的缺點(diǎn)是你需要一個(gè)專門的團(tuán)隊(duì)來(lái)維護(hù)基礎(chǔ)設(shè)施,并且你將承擔(dān)一些服務(wù)器資本支出。

如果允許你在云中托管,通常是更好的選擇。在云中托管的成本適中,運(yùn)營(yíng)費(fèi)用由提供的服務(wù)抵消:入職、基礎(chǔ)設(shè)施維護(hù)、安全維護(hù)、支持和 CI/CD 軟件維護(hù)。在云中托管 CI/CD 軟件通常會(huì)使管道與源代碼存儲(chǔ)庫(kù)交互更容易、更快,如果它們也在云中。

如果你的開(kāi)發(fā)人員和測(cè)試人員分布在不同的地理位置,與在防火墻后面的遠(yuǎn)程服務(wù)器中托管相比,在云中托管你的存儲(chǔ)庫(kù)通常會(huì)給開(kāi)發(fā)人員帶來(lái)更好的體驗(yàn)。

還可以在本地和云服務(wù)器的混合上部署 CI/CD。一些最新的 CI/CD 產(chǎn)品在 Kubernetes 集群上的容器中運(yùn)行,這些集群在本地和云中運(yùn)行同樣愉快。在混合部署方案中,你可以將每個(gè)組件放置在考慮到開(kāi)發(fā)人員本身的物理位置以及開(kāi)發(fā)基礎(chǔ)結(jié)構(gòu)中其他服務(wù)器的網(wǎng)絡(luò)位置最有意義的位置。

CI/CD 必須與你的存儲(chǔ)庫(kù)集成

正如你在閱讀“CI 的端點(diǎn)通常是對(duì)軟件存儲(chǔ)庫(kù)的主分支的完整簽入”時(shí)可能已經(jīng)收集到的那樣,存儲(chǔ)庫(kù)對(duì)于 CI 和 CD 至關(guān)重要。

除了作為簽入和測(cè)試過(guò)程的終點(diǎn)之外,軟件存儲(chǔ)庫(kù)還是存儲(chǔ) CI 和 CD 腳本和配置文件的選位置。是的,許多 CI/CD 平臺(tái)可以在內(nèi)部存儲(chǔ)腳本和其他文件,但通常最好將它們置于工具之外的版本控制中。

幾乎所有 CI/CD 工具都可以與 Git 交互。有些還直接與 GitHub、GitHub Enterprise、GitLab 和/或 Bitbucket 集成。一些還支持 Subversion 和/或 Mercurial。

你的 CI/CD 工具需要支持你的編程語(yǔ)言和工具

每個(gè)編程語(yǔ)言或語(yǔ)言組(JVM 語(yǔ)言、LLVM 編譯語(yǔ)言、.NET 語(yǔ)言等)往往都有自己的構(gòu)建工具和測(cè)試工具。為了對(duì)你有用,CI/CD 工具必須支持作為給定項(xiàng)目一部分的所有語(yǔ)言。否則,你可能需要為該工具編寫(xiě)一個(gè)或多個(gè)插件。

Docker 鏡像對(duì)于分布式、模塊化和微服務(wù)軟件部署變得越來(lái)越重要。如果你的 CI/CD 工具知道如何處理 Docker 鏡像,包括從源代碼、二進(jìn)制文件和先決條件創(chuàng)建鏡像,以及將鏡像部署到特定環(huán)境,那么這將大有幫助。

同樣,如果沒(méi)有這個(gè),你可能需要編寫(xiě)插件或腳本來(lái)實(shí)現(xiàn)你需要的 Docker 功能。同樣,你希望 CI/CD 工具支持 Kubernetes 和你在環(huán)境中使用的任何其他容器編排系統(tǒng)。

你的開(kāi)發(fā)人員是否了解 CI/CD 和你正在考慮的工具?

CI 和 CD 的原理看似顯而易見(jiàn),但細(xì)節(jié)卻并非如此。各種 CI/CD 工具具有不同級(jí)別的支持和文檔。有很多關(guān)于 Jenkins 的書(shū),這并不奇怪,因?yàn)樗亲罟爬系臅?shū)。

對(duì)于其他產(chǎn)品,你可能需要調(diào)查文檔和支持論壇以及付費(fèi)支持選項(xiàng),作為你在選擇工具時(shí)盡職調(diào)查的一部分。

關(guān)于CI的一般背景,請(qǐng)考慮Addison-Wesley的書(shū)《持續(xù)集成》(Continuous Integration),作者是Duvall等人。同樣,對(duì)于CD的一般背景,可以參考Humble和Farley的Continuous Delivery。兩本書(shū)出版時(shí)都獲得了Jolt獎(jiǎng)。

你可以為不同的項(xiàng)目選擇不同的 CI/CD 工具

雖然本指南是關(guān)于選擇 CI/CD 平臺(tái)的,但請(qǐng)不要假設(shè)一個(gè)平臺(tái)對(duì)于你的所有軟件開(kāi)發(fā)項(xiàng)目都是好的。大多數(shù)商店使用多種編程語(yǔ)言和環(huán)境,并不是每個(gè) CI/CD 平臺(tái)都能很好地支持所有這些。

隨意選擇最適合你的每個(gè)項(xiàng)目的 CI/CD 平臺(tái),而不是尋找一個(gè)折衷的平臺(tái)。CI 和 CD 的一般原則從一個(gè)平臺(tái)轉(zhuǎn)移到另一個(gè)平臺(tái),即使你為它們編寫(xiě)的腳本可能并不總是可移植的。

雖然每個(gè)新平臺(tái)的額外入門時(shí)間可能會(huì)讓你的 DevOps 團(tuán)隊(duì)花費(fèi)一些時(shí)間,但這很可能比需要廣泛定制 CI/CD 工具更便宜。

規(guī)劃未來(lái)的 CI/CD 遷移

同樣,請(qǐng)不要假設(shè)給定的 CI/CD 平臺(tái)將永遠(yuǎn)滿足你的項(xiàng)目需求。始終對(duì)沖你的賭注,例如通過(guò)將腳本存儲(chǔ)在存儲(chǔ)庫(kù)中而不是在 CI/CD 工具中。

在適當(dāng)?shù)那闆r下選無(wú)服務(wù)器serverless CI/CD

一般來(lái)說(shuō),云容器部署比云服務(wù)器實(shí)例部署便宜,無(wú)服務(wù)器云部署比容器部署便宜。 不幸的是,在撰寫(xiě)本文時(shí),很少有 CI/CD 平臺(tái)可以無(wú)服務(wù)器運(yùn)行。

無(wú)服務(wù)器意味著運(yùn)行感興趣的進(jìn)程的容器在必要時(shí)被實(shí)例化,通常是為了響應(yīng)一個(gè)事件。 對(duì)于 CI/CD,觸發(fā)事件一般是代碼簽入到特定的存儲(chǔ)庫(kù)分支;然后存儲(chǔ)庫(kù) Webhook 啟動(dòng)無(wú)服務(wù)器進(jìn)程。當(dāng)該過(guò)程完成時(shí),資源被釋放。

少數(shù)可以運(yùn)行無(wú)服務(wù)器的 CI/CD 平臺(tái)之一是無(wú)服務(wù)器 CI/CD,它是無(wú)服務(wù)器框架 Pro 的一部分,是開(kāi)源無(wú)服務(wù)器框架的增強(qiáng)版本。無(wú)服務(wù)器 CI/CD 針對(duì)部署無(wú)服務(wù)器應(yīng)用程序進(jìn)行了優(yōu)化,目前僅在 AWS 上運(yùn)行。你必須確定它是否足夠支持你的應(yīng)用程序以供使用。

在提交之前做一個(gè)概念證明

一旦完全實(shí)施 CI/CD,它就會(huì)成為基礎(chǔ)設(shè)施的重要組成部分。在你加快速度時(shí)請(qǐng)記住這一點(diǎn)。

在開(kāi)始推出 CI/CD 管道之前執(zhí)行嚴(yán)格的概念驗(yàn)證非常重要。在開(kāi)始 CD 階段之前,先將 CI 部分放下。在將任何 CI/CD 管道連接到生產(chǎn)實(shí)例之前,請(qǐng)確保練習(xí)測(cè)試套件和回滾功能,并讓人工參與其中,直到你非常確定自動(dòng)化堅(jiān)如磐石。

當(dāng)前文章:如何選擇基于云的CI/CD平臺(tái)?
當(dāng)前URL:http://www.bm7419.com/news11/201561.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、面包屑導(dǎo)航、網(wǎng)站制作靜態(tài)網(wǎng)站、定制網(wǎng)站、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)