CI/CD 最佳實踐的基本原則

Ankit Jain
根據(jù) GitLab 2020 DevSecOps 調(diào)查,幾乎 83%的開發(fā)人員表示,他們正在比以前更快、更頻繁地發(fā)布代碼。59%的公司表示他們幾乎每天都要發(fā)布多次。而這是因為采用了 DevOps 方法,并且主要歸功于持續(xù)集成、自動化測試和持續(xù)部署。

持續(xù)集成和持續(xù)部署(CI/CD)是許多組織使用的敏捷方法。它正在幫助這些組織有效、安全地發(fā)行軟件。

根據(jù) GitLab 2020 DevSecOps 調(diào)查,幾乎 83%的開發(fā)人員表示,他們正在比以前更快、更頻繁地發(fā)布代碼。59%的公司表示他們幾乎每天都要發(fā)布多次。而這是因為采用了 DevOps 方法,并且主要歸功于持續(xù)集成、自動化測試和持續(xù)部署。

每個組織都試圖在建立 CI/CD 流水線時引入自己的方法,最終找到完美的平衡,我們通常將其稱為“最佳實踐”。本文就來談一些有效且安全的 CI/CD 流水線的基本原則。

1

可靠性

在軟件開發(fā)生命周期中擁有 CI/CD 流水線工具是組織能夠快速構(gòu)建和交付應(yīng)用程序的一大福音,但與此同時,選擇正確的 CI/CD 工具也相當重要,其應(yīng)當能夠隨業(yè)務(wù)組織發(fā)展而擴展,并且運行準確無誤。而且,它還應(yīng)該足夠靈活,可以處理多種用例和多種軟件交付需求。

2

CI 流水線應(yīng)當很快

使 CI/CD 流水線盡可能快是非常重要的。我們所有的自動化測試都運行在開發(fā)環(huán)境中的 CI 流水線上,而其最終會被部署到生產(chǎn)環(huán)境中。因此,涵蓋所有邊緣情況和潛在的致命失效非常重要,同時,我們需要確保所有這些更改不會在我們的代碼中造成任何無法預(yù)料的錯誤。因此,同時保持 CI 流水線簡單、快速和安全非常重要。

隨著微服務(wù)架構(gòu)的廣泛采用,CI 流水線變得簡單明了(不同于單體架構(gòu)的情形)。但是如果流水線任務(wù)繁重,最好移除一些不會產(chǎn)生重大影響的測試,并且記錄下這種取舍。我們還應(yīng)該確定測試的優(yōu)先順序。運行較快的測試應(yīng)首先執(zhí)行。例如,單元測試比較快,而且是程序功能或模塊的基礎(chǔ),因此應(yīng)當首先執(zhí)行,然后再進行功能測試和集成測試。這樣,我們可以盡早發(fā)現(xiàn)錯誤并節(jié)省時間。開發(fā)者應(yīng)該在推送代碼之前在本地運行測試以盡早發(fā)現(xiàn)錯誤。

3

在獨立環(huán)境中構(gòu)建和運行

從 CI/CD 流水線的安全性以及確保它類似于預(yù)發(fā)布環(huán)境和生產(chǎn)環(huán)境的角度講,在獨立的環(huán)境中運行 CI/CD 流水線一直都很重要,這可以確保我們的測試結(jié)果更加準確。

我們可以使用 Docker 或其他任何容器化工具來運行我們的測試套件,也可以在 Docker 容器中為我們的應(yīng)用程序安裝其他依賴。這樣,我們可以確保測試在完全隔離的環(huán)境中運行,并且不受底層主機的任何影響。由于我們的 CI/CD 平臺可以完全訪問我們的代碼倉庫,因此大多數(shù)組織也習(xí)慣于在自己的云平臺基礎(chǔ)設(shè)施中部署 CI/CD 工具以確保安全。

許多組織邁出了更大一步,他們還在隔離環(huán)境中渲染和測試 UI 組件。在將它們作為獨立的構(gòu)建塊交付并集成到一個或多個項目中之前,此過程是一種驗證它們確實獨立的方法(這通常使用 Bit(Github)完成)

4

預(yù)發(fā)布環(huán)境和生產(chǎn)環(huán)境等價

建議始終保持預(yù)發(fā)布環(huán)境和生產(chǎn)環(huán)境等價,以避免運行測試時發(fā)生意外錯誤導(dǎo)致發(fā)布暫停這種小概率事件。我們的 CI/CD 流水線首先經(jīng)過運行測試和在預(yù)發(fā)布環(huán)境中部署的階段。測試后,該應(yīng)用會自動升級(或手動部署)到生產(chǎn)環(huán)境。

使開發(fā)和測試環(huán)境完全等價于生產(chǎn)環(huán)境非常困難,但我們可以在需要時做出決定保持他們盡可能相似,并且了解我們正在做出的取舍。大多數(shù)組織還使用“藍綠部署”或“金絲雀發(fā)布”的部署策略,在該策略中,我們首先在生產(chǎn)環(huán)境中部署應(yīng)用并處理大約 1% 的流量。然后將流量提高到 100%,或者也可以較為輕松的回滾到之前的版本。

5

總結(jié)

所有 CI/CD 工具都不相同,每個組織都盡可能以最有效和便捷的方式利用 CI/CD。但以上是一些最佳實踐,每個人都應(yīng)注意并遵循這些最佳實踐,以避免將來出現(xiàn)問題。每個組織都應(yīng)授權(quán)并僅通過 CI/CD 流水線來發(fā)布軟件,以提高代碼質(zhì)量和組織的編碼規(guī)范。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論