文章封面圖片來源:https://medium.com/@brilvio/how-i-implemented-a-ci-build-of-delphi-binaries-using-gitlab-ci-d1123826698f
傳統大多數系統以單體架構居多,若要將其拆分為微服務架構,管理層面一定會難上不少,故建議導入 CI/CD 來減少人為介入。
即便是單體架構,也能夠導入 CI/CD 來減少人為介入。
CI(Continuous integration)
CD(Continuous Deployment)
圖片來源:https://ithelp.ithome.com.tw/articles/10219083
下文將以 Jenkins Pipeline 及 GitLab CI/CD 做比較:
最後我們是選擇使用 GitLab CI/CD,有幾個決定性因素:
我們假設服務和元件的關係可能如下:
服務則可以走以下流程(可視情況而定):
Merge Request 機制(GitLab)等同於 Pull Request 機制(GitHub)
若不想在腳本寫死路徑,可以定義變數來運用!
ReportGenerator:https://github.com/danielpalme/ReportGenerator
GitLab Release CLI tool:https://docs.gitlab.com/ee/user/project/releases/release_cli.html
離線檔:https://learn.microsoft.com/zh-tw/aspnet/core/host-and-deploy/app-offline
搭配容器化機制後的情境示意圖
元件則可以走以下流程(可視情況而定):