DevOps平臺之一鍵發佈設計

轉載本文需註明出處:微信公衆號EAWorld,違者必究。前端

 

引言:spring

 

大型項目協同是DevOps要面對的一個重要場景,其中多項目發佈上線協同,更是一個重要關鍵場景,一鍵發佈就是爲了解決這個場景而生的。本文主要介紹一鍵發佈的界面設計、模型設計以及接口設計等。後端

 

目錄:安全

 

1. 簡介springboot

2. 關鍵模型設計微信

3. 關鍵界面設計架構

4. 關鍵接口設計微服務

5. 關鍵表設計佈局

6. 總結ui

 

1. 簡介

 

 

大型項目協同是DevOps要面對的一個重要場景,其中多項目發佈上線協同,更是一個重要關鍵場景,一鍵發佈就是爲了解決這個場景而生的。

 

一鍵發佈是指在一個項目羣中,對其子項目的發佈定義進行編排,成爲一個發佈流水線,而後對發佈流水線執行一鍵發佈。

 

一、應用場景

 

1)多項目同時上線,項目之間有依賴關係

2)版本火車

 

二、關鍵能力

  

1)編排鬚要支持串行、並行、聚合能力

2)發佈流水線可以指定某些環境發佈,並支持環境權限控制

3)一鍵發佈時,能夠對發佈定義和發佈任務進行篩選

4)可以實時看到每個發佈定義和發佈任務的狀態,及其詳細執行日誌

 

2. 關鍵模型設計

 

 

關鍵模型說明:

 

1)發佈流水線:發佈定義編排,能夠配置環境類型,進行權限控制等;它的執行實例叫發佈流水線實例。

2)發佈定義:發佈環境編排;它的執行實例叫發佈實例。

3)發佈環境:配置環境類型,進行權限控制,配置執行引擎,部署任務編排等;它的執行實例叫發佈環境實例。

4)引擎流水線:引擎流水線任務編排;它的執行實例叫引擎流水線實例。

5)引擎流水線任務:最小的執行單元,好比拉代碼,部署springboot等;在構建流水線中,通常叫構建任務;在部署流水線中,通常叫部署任務;它的執行實例叫引擎流水線任務實例。

6)引擎流水線任務屬性:具體的流水線任務屬性。

 

3.關鍵界面設計

 

一、發佈流水線編排界面

 

 

發佈流水線編排關鍵功能:

 

1)支持選擇子項目中的發佈定義。

2)支持串行。

3)支持並行。

4)支持聚合。

5)支持環境設置。

 

二、發佈流水線發佈預覽界面

 

 

發佈預覽界面關鍵功能:

 

1)支持配置發佈流水號,也能夠自動生成。

2)支持對某一個發佈定義能夠選擇是否執行。

3)支持對發佈環境中的流水線任務能夠選擇是否執行。

 

三、發佈流水線發佈歷史界面

 

 

發佈歷史界面關鍵功能:

 

1)支持查看發佈流水行歷史發佈記錄。

2)支持查看發佈起止時間、進度、狀態、日誌等。

 

四、發佈流水線發佈實例詳情界面

 

 

發佈實例詳情界面關鍵功能:

 

1)支持查看每個發佈定義的發佈進度和結果。

2)支持查看某一個發佈定義下的日誌。

 

五、發佈流水線發佈日誌界面

 

 

發佈流水線的發佈日誌關鍵功能:

 

1)支持查看任何一個子項目的發佈定義的日誌。

2)支持在樹形菜單上能夠選擇查看某一個發佈環境,或者某一個引擎流水線任務的日誌。

3)支持對日誌進行全屏顯示。

 

六、發佈定義配置界面

 

 

發佈定義配置關鍵功能:

 

1)支持發佈環境編排:串行、並行、聚合等。

2)支持環境類型設定,引擎指定。

3)支持審批、確認類型配置

4)支持通知配置

 

七、引擎流水線任務編排界面

 

 

引擎流水線任務編排關鍵功能:

 

1)支持流水線任務編排:串行、並行、聚合等。

2)支持流水線任務屬性配置。

3)支持流水線任務失敗策略、失效等配置。

 

4.關鍵接口設計

 

一、發佈流水線接口

 

//建立發佈流水線ReleasePipeline createReleasePipeline(ReleasePipeline releasePipeline)​//刪除發佈流水線ReleasePipeline removeReleasePipeline(String releasePipelineId)​//啓動發佈流水線,注意:須要傳遞啓動的發佈定義,以及不執行的流水線任務ReleasePipelineInstance startReleasePipeline(String releasePipelineId, String[] releaseDefinitionIds, String[] disableEngineStageIds)​//查詢某一個發佈流水線下的全部發布流水線實例PageResultList<ReleasePipelineInstance> queryReleasePipelineInstances(String releasePipelineId, boolean cascadeReleaseInstance, int pageIndex, int pageSize)

(左右滑動查看所有代碼)

 

發佈流水線接口關鍵功能:

 

1)編輯:建立、修改、克隆、刪除發佈流水線等

2)操做:啓動、終止發佈流水線等

3)查詢:查詢發佈流水線實例的進度、狀態等

 

二、發佈定義接口

 

//建立發佈定義ReleaseDefinition createReleaseDefinition(ReleaseDefinition releaseDefinition)​//刪除發佈定義ReleaseDefinition removeReleaseDefinition(String releaseDefinitionId)​//啓動發佈定義,注意:須要傳遞要部署的發佈環境,以及不執行的流水線任務ReleaseInstance startRelease(String releaseDefinitionId, String[] releaseEnvIds, String[] disableEngineStageIds)​//查詢某一個發佈定義下的全部發布實例PageResultList<ReleaseInstance> queryReleaseInstances(String releaseDefinitionId, boolean cascadeReleaseEnvInstance, boolean cascadeEngineStageInstance, int pageIndex, int pageSize)​// 獲取發佈環境的部署日誌BuildLog getReleaseEnvDeployLog(String releaseDefinitionId, String releaseInstanceId, String releaseEnvInstanceId, int start)

(左右滑動查看所有代碼)

 

發佈定義接口關鍵功能:

 

1)編輯:建立、修改、克隆、刪除發佈定義等

2)操做:

① 啓動、終止發佈定義等

② 部署、取消、審批發布環境等

3)查詢:

① 查詢發佈實例的進度、狀態等

② 查詢發佈環境實例的進度、狀態、日誌等

 

三、引擎流水線接口

 

//建立引擎流水線EnginePipeline createEnginePipeline(EnginePipeline enginePipeline)​//刪除引擎流水線EnginePipeline removeEnginePipeline(String enginePipelineId)​//執行引擎流水線EnginePipelineInstance executeEnginePipeline(String jobNamePrefix, EnginePipeline enginePipeline, Map<String, Object> pipelineContext)​//獲取引擎流水線任務日誌BuildLog getEnginePipelineStageLog(String enginePipelineInstanceId, String engineStageInstanceId, int start)

(左右滑動查看所有代碼)

 

引擎流水線接口關鍵功能:

 

1)編輯:建立、修改、克隆、刪除引擎流水線等

2)操做:啓動、終止引擎流水線等

3)查詢:

① 查詢引擎流水線實例的進度、狀態、日誌等

② 查詢引擎流水線任務實例的進度、狀態、日誌等

 

5.關鍵表設計

 

一、發佈流水線表

 

 

發佈流水線表關鍵字段:

 

ENV_TYPE:環境類型,容許的部署環境類型設置,多個逗號分隔

 

二、發佈流水線和定義編排表

 

 

發佈流水線和定義編排表關鍵字段:

 

1)RELEASE_DEFINITION_ID:子項目的發佈定義ID

2)PRE_RELEASE_DEFINITIONS:前續發佈定義ID列表,多個逗號分隔

3)EXTEND:擴展信息,通常用於前端顯示佈局位置信息

 

三、發佈流水線實例表

 

 

發佈流水線和定義編排表關鍵字段:

 

1)RELEASE_DEFINITION_IDS:選擇的發佈定義ID列表,多個逗號分隔

2)INSTANCE_STATUS:實例狀態,成功,失敗,發佈中

3)BEGIN_TIME:發佈開始時間

4)END_TIME:發佈結束時間

5)ESTIMATED_DURATION:預估持續時間,用於計算進度

6)DURATION:實際持續時間

 

其餘實例表(發佈實例表、發佈環境實例表、引擎流水線實例表、引擎流水線任務實例表)字段相似

 

四、發佈定義表

 

 

五、發佈環境表

 

 

發佈環境表關鍵字段:

 

1)PRE_RELEASE_ENVS:前續發佈環境ID列表,多個逗號分隔

2)ENV_TYPE:環境類型,部署目標的環境類型設置,多個逗號分隔

3)ENGINE_PIPELINE_ID:引擎流水線ID

 

六、引擎流水線表

 

 

引擎流水線表關鍵字段:

 

1)STAGE_IDS:流水線任務ID列表(包含任務順序),多個逗號分隔

2)ENGINE_ID:執行引擎ID,多個逗號分隔(多個時,選擇最空閒的引擎)

3)ENGINE_NODE:執行引擎節點

 

七、引擎流水線任務表

 

 

八、引擎流水線任務屬性表

 

 

6.總結

 

一鍵發佈涉及多項目的部署,在具體實現過程當中涉及不少方面,好比構建、部署;有時候在某個環節,可能還須要定時,人工審批,權限控制等,是一個很長且複雜的批處理過程。

 

一鍵發佈是多項目並行開發過程當中,一塊兒上線必定會遇到的場景,若是經過人工操做來實現(如今不少企業的現狀),對於上線的穩定性,效率都會有很大的不肯定性,可是經過DevOps實現一鍵發佈,則會徹底不一樣,可以很容易的屢次演練,避免人爲的不肯定性和效率低下的問題。因此,一鍵發佈是DevOps解決大型項目協同場景的一個關鍵核心能力。

 

推薦閱讀

DevOps平臺之看板設計

DevOps平臺之開源技術圖譜

普元DevOps平臺的安全可靠設計

 

關於做者:飛白,現任普元軟件產品部資深開發工程師,畢業於大連民族大學,長期致力於IT技術研究、產品設計與開發等工做,擅長CI/CD、微服務、雲計算等領域技術。負責EOS產品後端設計開發工做;負責DevOps產品後端設計開發工做。

關於EAWorld:微服務,DevOps,數據治理,移動架構原創技術分享。

相關文章
相關標籤/搜索