iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
DevOps

我獨自升級:從水管工走向 DataOps系列 第 22

【Day 22】Data Pipeline CI / CD - AWS CodePipeline

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20241006/20135427CJ44OWqht6.png

什麼是 AWS CodePipeline?

AWS CodePipeline 是 Amazon Web Services (AWS) 提供的一項全託管持續交付(CD)服務。它幫助您快速可靠地自動化應用程序的構建、測試和部署流程。通過 CodePipeline,您可以快速且一致地交付功能和更新。

AWS CodePipeline 是一項持續交付服務,可用來建立模型、視覺化和自動化發行軟體所需的步驟。您可以快速建立模型並設定軟體版本程序的不同階段。 CodePipeline 會自動化持續發佈軟體變更所需的步驟。

官方介紹如上,簡單說就是 CD 的服務,但也可以說是 AWS CI/CD 的核心,從來源取得程式碼、建立環境測試、部署等等,所有的流程都是在 AWS CodePipeline 做設定和整合

CodePipeline 的主要特點

  • 自動化部署流程: 從源代碼變更到生產環境部署,整個過程都可以自動化。
  • 整合多種服務: 可以輕鬆整合 AWS 服務和第三方開發工具。
  • 視覺化界面: 提供直觀的可視化界面,方便監控和管理管道。

工具一多起來就會開始覺得有 GUI 真好/images/emoticon/emoticon07.gif,還好基本上新出的服務都會有~

  • 自定義工作流: 可以根據特定需求定制部署工作流。
  • 版本控制集成: 支持多種版本控制系統,如 GitHub、Bitbucket、CodeCommit等。

CodePipeline 的基本認識

Pipeline(管道?)

不知道為什麼翻成管道就覺得超怪/images/emoticon/emoticon36.gif
還是用 Pipeline 最直接~或是感覺用「流程」還比較不怪~

是一個定義應用程式或服務如何從來源碼程式碼到部署的流程。
每個 pipeline 包含一系列 Stages(階段),每個階段對應於發布流程中的不同特定任務。

Stages(階段)

每個 Pipeline 由多個階段組成,每個階段可以進行不同任務或甚至多個Actions(操作)。階段之間是依序執行的,取決於在階段的設計,例如程式提交後,會觸發建立(build)階段,接下來可能會觸發自動測試和部署。

常見的階段

  • Source: 檢測程式碼存儲庫的變更。
  • Build: 編譯程式碼,運行單元測試。
  • Test: 執行更多全面的測試,如整合測試。
  • Deploy: 將應用部署到指定的環境中。

Actions(操作)

在每個階段中,您可以定義一個或多個操作。例如從專案程式庫中拉取(pull)代碼、運行 build 指令或進行自動化測試等。

整體來說就是,Pipeline 包含多個 Stages(階段),每個 Stages(階段)又可以包含多個 Actions(操作)

建立過程說明

今天不會實作完整的 CodePipeline,但針對上面提到的內容,可以看一下具體在 AWS 當中對應的區塊,和可以做的,預計是過幾天的實作才會有完整的步驟~
https://ithelp.ithome.com.tw/upload/images/20241006/20135427r3NcDks9ls.png

可以從左篇區塊直觀看到預設有 sourcebuilddeploy 的預設 stage

Execution mode 主要有三種:

  • Superseded : 默認模式,較新的執行可以覆蓋較舊的執行,適用在需要快速反應最新變更的項目。
  • Queued : 需要 CodePipeline V2 第二版,按順序處理所有執行。
  • Parallel : 需要 CodePipeline V2 第二版,允許多個執行並行,變更之間相互獨立,不會互相影響,且資源充足可以同時處理。

Service role

上方的設定是直接新增一個 role,可以直接進到 AWS IAM 就能找到對應的 role,再根據需要存取的內容,將對應的權限加到 role 身上,加的方式會有點像 【Day 4】Airflow 連接 AWS S3 - 介紹與 IAM 設定

https://ithelp.ithome.com.tw/upload/images/20241006/20135427rQh3asyWSe.png

source 的 stage 可以看到有多種不同的 provider 可以選擇,如果是新的專案就不要用 CodeCommit 了~畢竟之後也不維護了~

https://ithelp.ithome.com.tw/upload/images/20241006/20135427RZ1RaShinD.png

針對 Repo 的特定分支 branch 監控,例如:如果...(有新的commit)...就...(做XX事)

https://ithelp.ithome.com.tw/upload/images/20241006/20135427QInfKNAHvv.png

Build Stage 可以選擇直接用 Command 執行,或是選擇 Build Providers,當然有昨天介紹的 AWS CodeBuild ,另外也可以選更常見更熱門的 Jenkins~

https://ithelp.ithome.com.tw/upload/images/20241006/2013542761jK9fkNXa.png

需要注意的是 Build 和 Deploy Stage 都是可選的,但是不能都不選,畢竟是要建立 CI / CD,都不選感覺也太任性了~/images/emoticon/emoticon17.gif

Deploy Stage 也有提供許多 Providers,當然包含 AWS 自己的 CodeDeploy

但想要任性還是可以的,不論是整個 CodePipeline 的 Execution mode,或是每個 Stage 具體的內容,都能在建立後再修改,也可以自己另外新增多個 stage,自行命名定義內容都可以~

後記

今天就先這樣吧~接下來幾天應該都是測試相關的內容,願我還有體力和時間能完賽,P 人真的是沒到 Deadline 都不死心的,說的就是我自己/images/emoticon/emoticon06.gif


上一篇
【Day 21】Data Pipeline CI / CD - AWS CodeBuild
下一篇
【Day 23】Data Pipeline 測試 - SQL linter feat. SQLFluff
系列文
我獨自升級:從水管工走向 DataOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言