摘要:本文將帶您體驗部署流水線實踐。
本文分享自華為雲社區《你了解部署流水線嗎?》,作者: 敏捷小智。
什么是部署流水線
部署流水線,又稱持續集成流水線、構建流水線,是指軟件從制品庫到用戶的自動化交付過程。通常包括代碼提交、構建、部署、測試、發布環節。部署流水線實現DevOps模式下持續開發、持續測試、持續集成、持續部署和持續監控這些活動的編排並自動化執行,及時獲得結果反饋,實現商業敏捷化。
如何構建流水線
流水線設計
構建一條部署流水線,首先要根據軟件架構和業務特點,確定流水線的各個環節內容,如下就是某產品開發的流程設計。從大框架上需要包含構建、部署、測試和發布這幾個環節。其中構建包含代碼提交、本地構建、雲端構建、靜態檢查、單元測試;部署包括測試環境的部署,α、β、γ環境部署。各環境中的測試實施,其中“Dog food(吃狗糧)”是互聯網公司的一種文化,指的是自研自用,即部署到內網環境,供大家使用;發布包括依據發布策略,實施發布。如下圖所示。
各環節自動化實現
流程確定后,然后要實現集成、交付、部署和發布各環節的自動化,自動化不等於不需要人的參與,而是將復雜易錯、重復的步驟變成可靠的自動化步驟。
創建流水線
最后將各個環節統一編排成流水線,設置質量門禁,實現提交代碼即觸發自動部署的功能。
實現構建流水線,團隊需要有良好的基礎服務支撐,包括配置管理,可實現自動化配置的腳本等。業界領先的互聯網公司很多都采用基礎支撐服務雲化,服務端程序部署頻率都非常快。根據《鳳凰項目》一書中的記載,業界Top互聯網公司的網站部署頻率如下:
此外,團隊成員要遵守共同的規則,比如代碼變更即上流水線,有錯誤發生及時暫停,待問題解決后再繼續等,需要團隊成員共同制動並遵守。
流水線的優點
提高交付效率
流水線編排客戶實現CI、CD無縫結合,快速迭代,讓價值流快速流動,適應市場需求頻繁變化。端到端的流水線,讓各個流程透明可視化,團隊人員可以隨時獲取需要的信息,哪個版本出現了問題回退,當前版本所處的階段等。同時可視化也能發現流程中的瓶頸環節,進行優化和調整,使流水線不斷的演進,提升交付效率。
保障質量
流水線的每個環節都會有反饋,實現完整快速的反饋循環,團隊獲得反饋,有利於及時改進,保證質量;並且每個環節都可設置質量門禁,實現質量的層層保障。
加強團隊建設,改善組織文化
流水線的各個環節讓開發、測試、運維人員都參與進來,共同協作,打破部門之間的隔閡,改善公司組織文化、提高員工的參與感。
DevCloud實踐
華為雲DevCloud提供了一站式端到端部署流水線:用戶提交代碼后,自動觸發流水線執行編譯構建、代碼檢查等任務;配置構建、代碼檢查、部署、測試等多種自動化任務,完成一鍵式出包發布上線生產全流程;每天定時執行,保障工程質量。
以快速上手流水線為例,在這個流水線中,包含代碼檢查、構建和質量門禁設置三個環節,其中的代碼檢查和構建是已經創建好的任務,質量門禁可以在創建流水線的同時創建。下面演示是如何創建和執行流水線。
1. 進入已創建的項目,在頂部導航欄單擊“構建&發布 > 流水線”,進入流水線。
2. 單擊右上角“新建流水線”,進入“創建流水線”頁面。根據界面提示填寫基本信息、選擇模板、選擇代碼源,然后單擊“下一步”。
3.進入工作流配置頁面,在構建階段,選擇類型為“代碼檢查”,然后添加已創建的代碼檢查任務。
接着按照相同方法,添加已創建的構建任務。
4.單擊質量門禁下加質量門禁,選擇“門禁任務”類型,然后單擊“點擊創建”。
5.填寫門禁名稱(如:test01),並將代碼檢查任務對應的門禁項“CodeCheck問題數”開關打開,保存並選擇已創建的門禁。
6.任務配置完成后單擊“保存”,進入流水線詳情頁面,單擊“全新執行”,一鍵執行流水線。
7.執行完成后,查看執行結果。單擊構建任務旁的符號,可以下載通過流水線自動構建出來的構建包。
8.配置Codehub源碼倉庫觸發器,可以實現提交代碼后自動觸發流水線執行。進入“創建流水線 > 選擇代碼源”頁面或者“流水線配置 > 添加代碼源”頁面,分別配置Codehub觸發器和碼雲觸發器。
展開“更多設置”,在觸發分支中選擇關聯倉庫的指定分支,如:“master”。保存流水線后觸發器即刻生效,當指定倉庫分支中有代碼提交時,會自動觸發關聯流水線執行。
通常一個項目的流水線不僅僅是上面的幾項,根據業務特點和軟件架構的不同,工作流的編排而互不相同,但基本上都包括構建、部署、測試、發布環節,每個環節的任務設置會不盡相同。如下圖為某團隊的部署流水線樣例。
國內企業部署的現狀
根據《中國 DevOps 現狀調查報告(2021)》,大概有六成受訪者所在的企業部署頻率為1周到1個月1次,同比2020年增長了近一成。僅有16.21%的企業能夠每天多次在生產環境進行部署;此外,9.33%的企業部署頻率超過 1 個月。
數據來源:中國信息通信院
由以上調查數據可見,2021年國內企業的部署頻率已經比2020年有所提升。在當前的VUCA時代,為了應對不確定性,我們要提升自己的業務敏捷程度,小步快跑,及時獲得反饋。因此通過自動化和流水線技術提高部署的頻次和效率是必不可少的。引入雲平台,簡化部署和編排操作,讓團隊將更多的精力專注到業務的研發上更是大勢所趨。