一千萬個為什麽

搜索

如何使用一個主分支來實現藍綠色部署



我被告知,他們輕松解決的辦法是有兩個生產分支,master/blue和master/green,git合並動作觸發器CI以部署到匹配堆棧。單主分支可以做到嗎?

關於我們的堆棧的更多細節。

  • CloudFront,設置為S3存儲區的來源,為所有前端SPA(單頁應用)靜態資產提供服務。
  • SPA應用程序會與連接AWS Lambda的AWS API Gateway進行對話。
  • AWS Lambda負責使用DynamoDB進行數據庫CRUD操作。
  • 前端應用程序和Lambda函數都有自己的Git倉庫,Git主分支合並操作觸發器2個Circle CI作業,一個將前端資源復制到S3存儲桶,另一個使用無服務器框架部署Lambda。

對於藍綠色部署,我想有2個S3,API網關和Lambda函數實例。為了制作藍綠交換機,我們需要將來自一個S3存儲桶的來源更改為另一個,然後創建無效來清除緩存。

To make the single production git branch blue-green deployment to work, Circle CI needs to know is the current active stack is blue or green, copy & paste/deploy to the other stack, if Circle CI is not able to do that, the alternative that I could think of is to somehow put the checkout_current_active_stack action in the git precommit hook? To be specific:

  1. (在git precommit鉤子中)向當前活動的堆棧API(AWS lambda函數,用於跟蹤當前堆棧信息)發送HTTP請求
  2. 在返回值('藍色'或'綠色')
  3. 上部署基礎

轉載註明原文: 如何使用一個主分支來實現藍綠色部署

一共有 1 個回答:

值得從持續部署“管道”中分離持續集成“構建”。對於構建部分,CircleCI似乎是您的選擇工具,對於後者,我建議使用類似AWS CodeDeploy的技術,它本身支持Build and Deployment Pipeline

分離您的流水線階段有幾個好處:

  1. 您只需從 master 分支編譯/測試一次;然後通過Artefact存儲庫提升包裝。
  2. 您的包永久存儲在Artefact存儲庫中,例如 Sonartype Nexus 或<�一個href =“https://www.jfrog.com/artifactory/”rel =“noreferrer”> JFrog Artifactory ,這意味著您可以復制舊版本,因為您擁有用於部署的特定軟件包。
  3. CodeDeploy將為您處理發布模式,而不必過多考慮如何實現藍綠部署。

同樣值得一提的是,您可以在應用程序版本自動化工具(如BuildMaster)中對整個管道進行建模或Nolio。就個人而言,我更願意從多個3方SaaS解決方案構建我的管道。