編者按:本文來自微信公眾號“KodeRover”(ID:KodeRover),作者:Zadig,36氪經授權發布。
GitLab 是一個用于倉庫管理系統的開源項目,因為其能被私有化部署,同時有較好的集成性,被企業廣泛作為代碼托管平臺使用。 Zadig 針對 GitLab 極為友好,結合 GitLab Webhook 的能力,提交 Merge Request 后,就可以自動觸發 Zadig 工作流的執行,完成服務的構建、部署、測試等持續交付過程,在提交代碼后的第一時間可獲得 Zadig 工作流的執行結果。 基于 GitLab + Zadig 介紹一個包含前后端微服務架構 Demo 項目、是如何實現全流程自動化、持續交付的。
下面以 Microservice-demo 項目為例,該項目包含 Vue.js 前端服務和 Golang 后端服務,以下步驟包含從 Code 到 Ship 的整個過程的演示。
項目案例源碼:Zadig該代碼倉庫主要包含服務的 YAML 文件和 構建服務所需的 Dockerfile 文件
建議把源碼放到自己的 GitLab 代碼倉庫后再進行下面的操作。
新建 GitLab OAuth 應用程序
GitLab 管理者可以通過 `Admin Area` > `Applications` 來新建應用程序。
配置 GitLab OAuth 應用程序
在新建應用程序頁面,需要進行以下操作
- 填寫應用的名稱
- 回調地址 http://[zadig.yours.com]/api/directory/codehosts/callback 填寫: [zadig.yours.com]需要替換為 zadig 系統部署的實際地址
- 賦予權限: api、read_user、read_repository
點擊創建
獲取 Application ID、Secret 信息
應用創建成功后,GitLab 會返回應用的相關信息,其中包括 `Application ID` 、`Secret` 信息。
將 Application ID、Secret 集成到系統
切換到 zadig 系統,管理員依次點擊 `系統設置` -> `集成管理` -> `代碼源集成` -> 點擊添加按鈕。
依次填入如下已知信息:
- `代碼源`:此處選擇 GitLab
- `GitLab 服務 URL`:GitLab 地址
- `Application ID`:應用創建成功后返回的 Application ID
- `Secret`:應用創建成功后返回的 Secret
信息確認無誤后點擊 `前往授權`,耐心等待,此時會系統會跳轉到 GitLab 進行授權。
點擊授權按鈕,同意授權后,GitLab 會跳轉到 Zadig 系統,至此 GitLab 集成完畢。
進入 Zadig 系統
新建項目,項目名為`microservice-demo`
zadig 提供兩種方式管理這些模板:
系統平臺管理:在 zadig 中直接輸入 YAML 。
代碼倉導入與同步:從某個 Git 倉中導入,之后提交到代碼倉的 YAML 變更會自動同步到 zadig 系統上。服務 YAML 自動同步到 zadig 系統上的功能會在配置Webhook后生效
這里,我們使用代碼倉導入的方式。文件目錄中準備好了這些 YAML 。現在要做的就是把 backend 和 frontend K8s YAML 依次導入。
加載服務配置:點擊`倉庫托管` 按鈕 -> 選擇倉庫信息 -> 選擇文件目錄。導入成功后,設置自定義變量 `demo_domain` 值,引用系統內置變量`$EnvName`,來區分不同的環境域名。
?
配置后端服務構建:選擇`backend`服務 -> 點擊`添加構建` -> 填寫構建腳本。
構建配置說明:
- 應用列表選擇 `go 1.16.4`?
代碼信息,選擇 `microservice-demo` 所在的代碼倉庫
構建腳本如下:
cd microservice-demo/backend make build-backend docker build -t $IMAGE -f Dockerfile . docker push $IMAGE
cd microservice-demo/backend
make build-backend
docker build -t $IMAGE -f Dockerfile .
docker push $IMAGE
- 保存構建配置
配置前端服務構建:選擇`frontend`服務 -> 點擊`添加構建` -> 填寫構建腳本。?
- 構建配置說明:
cd microservice-demo/frontend docker build -t $IMAGE -f Dockerfile . docker push $IMAGE
cd microservice-demo/frontend
保存構建配置
- 點擊向導的“下一步”。這時,zadig 會根據你的配置,創建兩套環境(dev,qa),以及相關工作流。
- 點擊下一步完成向導。根據配置,已經產生兩套集成環境和三條自動化工作流。
點擊“運行”,可以運行工作流。
選擇需要更新的服務 `backend` 和 `frontend`,點擊“啟動任務”運行工作流。
查看工作流運行狀況:
進入集成環境,查看服務列表,并點擊服務 URL,可以查看網站。
前提條件:配置 GitLab 的 Webhook,Webhook 配置請參考 Zadig 文檔站 [GitLab Webhook]
添加觸發器,使得代碼 push 或者 Pull Request 都觸發 `backend` 和 `frontend` 重新構建和部署:
進入工作流配置頁面
添加 Webhook 觸發器
配置 Webhook 觸發器
backend 服務觸發器配置
如上圖所示,當 backend 文件夾中的代碼變動時會觸發 `backend` 服務的更新
frontend 服務觸發器配置
如上圖所示,當 frontend 文件夾中的代碼變動時會觸發 `frontend` 服務的更新
保存工作流
改動前端代碼:
查看工作流運行情況
查看網站運行結果:
通過以上步驟,我們已經完成了 GitLab + Zadig 的項目配置,可以看到通過集成 GitLab 完成對多個微服務的構建、部署、測試等持續交付過程,通過 Zadig 讓軟件交付變得更絲滑。?
更多最佳實踐:
36氪平臺
Copyright 2021 快鯨
掃碼咨詢與免費使用
掃碼免費用
申請免費使用
在線咨詢