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