CodeDeploy 簡介
AWS CodeDeploy 的主要目的是將部署過程變得自動化、高效且無需人工干預,並且支援藍綠部署、滾動部署等多種部署策略,有助於確保應用程式的高可用性和持續交付。
CodeDeploy 的工作流程大致如下:
- 創建部署組:部署組定義了目標實例,並指定在哪些實例上進行部署。
- 建立部署應用程式:在 CodeDeploy 中,首先需要創建一個應用程式(Application),並將其與特定的部署組關聯。這樣 CodeDeploy 就能知道目標實例或 Lambda 函數。
- 設定部署規範文件(
appspec.yml
):appspec.yml
是 CodeDeploy 用來執行如何將應用程式部署到目標實例的配置文件。 - 執行部署:一旦配置完成,便可以執行部署流程。
- 監控與回滾:部署成功後,應用程式會被標記為「已部署」,若發生錯誤,系統將根據設置的策略進行回滾。
部署規範文件與範例
部署規範文件相較於建構規範文件簡單許多,通常包含四個主要項目:- version:定義文件格式的版本。
- os:指定部署的操作系統(通常為
linux
或windows
)。 - files:定義需要部署的文件及其目標位置。
- hooks:定義在不同階段執行的命令或腳本(如安裝前、安裝後等)。
version: 0.0
os: linux
files:
- source: /app/*
destination: /var/www/app
hooks:
BeforeInstall:
- location: scripts/stop_server.sh
timeout: 300
AfterInstall:
- location: scripts/start_server.sh
timeout: 300
ApplicationStart:
- location: scripts/application_start.sh
timeout: 300
建造 CodePipeline
完成 CodeBuild 和 CodeDeploy 的配置後,我們可以開始建立 CodePipeline,以實現整個 CICD 流程。建立方法有兩種:
- 使用 AWS 管理控制台:透過 AWS 管理控制台建立 CodePipeline,只需在介面上新增並設定連結即可。然而,這種方式有很多細節需要注意。
- 使用 AWS CLI 指令:需要編寫配置文件並使用指令執行,之後再到 AWS 控制台檢查設定並進行調整。
從長遠來看,使用 AWS CLI 創建 CodePipeline 會更具靈活性。這樣不僅可以更精確地自訂 CodePipeline 的內容,還可以為將來創建其他 CodePipeline 提供可重複使用的配置文件,避免因為手動設置而造成疏失與錯誤。
當然,這種方法的缺點是,CodePipeline 的配置文件相對較為複雜,需要更多的學習和操作。
另外,要特別注意的是,每次在管理控制台中操作並更新 CodePipeline 後,必須點擊右上角的 Release Change
按鈕,以確保更新生效。
結語
至此,我們已經大致介紹了如何在 AWS 上建構完整的 CICD 流程。從 CodeBuild 到 CodeDeploy,再到 CodePipeline,每個步驟都至關重要,並協同工作確保應用程式能夠高效、自動化地部署。
謝謝大家的閱讀!希望這些內容能幫助你在實踐中順利搭建 AWS 上的 CICD 流程。
參考資料
- https://www.ernestchiang.com/zh/notes/aws/codebuild/#文件
- https://shazi.info/一條龍佈署-cicd-從-github-跑-travis-到-aws-codedeploy-travis-到-codedeploy/
- https://aws.plainenglish.io/how-to-run-local-builds-using-the-aws-codebuild-agent-13bd78dacbf2
- https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html