Zadig 構建究竟有何強大?一起來實踐
有了 Jenkins、GitLab 構建為什麼還要用 Zadig ?它究竟有何獨到之處?
其實 Zadig 構建主要在微服務架構和雲原生技術趨勢下,經過大量企業實踐而誕生的,它是基於容器執行時環境提供的高效雲原生構建引擎。
本文對常規的構建過程不做贅述,主要針對 Zadig 構建的差異化功能做介紹和實踐,通過實踐讓大家逐一瞭解和體驗。其中包含並行構建、構建模版、多服務共享構建、利用 Serverless 資源構建等。
並行構建
一次工作流並行構建多個服務,微服務架構下開發更方便,業務驗證效率大幅提升
同一工作流同一任務的併發
Zadig 系統的工作流可同時觸發多個服務的部署更新。僅執行一次工作流,即可觸發多個服務被同時執行構建
->部署
->測試
->分發
流程,不同服務的構建釋出過程彼此獨立互不干擾,如下圖所示。
同一工作流不同任務的併發
Zadig 同一工作流任務支援併發執行,在工作流中選擇併發執行
,可以開啟工作流任務的併發能力。當多個開發者分別觸發該工作流部署更新不同的服務時,產生的多個工作流任務將會併發執行,後者無需等待,最大限度地提升協作效率。
如果觸發的工作流任務裡不包含部署階段,則即使使用工作流更新相同的服務,同一工作流的多個任務也可併發執行。
目前同一個工作流多個不同的任務支援的併發規則如下:
場景介紹 |
手動觸發 |
定時觸發 |
Webhook 觸發 |
不同服務,同時構建 |
√ |
√ |
x |
相同服務,同時構建 |
√ |
√ |
x |
不同服務,構建部署到同環境 |
√ |
√ |
√ |
不同服務,構建部署到不同環境 |
√ |
√ |
√ |
相同服務,構建部署到不同環境 |
x |
x |
√ |
相同服務,構建部署到同環境 |
x |
x |
x |
值得注意的是 Zadig 構建併發數依賴系統資源的上限,需要管理員在系統設定
針對自身情況設定合理的 任務併發數配額 [1] 。
構建模板
根據不同專案、不同技術棧特徵,制定若干套構建模版,一套模版可以支援數百微服務,運維規範更易落地,運維成本降低數倍
新建構建模板
-
依次訪問
專案
->模板庫
->構建
進入構建模板管理頁面。
-
點選 + 按鈕 -> 填寫模板名稱 -> 填寫模板配置後儲存。
其中構建環境、構建變數及構建指令碼,可參考 構建配置 [2],程式碼資訊在構建模板中是無需配置的,使用構建模板為服務建立構建時可以自定義配置。
結合使用構建變數 $REPONAME_<index>
可巧妙的完成構建模板的配置,比如服務的原始碼及編譯配置在 A 倉庫,Dockerfile 檔案在 B 倉庫,構建配置中的指令碼可組織如下,使用模板時,可按照順序完成對應程式碼庫的配置即可。
#!/bin/bash
set -ex
cd $WORKSPACE/$REPONAME_0/service/
cp $WORKSPACE/$REPONAME_1/dockerfiles/$SERVICE.Dockerfile .
make build
docker build -t $IMAGE -f $SERVICE.Dockerfile .
docker push $IMAGE
使用構建模板
建立構建時選擇使用模板
-> 填寫構建名稱並選擇構建模板 -> 選擇服務並按需配置程式碼資訊後儲存即可。
多服務共享構建
同一個專案多個服務可以共享一套構建指令碼,不易出錯,還更利於共享維護
如何配置共享構建
以 multi-service-demo [3]為例,該專案包括 3 個 Golang 服務service1/service2/service3,構建相關的目錄結構說明如下:
├── Dockerfile # 定義 3 個服務的 Dockerfile
├── Makefile # 定義 3 個服務的編譯
├── src # 3 個服務的原始碼
├── service1
├── service2
└── service3
建立 Zadig 構建,服務選擇
中選擇多個服務,按需配置構建環境、程式碼資訊、通用構建指令碼等,利用系統提供變數實現構建的共享,本示例中的構建指令碼如下:
cd zadig/examples/multi-service-demo
make build-$SERVICE
docker build -t $IMAGE -f Dockerfile --build-arg service=$SERVICE .
docker push $IMAGE
如何使用共享構建
建立構建配置時指定多個服務,或者建立構建完畢後修改構建,在服務選擇
中選擇多個服務。
也可以在為服務配置構建時,按需選擇複用已有的構建配置實現構建共享。
利用 Serverless 資源構建
單獨為構建配置 Serverless 彈性資源,應對日常構建頻繁的場景,用多少花多少避免浪費
配置構建叢集
目前對騰訊雲 EKS 彈性叢集已做全面相容,雲廠商購買叢集資源後,通過系統設定->叢集管理
新增叢集即可。
使用構建叢集
在構建設定中開啟高階配置,選擇 Serverless 叢集資源。
Zadig 構建不僅於此,對技術細節感興趣的同學建議參考以往推文:
參考連結:
[1] http://docs.koderover.com/zadig/v1.12.0/settings/system-settings/#任務併發數設定
[2] http://docs.koderover.com/zadig/v1.12.0/project/build/
[3] http://github.com/koderover/zadig/tree/main/examples/multi-service-demo
Zadig,讓工程師更專注創造!
- 主機基礎設施如何使用 Zadig 做持續交付
- Zadig 環境負載均衡:0 人工干預,極速部署
- 打通了!Jira Zadig 實現需求與研發過程追蹤
- 雲原生 DevOps 現狀調研問卷徵集:KodeRover 聯合 OSCHINA 推出
- Zadig v1.13.0 相信開放的力量,工作流連通一切價值
- 飛書影片會議端到端整合測試工程實踐經驗總結 - Zadig 應用案例
- 在解決了 2961 個使用者反饋後,我做出了這樣的改變...
- 基於 Ingress Controller 在叢集外訪問 Zadig 自測環境(最佳實踐)
- iMile 利用 Zadig 多雲環境周部署千次,跨雲跨地域持續交付全球業務
- 穩!上千微服務接入 Zadig 的最佳姿勢(Helm Chart 篇)
- 穩!上千微服務接入 Zadig 的最佳姿勢(K8s YAML 篇)
- Zadig 洞態 IAST:讓安全溶於持續交付
- TT 語音落地 Zadig:開源共創 Helm 接入場景,環境治理搞得定!
- 00後雲工程師用 Zadig 為企業研發開源節流
- Zadig 構建究竟有何強大?一起來實踐
- 妙盈科技全面實施 Zadig 擁抱雲原生
- Zadig SonarQube,為開發過程安全保駕
- Zadig v1.12.0 推出 VS Code 外掛,全面支援 GitOps ,好工具就要到最後一公里
- 鈦動科技:我們的 Zadig 落地之路
- 眾樂邦就這樣與 Zadig 結緣了