實作系列 - 3: 建構 AWS 上的 CICD 流程(3)

更新 發佈閱讀 5 分鐘

CodeDeploy 簡介

AWS CodeDeploy 的主要目的是將部署過程變得自動化、高效且無需人工干預,並且支援藍綠部署、滾動部署等多種部署策略,有助於確保應用程式的高可用性和持續交付。

CodeDeploy 的工作流程大致如下:

  1. 創建部署組:部署組定義了目標實例,並指定在哪些實例上進行部署。
  2. 建立部署應用程式:在 CodeDeploy 中,首先需要創建一個應用程式(Application),並將其與特定的部署組關聯。這樣 CodeDeploy 就能知道目標實例或 Lambda 函數。
  3. 設定部署規範文件(appspec.yml):appspec.yml 是 CodeDeploy 用來執行如何將應用程式部署到目標實例的配置文件。
  4. 執行部署:一旦配置完成,便可以執行部署流程。
  5. 監控與回滾:部署成功後,應用程式會被標記為「已部署」,若發生錯誤,系統將根據設置的策略進行回滾。

部署規範文件與範例

部署規範文件相較於建構規範文件簡單許多,通常包含四個主要項目:

  • version:定義文件格式的版本。
  • os:指定部署的操作系統(通常為 linuxwindows)。
  • 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 流程。建立方法有兩種:

  1. 使用 AWS 管理控制台:透過 AWS 管理控制台建立 CodePipeline,只需在介面上新增並設定連結即可。然而,這種方式有很多細節需要注意。
  2. 使用 AWS CLI 指令:需要編寫配置文件並使用指令執行,之後再到 AWS 控制台檢查設定並進行調整。

從長遠來看,使用 AWS CLI 創建 CodePipeline 會更具靈活性。這樣不僅可以更精確地自訂 CodePipeline 的內容,還可以為將來創建其他 CodePipeline 提供可重複使用的配置文件,避免因為手動設置而造成疏失與錯誤。

當然,這種方法的缺點是,CodePipeline 的配置文件相對較為複雜,需要更多的學習和操作。

另外,要特別注意的是,每次在管理控制台中操作並更新 CodePipeline 後,必須點擊右上角的 Release Change 按鈕,以確保更新生效。

結語

至此,我們已經大致介紹了如何在 AWS 上建構完整的 CICD 流程。從 CodeBuild 到 CodeDeploy,再到 CodePipeline,每個步驟都至關重要,並協同工作確保應用程式能夠高效、自動化地部署。

謝謝大家的閱讀!希望這些內容能幫助你在實踐中順利搭建 AWS 上的 CICD 流程。

參考資料

  1. https://www.ernestchiang.com/zh/notes/aws/codebuild/#文件
  2. https://shazi.info/一條龍佈署-cicd-從-github-跑-travis-到-aws-codedeploy-travis-到-codedeploy/
  3. https://aws.plainenglish.io/how-to-run-local-builds-using-the-aws-codebuild-agent-13bd78dacbf2
  4. https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
留言
avatar-img
林柏宇的沙龍
2會員
57內容數
test
林柏宇的沙龍的其他內容
2025/05/25
這篇文章繼續介紹 AWS CICD 的流程,特別是如何建立和配置 buildspec.yml 文件。內容涵蓋建構階段、環境變數設定、緩存策略及建構產物的定義等重要部分,並提供範例以助於讀者理解。進一步提升 CICD 流程的效率,是開發者與團隊的寶貴資源。
Thumbnail
2025/05/25
這篇文章繼續介紹 AWS CICD 的流程,特別是如何建立和配置 buildspec.yml 文件。內容涵蓋建構階段、環境變數設定、緩存策略及建構產物的定義等重要部分,並提供範例以助於讀者理解。進一步提升 CICD 流程的效率,是開發者與團隊的寶貴資源。
Thumbnail
2025/05/18
本文將介紹如何在 AWS 雲端環境中建立 CI/CD 流程,涵蓋使用 AWS 的 CodeBuild、CodeDeploy 和 CodePipeline 等服務。這個流程讓每次程式碼上傳後,可以自動化執行測試和部署。文章中將說明運作流程、建構過程以及最佳實踐,幫助讀者順利導入 CI/CD。
Thumbnail
2025/05/18
本文將介紹如何在 AWS 雲端環境中建立 CI/CD 流程,涵蓋使用 AWS 的 CodeBuild、CodeDeploy 和 CodePipeline 等服務。這個流程讓每次程式碼上傳後,可以自動化執行測試和部署。文章中將說明運作流程、建構過程以及最佳實踐,幫助讀者順利導入 CI/CD。
Thumbnail
2025/05/11
在軟體工程中,利用臨時儲存來提升系統性能是個重要的方法。本文深入探討了各種臨時儲存技術的使用模式和特點。將分析不同快取類型如快取的工作原理、 Redis 的高效儲存以及 Session 如何在無狀態的 HTTP 協議中保持用戶狀態。本文將使開發者更瞭解這些技術在提高應用效能中的關鍵角色。
Thumbnail
2025/05/11
在軟體工程中,利用臨時儲存來提升系統性能是個重要的方法。本文深入探討了各種臨時儲存技術的使用模式和特點。將分析不同快取類型如快取的工作原理、 Redis 的高效儲存以及 Session 如何在無狀態的 HTTP 協議中保持用戶狀態。本文將使開發者更瞭解這些技術在提高應用效能中的關鍵角色。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
透過充分利用 AWS Organizations 和 CloudFormation StackSets,您可以更好地實現企業級的雲端管理與控制,為業務的持續發展提供穩固的技術支撐。
Thumbnail
透過充分利用 AWS Organizations 和 CloudFormation StackSets,您可以更好地實現企業級的雲端管理與控制,為業務的持續發展提供穩固的技術支撐。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
在這篇文章中,我們將介紹工作與以前念書時期在開發流程上的差異,並深入瞭解CI/CD、Travis CI以及加解密的應用。 CI/CD是自動化的軟體開發實踐,而加解密則是保護機密資料安全的重要技術。
Thumbnail
對 AWS Certified Cloud Practitioner 證照考試難度的看法、學習方法和考試內容的介紹。
Thumbnail
對 AWS Certified Cloud Practitioner 證照考試難度的看法、學習方法和考試內容的介紹。
Thumbnail
實驗目的:Lambda@Edge (L@E) 讓 CLoudFront (CF) 回源時,自動選擇較近的 S3 region 回源
Thumbnail
實驗目的:Lambda@Edge (L@E) 讓 CLoudFront (CF) 回源時,自動選擇較近的 S3 region 回源
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
Thumbnail
在本篇文章中,將會設定 Cloud Run,以便每當將程式修改並推送到 GitHub 時,它都會使用 Cloud Build 自動構建和部署應用程序的最新版本。
Thumbnail
AWS CloudFront + S3 遇到 CORS 解決方式
Thumbnail
AWS CloudFront + S3 遇到 CORS 解決方式
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News