Zadig 構建究竟有何強大?一起來實踐

語言: CN / TW / HK

Zadig on Github

Zadig on Gitee

有了 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 構建不僅於此,對技術細節感興趣的同學建議參考以往推文:

Zadig 構建快取如何配置才好用?

Zadig 構建效率提升 40% 背後的實踐思路

參考連結:

[1] https://docs.koderover.com/zadig/v1.12.0/settings/system-settings/#任務併發數設定

[2] https://docs.koderover.com/zadig/v1.12.0/project/build/

[3] https://github.com/koderover/zadig/tree/main/examples/multi-service-demo

Zadig,讓工程師更專注創造!

歡迎加入 開源吐槽群🔥

Zadig on Github

Zadig on Gitee