使用 Zadig 快速接入 Jenkins 工作流

Jenkins 是一個(gè)是基于 Java 開(kāi)發(fā)的、非常經(jīng)典的開(kāi)源持續(xù)集成項(xiàng)目,被企業(yè)和團(tuán)隊(duì)廣泛應(yīng)用,但 Jenkins 本身并非云原生設(shè)計(jì),隨著微服務(wù)數(shù)量增長(zhǎng)、業(yè)務(wù)架構(gòu)上云 (Kubernetes) 趨勢(shì),工程師還是需要花額外時(shí)間對(duì)接基礎(chǔ)設(shè)施、準(zhǔn)備環(huán)境等等,平均一個(gè)工程師要切換若干個(gè)平臺(tái)才能把一段代碼寫(xiě)上線。通過(guò)現(xiàn)有 Jenkins 接入 Zadig 讓團(tuán)隊(duì)不需要理解 CI/CD 概念,可以快速獲得高并發(fā)的工作流和面向服務(wù)的集成環(huán)境,方便開(kāi)發(fā)日常調(diào)試,不再為缺少測(cè)試環(huán)境,搶占測(cè)試環(huán)境而困擾。
Zadig(https://koderover.com/) 內(nèi)置了面向 Kubernetes、Helm、云主機(jī)/物理機(jī)、大體量微服務(wù)等復(fù)雜業(yè)務(wù)場(chǎng)景的最佳實(shí)踐,為工程師一鍵生成自動(dòng)化工作流。Zadig 不改變現(xiàn)有習(xí)慣和流程,幾乎兼容所有軟件架構(gòu),無(wú)縫集成 GitHub/GitLab、Jenkins、多家云廠商等,運(yùn)維成本極低。
本文主要介紹如何在 Zadig 上快速接入 Jenkins 工作流,實(shí)現(xiàn)端到端的微服務(wù)架構(gòu)體系的持續(xù)交付。下面使用 Voting-app 作為演示項(xiàng)目,該項(xiàng)目包括 result、vote、worker、db 和 redis 這 5 個(gè)服務(wù),實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的投票系統(tǒng)。

Zadig 的安裝非常簡(jiǎn)單,可以直接參考官方文檔:https://docs.koderover.com/zadig/install/overview/
準(zhǔn)備工作
服務(wù)的 Jenkins Pipeline 服務(wù)的 Kubernetes Yaml 文件(案例源碼在 GitHub Zadig 項(xiàng)目中,可直接使用):https://github.com/koderover/zadig/tree/main/examples/voting-app/freestyle-k8s-specifications
步驟 0:集成 Jenkins
登錄 Jenkins,在用戶配置中,生成一個(gè) API Token,如下圖所示。

訪問(wèn) Zadig,點(diǎn)擊? 系統(tǒng)設(shè)置?> ?集成環(huán)境?>?Jenkins 集成?,添加 Jenkins 服務(wù)相關(guān)信息,如下圖所示。

步驟 1:項(xiàng)目配置
創(chuàng)建 voting-app,一個(gè)用 K8s Yaml 部署的項(xiàng)目,具體內(nèi)容如下圖所示。

成功創(chuàng)建項(xiàng)目,進(jìn)入項(xiàng)目配置向?qū)?,系統(tǒng)預(yù)設(shè)了 2 套集成環(huán)境和 3 條工作流。

步驟 2:創(chuàng)建服務(wù)
創(chuàng)建服務(wù),選擇從 GitHub 倉(cāng)庫(kù)導(dǎo)入服務(wù)的 K8s Yaml。點(diǎn)擊? 倉(cāng)庫(kù)托管在彈框中選擇代碼倉(cāng)庫(kù)和服務(wù)Yaml所在文件目錄,點(diǎn)擊加載。

系統(tǒng)會(huì)自動(dòng)檢測(cè)Yaml格式是否合法,導(dǎo)入成功后,右側(cè)會(huì)自動(dòng)解析出Yaml文件包含的系統(tǒng)變量、自定義變量和服務(wù)組件,如下圖所示。

服務(wù)添加Jenkins構(gòu)建,voting-app項(xiàng)目中 vote 和 result 之前使用 Jenkins Pipeline 進(jìn)行持續(xù)交付的,現(xiàn)在只需在將對(duì)應(yīng)服務(wù)的 Jenkins Pipeline 關(guān)聯(lián)到 Zadig 上,即可通過(guò) Zadig 工作流觸發(fā) Jenkins Pipeline。
注意:Jenkins Build Parameters 中必須存在
IMAGE變量,作為構(gòu)建鏡像的名稱,Jenkins 成功構(gòu)建鏡像后,Zadig 工作流部署階段會(huì)使用該鏡像更新服務(wù))
點(diǎn)擊 添加構(gòu)建

選擇 Jenkins 構(gòu)建

選擇對(duì)應(yīng)的 Jenkins job 修改變量并保存構(gòu)建

至此,我們已經(jīng)成功添加了 result 服務(wù)的 Jenkins Pipeline,voting app 的 Jenkins Pipeline 配置類(lèi)似,此處不再贅述。
添加成功后,點(diǎn)擊下一步,完成服務(wù)配置。
步驟 3:加入運(yùn)行環(huán)境
進(jìn)入「加入運(yùn)行環(huán)境」,系統(tǒng)根據(jù)以上配置,自動(dòng)創(chuàng)建 2 套環(huán)境和 3 條工作流,具體如下圖所示:

步驟 4:工作流交付
點(diǎn)擊運(yùn)行 dev 工作流,來(lái)完成 dev 環(huán)境的持續(xù)交付,如下圖所示。

這里,我們可以選擇多個(gè)服務(wù)同時(shí)更新到環(huán)境中。

執(zhí)行過(guò)程中,可以看到,選擇的兩個(gè)服務(wù)可以并發(fā)執(zhí)行。

在 Zadig 工作流任務(wù)中查看 Jenkins 構(gòu)建的日志。

執(zhí)行完成后,可在對(duì)應(yīng)集成環(huán)境中查看服務(wù)的運(yùn)行狀態(tài)、查看實(shí)時(shí)日志,對(duì)服務(wù)進(jìn)行調(diào)整服務(wù)數(shù)量、更換鏡像、進(jìn)入容器調(diào)試等操作。

步驟 5:添加測(cè)試,掛接工作流
添加自動(dòng)化測(cè)試用例

填寫(xiě)測(cè)試用例必要的執(zhí)行環(huán)境,測(cè)試用例所在的代碼倉(cāng)庫(kù)等信息。

保存后,可將測(cè)試用例關(guān)聯(lián)到 dev 工作流。

完成關(guān)聯(lián)后,就可以使用 dev 工作流更新環(huán)境,并且對(duì)環(huán)境進(jìn)行自動(dòng)化測(cè)試,快速得到測(cè)試結(jié)果反饋。

通過(guò)以上步驟,我們已經(jīng)完成了 Jenkins + Zadig 的項(xiàng)目配置,可以看到,Zadig 補(bǔ)足了 Jenkins 不具備的環(huán)境管理能力和測(cè)試管理能力,通過(guò) Zadig 讓軟件交付變得更絲滑。
