iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
DevOps

DevOps 好想學!新手也能打造雲端 Study Lab系列 第 23

Day23 - 有了 CI/CD Pipeline ,還需要合適的 Git Workflow

前言

從 Day16 - Day22 我們花了不少時間建立了 CI/CD 流水線,有了這些工具後,交付應用的方式就變得相當簡單,只需要建立 Commit 上傳到 Repo ,CI/CD 就會自動化部屬到 Kubernetes 裡面。

https://ithelp.ithome.com.tw/upload/images/20210923/201392359tT1x9lagR.png

當專案團隊人數越來越多,在使用 Git 上就需要導入 Workflow,簡單講就是一套使用 Git 的流程,讓大家有規矩可以遵守,現在已經有像是 Git flowGithub FlowGitlab flow 等發展成熟的開發流程,可以根據開發習慣、專案內容等資訊挑選出適合團隊的 Git Workflow。

圖片取至 GitLab Flow

為了方便 Demo ,本次 Lab 設計的 Git Workflow 相當簡單,主要分為 dev ( 開發分支 ) 以及 master ( 部屬分支 ),開發人員會將程式 Push 到 dev 分支上,並藉由 Merge Request 合併到 master 分支上,接著就來實際走過整個流程吧。

上傳新 Commit

為了學習 Git Workflow 的整個流程,我們先來修改一下應用程式,並建立新的 Commmit 。

  1. 進入 Cloud Shell 網站

  2. 點擊左上 Explorer -> Open Folder -> 選擇 project 資料夾 -> Open

  1. 點擊 app.js 並將 res.send() 回傳的字串修改

https://ithelp.ithome.com.tw/upload/images/20210923/20139235dJmB1tudxo.png

res.send('This is my Version 2 App')

專案修改完成後就可以上傳至 Git Repo ,這裡要注意不能直接在 master 分支上做 Commit ,需要建立新的分支並從分支 Commit。

實務上會使用 Protected branches 方式保護 master 使其無法直接 Push 。

  1. 建立 dev Branch
cd ~/project
git branch dev
git checkout dev
  1. 建立 Commit 並 Push 到 GitLab 上
git add .
git commit -m "Create Version 2 App"
git push origin dev
  1. 輸入 GitLab 帳號密碼後按 Enter
Username for 'https://gitlab.com': 
Password for 'https://user@gitlab.com':
  1. GitLab 網站,找到 web app 的 Repository

https://ithelp.ithome.com.tw/upload/images/20210923/20139235ymsLSSZfRK.png

可以看到 dev 分支成功上傳。

建立 Merge Request

現在假設我們的應用程式開發完成,準備要進入部屬階段,就可以建立 Merge Request ,將 dev ( 開發分支 ) 合併到 master ( 部屬分支 ) 上。

  1. 點擊左邊 Merge requests -> 點選 New merge request

https://ithelp.ithome.com.tw/upload/images/20210923/20139235iIrUsSYwEt.png

  1. Source branch 選擇 dev, Target branch 選擇 master ,接著點選 Compare branches and continue

https://ithelp.ithome.com.tw/upload/images/20210923/20139235NY5cjNkZkP.png

  1. 點選 Create merge request

https://ithelp.ithome.com.tw/upload/images/20210923/20139235EORU79Uhn7.png

Merge Request 就建立完成了,在同意 Merge 之前,會先檢查 CI/CD Pipeline 測試有無問題,並且進行 Code Review ,部屬前的檢查都沒問題後,就可以請有權限的人合併。

  1. 點選 Merge 合併分支

https://ithelp.ithome.com.tw/upload/images/20210923/20139235m6Zkfr7JUb.png

合併到 master 後,就會再次執行 CI/CD Pipeline。

  1. 到 CI/CD Pipelines 介面,等待所有 Stages 通過

https://ithelp.ithome.com.tw/upload/images/20210923/20139235iRZntu6W2T.png

若你的 CI/CD Pipelines 正常執行,在 ArgoCD 就可以看到 stage 環境部屬成功。

  1. 到 ArgoCD 的 webapp-stage Application 查看,會看到新的 Sync Result

https://ithelp.ithome.com.tw/upload/images/20210923/20139235rRPsuHnGKZ.png

ArgoCD 每隔三分鐘才會去檢查 Git Repo 是否有做更新,所以會需要等待一段時間。

Stage 環境是一個與生產環境相仿的測試環境,在這裡我們會對服務進行實際測試。

  1. 到 Stage App 的網站上,確認服務正常運行

https://ithelp.ithome.com.tw/upload/images/20210923/201392356tBdRaFxbC.png

測試過沒有問題,就可以回到 CI/CD 流水線去觸發 prod-deploy 的 stage。

  1. 回到 CI/CD Pipelines 介面,點擊 prod-deploy 的 stage 開始執行

https://ithelp.ithome.com.tw/upload/images/20210923/20139235hXmVkiQ3ID.png

  1. 回到 ArgoCD 的 webapp-prod Application 查看,等待一段時間就會看到新的 Sync Result

https://ithelp.ithome.com.tw/upload/images/20210923/2013923593FAWMFk9s.png

我們走過一遍從開發者修改 Code 到把應用程式進入部屬環境的整個流程,就用一張流程圖來了解今天到底做了什麼。

https://ithelp.ithome.com.tw/upload/images/20210923/20139235yMDidlxvtQ.png

總結

到這裡,進階篇就算正式結束了,明天開始就會進入實戰篇,討論一些實務上會遇到的一些問題。最後附上我自己建立的 GitLab Repository 給大家做個參考。


上一篇
Day22 - ArgoCD 建立應用程式
下一篇
Day24 - 為 Kubernetes 應用增添 Database
系列文
DevOps 好想學!新手也能打造雲端 Study Lab30

尚未有邦友留言

立即登入留言