從昨天的資源架構可以知道,我們的後端是使用ECS作為server,
因此會設計一套ECS使用的CI/CD架構如下圖
綠色部分為CodePipeline,
他是要串起整套CI/CD的資源,
負責用來區分各階段要由哪個資源來做事情,並且會設定觸發CI/CD的事件來源
CodePipeline中我們會切成三個區塊,
分別是來源階段(Source Stage)、建置階段(Build Stage)以及部署階段(Deploy Stage)
- 來源階段(Source Stage):
- CodeCommit是Repository,用來存放程式碼的存放庫,也是我們開發完程式後,會將程式碼推送至此。
- S3 Bucket,在這裡我們會需要存放的是ECS所使用的組態(Task Definition),後續會再詳細說明。
- 建置階段(Build Stage)
- CodeBuild是AWS所提供的建置環境,在這裡會作為Docker的建置使用。
- 部署階段(Deploy Stage)
- CodeDeploy是AWS提供的部署工具,可以用來部署EC2與ECS等。我們這次會使用它來進行ECS藍綠部署。
- CodePiepline外有ECS與ECR,ECR是用來存放Image的資源。
整個流程為
- 程式開發完成,將程式碼推送至CodeCommit,觸發CodePipeline啟動
- CodePipeline在Souece stage拿取CodePipeline的程式碼與S3Bucket中的組態黨備用
- 將Source stage取得的來源透過CodeBuild進行Docker包版,並產生ECS要使用的Image
- 將Image存放至ECR中
- 包板完成後觸發CodeDeploy
- CodeDeploy進行ECS藍綠部署
- 部署時ECS提取ECR內的Image使用
以上就是這次的CI/CD架構
裡面有一些沒提過的東西,後續幾天會在各自的章節交代清楚~