日韩在线日韩在日韩无-男人和女人午夜日皮视频-欧美日韩亚洲激情中文字幕-91精品国产综合九九九

流水線設計和編排

云計算團隊 2020-03-16

對于DevOps流水線,主要是由各類任務串聯(lián)起來,而對于任務本身又分為兩張類型,一種是自動化任務,一種是人工執(zhí)行任務。具體如下:

1. 自動化任務:包括了代碼靜態(tài)檢查,構(gòu)建,打包,部署,單元測試,環(huán)境遷移,自定義腳本運行等。

2. 人工任務:人工任務主要包括了檢查審核,打標簽基線,組件包制作等類似工作。

而通常我們看到的流水線基本都由上述兩類任務組合編排而成,一個流水線可以是完全自動化執(zhí)行,也可以中間加入了人工干預節(jié)點,在人工干預處理后再繼續(xù)朝下執(zhí)行。比如流水線中到了測試部署完成后,可以到測試環(huán)境人工驗證環(huán)節(jié),只有人工驗證通過再流轉(zhuǎn)到遷移發(fā)布到生產(chǎn)環(huán)境動作任務。

DevOps流水線實際上和我們原來經(jīng)常談到的持續(xù)集成最佳實踐是相當類似的,較大的一個差異點就在于引入了容器化技術來實現(xiàn)自動化部署和應用托管。至于在DevOps實踐中,是否必須馬上將項目切換到微服務架構(gòu)框架模式,反而不是必須得。

在整個DevOps流水線中,我們實際上強調(diào)個一個關鍵點在于一套Docker鏡像文件+多套環(huán)境配置+多套構(gòu)建版本標簽做法。以確保我們最終構(gòu)建和測試通過的版本就是我們部署到生產(chǎn)環(huán)境的版本。構(gòu)建操作只有一次,而后面到測試環(huán)境,到UAT環(huán)境,到生產(chǎn)環(huán)境,都屬于是鏡像的環(huán)境遷移和部署。而不涉及到需要再次重新打包的問題。這個是持續(xù)集成,也是DevOps的基本要求。

對流水線編排本身的靈活性進一步思考:

構(gòu)建操作:構(gòu)建我們通常采用Maven進行自動化構(gòu)建,構(gòu)建完成輸出一個或多個Jar包或War包。注意常規(guī)方式下構(gòu)建完執(zhí)行進行部署操作,部署操作一般就是將構(gòu)建的結(jié)果拷貝到我們的測試環(huán)境服務器,同時對初始化腳本進行啟動等。而在DevOps下,該操作會變成兩個操作,即一個打包,一個部署。打包是將構(gòu)建完成的內(nèi)容制作為鏡像,部署是將鏡像部署到具體的資源池和指定集群。

打包操作:實際上即基于構(gòu)建完成的部署包來生成鏡像。該操作一般首先基于一個基礎鏡像文件基礎上進行,在基礎鏡像文件上拷貝和寫入具體的部署包文件,同時在啟動相應的初始化腳本。

那么首先要考慮構(gòu)建操作和打包操作如何松耦合開,打包操作簡單來就是就是一個鏡像制作,需要的是構(gòu)建操作產(chǎn)生的輸出。我們可以對其輸出和需要拷貝的內(nèi)容在構(gòu)建的時候進行約定。而打包任務則是一個標準化的鏡像制作任務,我們需要考慮的僅僅是基于:

1) 基于哪個基礎鏡像

2) 中間件容器默認目錄設置

3) 初始化啟動命令

即在實際的打包任務設計的時候,我們不會指定具體的部署包和部署文件,這個完全由編排的時候由上游輸入。

部署操作:部署操作相當更加簡單,重點就是將鏡像部署到哪個資源池,哪個集群節(jié)點,初始化的節(jié)點配置等。具體部署哪個鏡像不要指定,而是由上游任務節(jié)點輸入。

任務節(jié)點間松耦合設計的意義

這種松耦合設計才能夠使流水線編排更加靈活。比如我們在進行了構(gòu)建打包后,我們希望同時將打包內(nèi)容部署到開發(fā)環(huán)境和測試環(huán)境。那么則是打包動作完成后需要對接兩個應用部署任務。這兩個部署任務都依托上面的打包結(jié)果進行自動化部署,可以并行進行。

對于測試環(huán)境部署完成后,我們需要進行測試人員手工驗證測試,如果測試通過,我們打標簽后希望能夠直接發(fā)布到UAT環(huán)境。而這種操作我們也希望通過一個流水線來設計和完成。這樣我們更加容易在持續(xù)集成看板上看到整個版本構(gòu)建和遷移的完整過程。如果這是在一個大流水線里面,那么對于UAT環(huán)境部署任務就需要一直去追溯流水線上的最近的一個打包任務節(jié)點,同時取該任務節(jié)點產(chǎn)生的輸出來進行相應的環(huán)境部署操作。

在談DevOps的時候,一個重點就是和QAQC的協(xié)同,因此在流水線編排的時候一定要考慮各類測試節(jié)點,包括靜態(tài)代碼檢查,自動化的單元測試,人工的測試驗證。同時最好基于持續(xù)集成實踐,能夠?qū)y試過程和整個自動化構(gòu)建過程緊密結(jié)合起來。

簡單來說,測試人員發(fā)現(xiàn)build1.0.0001版本4個bug并提交,那么在下次自動化構(gòu)建完成并單元測試通過后,測試人員能夠很清楚的看到哪些Bug已經(jīng)修改并可以在新構(gòu)建的版本進行驗證。只有這樣才能夠形成閉環(huán),整個流水線作業(yè)才能夠更好的發(fā)揮協(xié)同作用。

返回上頁