2022-10-04 分類: 網(wǎng)站建設(shè)
在云中托管CI/CD既可以加快開發(fā)管道和源代碼存儲庫之間的交互,也可以使開發(fā)人員的工作更輕松。
如果你的目標(biāo)是高速軟件開發(fā)和將工作構(gòu)建頻繁交付到生產(chǎn)環(huán)境,則你需要至少自動化部分測試和交付過程。
理想情況下,這意味著為你的項(xiàng)目實(shí)施 CI/CD 管道,以及在客戶看到軟件之前捕獲錯(cuò)誤的測試套件,以及實(shí)現(xiàn)管道步驟的腳本。
持續(xù)集成 (CI) 是一種以一致的方式自動化軟件構(gòu)建、打包和測試的方法。CI 有助于讓團(tuán)隊(duì)相信他們檢查到源代碼版本控制中的更改不會破壞構(gòu)建或?qū)㈠e(cuò)誤引入軟件。
CI 的端點(diǎn)通常是對軟件存儲庫主分支的完整簽入。
持續(xù)交付 (CD) 自動將經(jīng)過測試的軟件交付到基礎(chǔ)設(shè)施環(huán)境。這通常并不意味著將其直接投入生產(chǎn)以查看客戶是否抱怨。
通常,組織首先將構(gòu)建推送到開發(fā)環(huán)境。在開發(fā)人員自己擊敗并發(fā)布新版本后,它通常會進(jìn)入一個(gè)測試環(huán)境,在那里它被更廣泛的用戶群體使用(有時(shí)只是專門的內(nèi)部測試人員,有時(shí)更多的用戶注冊了 beta 測試或“狗食”)并密切監(jiān)控。
最后,如果一切順利,測試人員會簽字并將新版本推送到生產(chǎn)環(huán)境。
在 CD 的每個(gè)階段,都有選項(xiàng)可以快速恢復(fù)到舊版本并生成錯(cuò)誤報(bào)告票供開發(fā)人員在新版本中解決。目標(biāo)不是將大量構(gòu)建投入生產(chǎn),而是在不引入回歸的情況下不斷改進(jìn)和增強(qiáng)軟件。這些實(shí)踐的另一個(gè)術(shù)語是“devops”。
為什么要在云中托管 CI/CD?
在你自己的數(shù)據(jù)中心托管 CI/CD 平臺是一個(gè)可行的選擇,特別是對于要求在防火墻內(nèi)托管其應(yīng)用程序和數(shù)據(jù)的公司。這樣做的缺點(diǎn)是你需要一個(gè)專門的團(tuán)隊(duì)來維護(hù)基礎(chǔ)設(shè)施,并且你將承擔(dān)一些服務(wù)器資本支出。
如果允許你在云中托管,通常是更好的選擇。在云中托管的成本適中,運(yùn)營費(fèi)用由提供的服務(wù)抵消:入職、基礎(chǔ)設(shè)施維護(hù)、安全維護(hù)、支持和 CI/CD 軟件維護(hù)。在云中托管 CI/CD 軟件通常會使管道與源代碼存儲庫交互更容易、更快,如果它們也在云中。
如果你的開發(fā)人員和測試人員分布在不同的地理位置,與在防火墻后面的遠(yuǎn)程服務(wù)器中托管相比,在云中托管你的存儲庫通常會給開發(fā)人員帶來更好的體驗(yàn)。
還可以在本地和云服務(wù)器的混合上部署 CI/CD。一些最新的 CI/CD 產(chǎn)品在 Kubernetes 集群上的容器中運(yùn)行,這些集群在本地和云中運(yùn)行同樣愉快。在混合部署方案中,你可以將每個(gè)組件放置在考慮到開發(fā)人員本身的物理位置以及開發(fā)基礎(chǔ)結(jié)構(gòu)中其他服務(wù)器的網(wǎng)絡(luò)位置最有意義的位置。
CI/CD 必須與你的存儲庫集成
正如你在閱讀“CI 的端點(diǎn)通常是對軟件存儲庫的主分支的完整簽入”時(shí)可能已經(jīng)收集到的那樣,存儲庫對于 CI 和 CD 至關(guān)重要。
除了作為簽入和測試過程的終點(diǎn)之外,軟件存儲庫還是存儲 CI 和 CD 腳本和配置文件的選位置。是的,許多 CI/CD 平臺可以在內(nèi)部存儲腳本和其他文件,但通常最好將它們置于工具之外的版本控制中。
幾乎所有 CI/CD 工具都可以與 Git 交互。有些還直接與 GitHub、GitHub Enterprise、GitLab 和/或 Bitbucket 集成。一些還支持 Subversion 和/或 Mercurial。
你的 CI/CD 工具需要支持你的編程語言和工具
每個(gè)編程語言或語言組(JVM 語言、LLVM 編譯語言、.NET 語言等)往往都有自己的構(gòu)建工具和測試工具。為了對你有用,CI/CD 工具必須支持作為給定項(xiàng)目一部分的所有語言。否則,你可能需要為該工具編寫一個(gè)或多個(gè)插件。
Docker 鏡像對于分布式、模塊化和微服務(wù)軟件部署變得越來越重要。如果你的 CI/CD 工具知道如何處理 Docker 鏡像,包括從源代碼、二進(jìn)制文件和先決條件創(chuàng)建鏡像,以及將鏡像部署到特定環(huán)境,那么這將大有幫助。
同樣,如果沒有這個(gè),你可能需要編寫插件或腳本來實(shí)現(xiàn)你需要的 Docker 功能。同樣,你希望 CI/CD 工具支持 Kubernetes 和你在環(huán)境中使用的任何其他容器編排系統(tǒng)。
你的開發(fā)人員是否了解 CI/CD 和你正在考慮的工具?
CI 和 CD 的原理看似顯而易見,但細(xì)節(jié)卻并非如此。各種 CI/CD 工具具有不同級別的支持和文檔。有很多關(guān)于 Jenkins 的書,這并不奇怪,因?yàn)樗亲罟爬系臅?/p>
對于其他產(chǎn)品,你可能需要調(diào)查文檔和支持論壇以及付費(fèi)支持選項(xiàng),作為你在選擇工具時(shí)盡職調(diào)查的一部分。
關(guān)于CI的一般背景,請考慮Addison-Wesley的書《持續(xù)集成》(Continuous Integration),作者是Duvall等人。同樣,對于CD的一般背景,可以參考Humble和Farley的Continuous Delivery。兩本書出版時(shí)都獲得了Jolt獎(jiǎng)。
你可以為不同的項(xiàng)目選擇不同的 CI/CD 工具
雖然本指南是關(guān)于選擇 CI/CD 平臺的,但請不要假設(shè)一個(gè)平臺對于你的所有軟件開發(fā)項(xiàng)目都是好的。大多數(shù)商店使用多種編程語言和環(huán)境,并不是每個(gè) CI/CD 平臺都能很好地支持所有這些。
隨意選擇最適合你的每個(gè)項(xiàng)目的 CI/CD 平臺,而不是尋找一個(gè)折衷的平臺。CI 和 CD 的一般原則從一個(gè)平臺轉(zhuǎn)移到另一個(gè)平臺,即使你為它們編寫的腳本可能并不總是可移植的。
雖然每個(gè)新平臺的額外入門時(shí)間可能會讓你的 DevOps 團(tuán)隊(duì)花費(fèi)一些時(shí)間,但這很可能比需要廣泛定制 CI/CD 工具更便宜。
規(guī)劃未來的 CI/CD 遷移
同樣,請不要假設(shè)給定的 CI/CD 平臺將永遠(yuǎn)滿足你的項(xiàng)目需求。始終對沖你的賭注,例如通過將腳本存儲在存儲庫中而不是在 CI/CD 工具中。
在適當(dāng)?shù)那闆r下選無服務(wù)器serverless CI/CD
一般來說,云容器部署比云服務(wù)器實(shí)例部署便宜,無服務(wù)器云部署比容器部署便宜。 不幸的是,在撰寫本文時(shí),很少有 CI/CD 平臺可以無服務(wù)器運(yùn)行。
無服務(wù)器意味著運(yùn)行感興趣的進(jìn)程的容器在必要時(shí)被實(shí)例化,通常是為了響應(yīng)一個(gè)事件。 對于 CI/CD,觸發(fā)事件一般是代碼簽入到特定的存儲庫分支;然后存儲庫 Webhook 啟動無服務(wù)器進(jìn)程。當(dāng)該過程完成時(shí),資源被釋放。
少數(shù)可以運(yùn)行無服務(wù)器的 CI/CD 平臺之一是無服務(wù)器 CI/CD,它是無服務(wù)器框架 Pro 的一部分,是開源無服務(wù)器框架的增強(qiáng)版本。無服務(wù)器 CI/CD 針對部署無服務(wù)器應(yīng)用程序進(jìn)行了優(yōu)化,目前僅在 AWS 上運(yùn)行。你必須確定它是否足夠支持你的應(yīng)用程序以供使用。
在提交之前做一個(gè)概念證明
一旦完全實(shí)施 CI/CD,它就會成為基礎(chǔ)設(shè)施的重要組成部分。在你加快速度時(shí)請記住這一點(diǎn)。
在開始推出 CI/CD 管道之前執(zhí)行嚴(yán)格的概念驗(yàn)證非常重要。在開始 CD 階段之前,先將 CI 部分放下。在將任何 CI/CD 管道連接到生產(chǎn)實(shí)例之前,請確保練習(xí)測試套件和回滾功能,并讓人工參與其中,直到你非常確定自動化堅(jiān)如磐石。
新聞標(biāo)題:如何選擇基于云的CI/CD平臺?
轉(zhuǎn)載來源:http://aaarwkj.com/news/201561.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容