《持續交付》(第六章)——構建與部署的指令碼化
本章主要講了使用所有構建和部署工具的原則,給出了在實際工作中所需的基礎知識,而且還給出了一系列的提示和技巧,指出更多的資訊。
構建與部署指令碼化的定義
建立指令碼執行應用程式構建、測試和打包的步驟:
- 在命令列中進行構建
- 利用某個比較流行的測試框架,在很多平臺上執行測試也想對簡單
自動化部署,需要一系列的步驟,比如配置應用程式、初始化資料、配置基礎設施、作業系統和中介軟體,以及安裝所需的模擬外部系統等。
構建和部署系統必須一直保持活力,即這個系統不僅要從專案剛開始就開發,而且一直要持續到軟體開發環境中的維護階段。
構建工具
所有構建工具都有一個共同的核心功能,即可以對依賴關係建模。
構建工具對:1)它做什麼;2)它依賴於什麼這兩點進行建模。
構建工具的不同點在於它是任務導向,還是產品導向的:
- 共同點:
構建工具會遍歷整個網路,呼叫(但不一定執行)每個任務 - 不同點:
- 在任務導向的工具中,每個任務都會知道它自己在構建過程中是否被執行過。
- 在產品導向的工具中,它們是用一系列的檔案建模的。
構建部署指令碼化的原則與實踐
1.為部署流水線的每個階段建立指令碼
確保將所有的指令碼都放到版本控制庫中,並且最好和原始碼放在同一個版本控制庫中。
2.使用恰當的技術部署應用程式
在專案一開始,開發人員、測試人員和運維人員必須合作規劃部署流程。
部署指令碼應該能完成應用程式的安裝和升級任務。
3.使用同樣的腳步向所有環境部署
將配置資訊從指令碼中分離出來,並將其儲存在版本控制庫中,這裡有兩個關鍵點:
1)構建和部署指令碼在開發機器和類生產環境上都能執行
2)開發人員使用這些指令碼進行所有的構建和部署活動
4.使用作業系統自帶的包管理工具
5.確保部署流程是冪等的
無論開始部署時目標環境處於何種狀態,部署流程應該總是令目標環境達到同樣的狀態,並以之為結束點。
6.部署系統的增量式演進
部署指令碼化
環境管理的核心原則之一就是:對測試和生產環境的修改只能由自動化過程執行。也就是說,我們不應該手工登入到這些環境上執行部署工作,而應該將其完全指令碼化。比如:寫個指令碼,讓它登入到每臺機器上,執行適當的命令集;寫個本地執行的指令碼,在每臺遠端機器上安裝一個代理,由代理在其宿主機上本地執行該指令碼;利用作業系統本身的包管理技術打包應用程式。
我的收穫&疑問
收穫
- 消除手工步驟,儘可能使用工具達到自動化
- 部署指令碼可以分階段執行
- 部署指令碼和環境配置資訊應該分開管理
- 使用想對路徑
疑問
- webpack算是構建工具嗎?
- 怎樣區分構建按工具的產品導向和任務導向?
相關文章
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- 持續整合、持續交付、持續部署簡介
- 持續整合、持續部署、持續交付、持續釋出
- CI Weekly #5 | 微服務架構下的持續部署與交付微服務架構
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 太多指令碼將會毀掉持續交付指令碼
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 談談持續整合,持續交付,持續部署之間的區別
- 雲原生入門第六章:持續交付
- 微服務、容器與持續交付微服務
- 持續交付與傳統敏捷的矛盾敏捷
- 移動APP持續交付系列之雲構建價值分析APP
- 如何構建更好的複雜系統?容器、微服務和持續交付微服務
- [譯] 構建、測試、分發!運用 Fastlane 與 Jenkins,完整的 iOS 持續交付指南ASTJenkinsiOS
- Java後端中的持續交付:如何構建從開發到上線的自動化流程Java後端
- 雲原生下的DevOps與持續交付dev
- 持續交付中的分支管理與版本控制
- 持續交付探索與實踐(一):交付流水線的設計
- Jenkins實現持續整合 使用Ant指令碼構建ios專案Jenkins指令碼iOS
- 持續交付一——軟體交付的問題
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python
- 持續交付探索與實踐(二):自動化工具鏈建設
- 持續整合、持續交付和持續部署有什麼區別?0基礎學習linux技能Linux
- [譯文]持續交付與傳統敏捷的矛盾敏捷
- 從持續整合到持續交付——DockerCloud概覽DockerCloud
- SAP開源的持續整合-持續交付的解決方案
- iOS 持續交付之 FastlaneiOSAST
- 通過Sonar 初步構建程式碼持續審查
- 微服務容器部署與持續整合微服務
- 關於持續整合打包平臺的Jenkins配置和構建指令碼實現細節Jenkins指令碼
- vuepress與travis-cli持續整合自動化部署Vue
- Jenkins持續部署-Windows環境持續部署探究1JenkinsWindows
- 持續整合指南:GitHubAction 自動構建+部署AspNetCore專案GithubNetCore
- 容器映象服務聯手 IDE 外掛,實現一鍵部署、持續整合與交付IDE
- 持續程式碼質量管理-Sonar部署
- 基於K8s構建Jenkins持續整合平臺(部署流程)K8SJenkins
- #翻譯#持續交付成熟度模型模型
- GitOps | 一種雲原生的持續交付模型Git模型