從 Day16 - Day22 我們花了不少時間建立了 CI/CD 流水線,有了這些工具後,交付應用的方式就變得相當簡單,只需要建立 Commit 上傳到 Repo ,CI/CD 就會自動化部屬到 Kubernetes 裡面。
當專案團隊人數越來越多,在使用 Git 上就需要導入 Workflow,簡單講就是一套使用 Git 的流程,讓大家有規矩可以遵守,現在已經有像是 Git flow
、Github Flow
、Gitlab flow
等發展成熟的開發流程,可以根據開發習慣、專案內容等資訊挑選出適合團隊的 Git Workflow。
圖片取至 GitLab Flow
為了方便 Demo ,本次 Lab 設計的 Git Workflow 相當簡單,主要分為 dev ( 開發分支 ) 以及 master ( 部屬分支 ),開發人員會將程式 Push 到 dev 分支上,並藉由 Merge Request 合併到 master 分支上,接著就來實際走過整個流程吧。
為了學習 Git Workflow 的整個流程,我們先來修改一下應用程式,並建立新的 Commmit 。
進入 Cloud Shell 網站
點擊左上 Explorer -> Open Folder -> 選擇 project 資料夾 -> Open
app.js
並將 res.send()
回傳的字串修改res.send('This is my Version 2 App')
專案修改完成後就可以上傳至 Git Repo ,這裡要注意不能直接在 master 分支上做 Commit ,需要建立新的分支並從分支 Commit。
實務上會使用 Protected branches 方式保護 master 使其無法直接 Push 。
cd ~/project
git branch dev
git checkout dev
git add .
git commit -m "Create Version 2 App"
git push origin dev
Username for 'https://gitlab.com':
Password for 'https://user@gitlab.com':
可以看到 dev 分支成功上傳。
現在假設我們的應用程式開發完成,準備要進入部屬階段,就可以建立 Merge Request ,將 dev ( 開發分支 ) 合併到 master ( 部屬分支 ) 上。
Merge requests
-> 點選 New merge request
dev
, Target branch 選擇 master
,接著點選 Compare branches and continue
Create merge request
Merge Request 就建立完成了,在同意 Merge 之前,會先檢查 CI/CD Pipeline 測試有無問題,並且進行 Code Review ,部屬前的檢查都沒問題後,就可以請有權限的人合併。
Merge
合併分支合併到 master 後,就會再次執行 CI/CD Pipeline。
若你的 CI/CD Pipelines 正常執行,在 ArgoCD 就可以看到 stage 環境部屬成功。
ArgoCD 每隔三分鐘才會去檢查 Git Repo 是否有做更新,所以會需要等待一段時間。
Stage 環境是一個與生產環境相仿的測試環境,在這裡我們會對服務進行實際測試。
測試過沒有問題,就可以回到 CI/CD 流水線去觸發 prod-deploy 的 stage。
我們走過一遍從開發者修改 Code 到把應用程式進入部屬環境的整個流程,就用一張流程圖來了解今天到底做了什麼。
到這裡,進階篇就算正式結束了,明天開始就會進入實戰篇,討論一些實務上會遇到的一些問題。最後附上我自己建立的 GitLab Repository 給大家做個參考。