《持續交付》(第六章)——構建與部署的指令碼化

weixin_33912246發表於2017-06-10

本章主要講了使用所有構建和部署工具的原則,給出了在實際工作中所需的基礎知識,而且還給出了一系列的提示和技巧,指出更多的資訊。

構建與部署指令碼化的定義

建立指令碼執行應用程式構建、測試和打包的步驟:

  • 在命令列中進行構建
  • 利用某個比較流行的測試框架,在很多平臺上執行測試也想對簡單
    自動化部署,需要一系列的步驟,比如配置應用程式、初始化資料、配置基礎設施、作業系統和中介軟體,以及安裝所需的模擬外部系統等。
    構建和部署系統必須一直保持活力,即這個系統不僅要從專案剛開始就開發,而且一直要持續到軟體開發環境中的維護階段。

構建工具

所有構建工具都有一個共同的核心功能,即可以對依賴關係建模。
構建工具對:1)它做什麼;2)它依賴於什麼這兩點進行建模。

構建工具的不同點在於它是任務導向,還是產品導向的:

  • 共同點:
    構建工具會遍歷整個網路,呼叫(但不一定執行)每個任務
  • 不同點:
    • 在任務導向的工具中,每個任務都會知道它自己在構建過程中是否被執行過。
    • 在產品導向的工具中,它們是用一系列的檔案建模的。

構建部署指令碼化的原則與實踐

1.為部署流水線的每個階段建立指令碼
確保將所有的指令碼都放到版本控制庫中,並且最好和原始碼放在同一個版本控制庫中。
2.使用恰當的技術部署應用程式
在專案一開始,開發人員、測試人員和運維人員必須合作規劃部署流程。
部署指令碼應該能完成應用程式的安裝和升級任務。
3.使用同樣的腳步向所有環境部署
將配置資訊從指令碼中分離出來,並將其儲存在版本控制庫中,這裡有兩個關鍵點:
1)構建和部署指令碼在開發機器和類生產環境上都能執行
2)開發人員使用這些指令碼進行所有的構建和部署活動
4.使用作業系統自帶的包管理工具
5.確保部署流程是冪等的
無論開始部署時目標環境處於何種狀態,部署流程應該總是令目標環境達到同樣的狀態,並以之為結束點。
6.部署系統的增量式演進

部署指令碼化

環境管理的核心原則之一就是:對測試和生產環境的修改只能由自動化過程執行。也就是說,我們不應該手工登入到這些環境上執行部署工作,而應該將其完全指令碼化。比如:寫個指令碼,讓它登入到每臺機器上,執行適當的命令集;寫個本地執行的指令碼,在每臺遠端機器上安裝一個代理,由代理在其宿主機上本地執行該指令碼;利用作業系統本身的包管理技術打包應用程式。

我的收穫&疑問

收穫

  • 消除手工步驟,儘可能使用工具達到自動化
  • 部署指令碼可以分階段執行
  • 部署指令碼和環境配置資訊應該分開管理
  • 使用想對路徑

疑問

  • webpack算是構建工具嗎?
  • 怎樣區分構建按工具的產品導向和任務導向?

相關文章