DevOps on DevCloud|如何採用流水線踐行CI/CD理念

引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,華爲雲DevCloud提出(工程方法+最佳實踐+生態)×工具平臺=DevOps能力。華爲雲DevCloud將推出“DevOps on DevCloud”系列,針對DevOps領域場景,闡述該場景在華爲雲DevCloud上的實施方法與實踐。

 

在企業數字化轉型的趨勢下,市場分析機構Forrester將DevOps作爲數字化企業架構的重要支柱之一,是企業數字化運營體驗的關鍵使能因素。同時,DevOps逐漸演進爲軟件工程的思維框架,旨在融合人員、流程與工具快速持續地向用戶交付軟件價值。持續集成/持續交付(CI/CD,Continuous Integration/Continuous Deployment)在DevOps CMALS理念中具有支柱性地位,因而CI/CD流水線至關重要,將實現應用程序的構建、測試、部署與發佈等自動化,提升軟件交付的效率與質量。

一提到流水線(Pipeline),人們會第一時間想到亨利·福特與T型汽車。據說亨利·福特在仔細觀察過屠宰場流水線後,意外得到靈感,於1913年開發出了世界上第一條汽車流水線。福特把T型車的裝配過程拆成了84個不同的步驟,汽車在一條流水線上就可以完成組裝,這個革命性的創造使汽車的裝配時間從原先12小時減少至90分鐘,而且一年一年各個環節操作時間都會在技術升級中不斷縮短,20世紀20年代,福特工廠每24秒流水線就能製造一輛汽車。流水線帶給汽車工業的是“規模化”,更是“流程革命”。

圖1 福特汽車流水線

1924年福特公司將流水線生產方式引入日本。兩年以後,豐田公司採用福特的流水線生產方式進行第一輛A1型轎車和第一輛G1型卡車試製工作。後來豐田發現福特的生產線是有問題的,因爲生產線上的每個產品由不同的人來進行生產,直到最後檢測纔會發現質量有問題。因此,豐田更加強調“精益效率”,開始在流水線上落實“適時生產”與“實時監控生產品質”。豐田的安燈繩(Andon Cord)使得流水線上的每個工序一旦發生問題,可以停止流水線,警燈響起,技術人員和管理人員馬上趕赴現場幫助解決問題。

讓我們從福特、豐田的流水線故事重新回到軟件持續交付流水線。從福特、豐田的故事中,對於流水線有2個最爲主要的特徵:工序編排、質量監控。對於軟件交付來講,從代碼提交,將經過代碼質量檢查、構建、測試、部署、發佈等環節交付給客戶,在每個環節需要進行質量把控。因此持續交付流水線,需要對各個環節的任務進行並行或串行編排,並且在相關環節任務上通過門禁實現“安燈繩”機制。

華爲雲DevCloud提供可視化分層分級、並行/串行、選擇執行等編排能力;可以納管代碼檢查、編譯構建、 部署、測試、子流水線等等多類型任務;提供代碼、定時、人工等3種觸發方式;提供代碼質量、測試等多種質量門禁;提供人工卡點方式。

1      準備工作

在DevOps on DevCloud系列文章“代碼檢查服務如何降低Java應用 ‘Billion Dollar Mistake’NPE風險”與“如何實現應用接口的混合驅動測試”中,我們介紹了華爲雲DevCloud的代碼檢查與接口測試服務。我們將在此基礎上,闡述流水線的特性能力。

2      代碼檢查納入流水線

開發者可以訪問華爲雲DevCloud並進入項目CodeCheckBenchmark。在“構建&發佈”-“流水線”頁面,點擊“新建流水線”,將流水線名稱設置爲“pl-cicd-cc”。

在“新建流水線”頁面,對於流水線階段二,首先將名稱由“構建”修改爲“代碼質量”;其次點擊“添加任務”,在“任務配置”頁面選擇“類型”爲代碼檢查,並選擇任務“cc-Code4Benchmark”;最後在“質量門禁”添加門禁任務,(1)如果沒有門禁,需要點擊創建,將門禁名稱爲“代碼問題數”,門禁項爲“CodeCheck問題數”,門禁閾值爲3;(2)在“任務配置頁面”的門禁處,選擇“代碼問題數”。詳細參考可以參考圖2-圖3標註紅框的地方,完成操作後,保存流水線。

圖2 流水線操作

圖3 添加質量門禁

流水線創建完畢後,可以在“流水線詳情”頁面執行流水線。正常情況下,流水線會在階段“代碼質量”停止執行,提示門禁不通過。

3      接口測試納入流水線

華爲雲DevCloud提供了門禁項“API測試通過率門禁”,此門禁的值按照測試套件中測試用例的通過率進行計算。因此在流水線中使用該門禁,需要使用測試套件來管理相應的接口測試用例。

首先,進入項目Prj4ApiHDT,在接口測試頁面,通過複製manageProject用例,新增2個測試用例,分別爲creatProject(保留createProject、deleteProject測試步驟,項目名稱可以進行修改)、queryWorkItemList(保留queryWorkItemList測試步驟,在URL中將參數修改爲“1234”等任意值)。新建測試套件tsProject,並將3個測試用例添加到本測試套件。

其次,參考“代碼納入流水線”,新建流水線pl-cici-api。在階段二將“接口測試”類型的任務tsProject添加到流水線中,並添加質量門禁“API測試門禁”,其門禁項爲“API測試通過率”,門禁閾值爲100%。詳細操作可以參考圖4中的紅框相關操作。

圖4 接口測試納入流水線

本文通過案例初步展示了華爲雲DevCloud流水線相關的編排以及門禁能力。在實際項目中,流水線一般來講涉及到更多的環節(例如構建、部署等),因此編排以及門禁等將更爲複雜,讀者可以參考華爲雲DevCloud HE2E DevOps實踐(https://support.huaweicloud.com/bestpractice-devcloud/devcloud_practice_20072.html)相關內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章