DevOps平台中的自動化部署

2021-10-22 06:35:19 字數 1874 閱讀 9506

基礎概念:

持續整合(continuous integration)指的是,頻繁地將**整合到主幹,以便快速發現錯誤、防止分支大幅度偏離主幹。

持續整合的目的,就是在產品快速迭代的同時保持**質量,它的核心措施主要有兩點:

1)**整合到主幹之前,必須通過自動化測試,只要有乙個測試用例失敗,就不能整合。

2)通過code review、**質量分析工具對**質量進行把關,以便確定是否能夠整合。

martin flower說過, 「持續整合並不能消除bug,而是讓他們非常容易發現和改正。」

從圖例上來看持續整合的流程就十分清晰了:

可以看出,持續整合的 核心 在於 確保新增的**能夠與原先**正確的整合。與後續要介紹的持續交付以及持續部署,其最主要的差別也就在於其目標不同。

不過持續整合的流程還存在一定的異議:上圖所示的流程為 build -> test,在阮老師的教程裡頭是 test -> build。不過,持續整合本身只不過是一種軟體工程的方法或者策略,其並不規定具體的實現。在實際的應用中,還是需要結合具體的開發語言或者工具來定。

持續整合的優勢

和我們一直在使用的 階段整合(完成乙個階段的開發後執行**的整合) 相比, 持續整合 的策略能夠為我們帶來哪些好處呢?

持續交付(continuous delivery)指的是,新版本為了能夠快速安全的交付到生產環境中,需要將新版本先交付到類生產(production-like)環境中(如uat/staging/lab環境),以便進行相應的業務驗證、安全驗證、效能驗證等過程。

一旦類生產環境驗證通過,新版本就進入到生產階段。

持續交付可以看作是持續整合的進一步。它強調的是,不管怎麼更新,軟體是隨時隨地可以交付的。

可以看到,與 持續整合 相比較,持續交付 新增了 test -> staging -> production 的流程,也就是為新增的**新增了乙個保證: 確保新增的**在生產環境中是可用的 。

在這一增加的流程中,test 環節不僅僅包含基本的單元測試,還需要延伸到更為複雜的功能測試以及整合測試等。在這裡,staging 指的是 類生產環境 ,其盡可能的對真實的網路拓撲、資料庫資料以及硬體裝置等資源進行模擬,從而為測試人員反饋**在生成環境中的可能表現。流程中每乙個環節的執行結果都會對開發人員進行反饋,每乙個出現的錯誤都會導致版本的回滾。當測試完畢確認無誤之後,將由相關人員對其進行 手動部署到生產環境。

持續部署(continuous deployment)指的是,新版本通過類生產環境的驗證後,自動部署到生產環境中。

持續部署可以看成持續交付的進一步。持續部署的前提是自動化完成測試、構建、驗證等步驟。

持續部署的目標是,**在任何時刻都可以進入自動地進入生產階段,為終端使用者提供服務。

可以看到,同持續交付相比 持續整合 的區別體現在對 production 的自動化。從開發人員提交**到編譯、測試、部署的全流程不需要人工的干預,完全通過自動化的方式執行。這一策略加快了**提交到功能上線的速度,保證新的功能能夠第一時間部署到生產環境並被使用。

我對於 持續整合、 持續交付 和 持續部署 三者的理解是:

everything is code,devops 也同樣要通過技術工具鏈完成持續整合、持續交付、使用者反饋和系統優化的整合。elasticbox 整理了60+ 開源工具與分類,其中包括版本控制&協作開發工具、自動化構建和測試工具、持續整合&交付工具、部署工具、維護工具、監控,警告&分析工具等等,

補充了一些國內的服務,可以讓你更好的執行實施 devops 工作流。

mysql k8s 自動化部署 devops

部署配置k8s k8s部署mysql 搭建nfs 搭建主存同步 搭建ansible k8s 部署mysql 啟動pv 檢視狀態 檢視svc 檢視pvc 部署ansible 通過ansible部署zookeeper 未通過k8s部署 通過向節點分發zookeeper的gz包 來實現部署 mysql p...

mysql自動化部署方案 什麼是自動化部署?

自動化部署將可交付產品,快速且安全地交付使用者使用的一套系統和工具。系統會自動構建 測試並準備 變更,以便將其發布到指定環境的過程,包括開發環境 預發布環境 生產環境等。自動化部署工具介紹 簡要介紹 該工具是資料庫自動化部署調優工具,支援mysql 8.0.17 8.0.18和postgresql ...

jenkins github自動化平台

ps 專案裡面要配置github的賬戶名和密碼 請自己申請github賬號和建立某個倉庫,測試時,可以push乙個可執行的python xx.py檔案上去 先講git github是乙個世界性的 倉庫,開源,免費和收費版兩種 命令介紹 1.修改遠端 倉庫 git remote add origin ...