適用場景
應用可以設置研發流程,通過變更管理工程交付流程。通常適用于多環境逐級晉級的構建發布流程,嚴格控制從開發、到測試、到生產的整體持續交付流程。
目前應用變更持續交付模式僅高級版套餐企業可用,了解云效基礎功能和高級版專屬功能說明。
配置應用研發流程
前提條件:按照應用概覽的流程提示完成應用代碼倉庫設置、完成應用部署編排、完成應用環境規劃。
進入應用-應用設置-研發流程,點擊新建研發流程,填寫研發流程名稱,選擇模板,點擊快速創建研發流程。 云效 AppStack 提供一套示例標準研發流程模板(內置開發、測試、生產三個階段),企業也可以自定義研發流程模板,詳見全局設置-變更研發流程模板。應用創建研發流程時將使用所選模板快速初始化,應用還可以按具體場景二次修改。
添加階段:點擊+卡片可以添加一個研發流程階段。例如,除了開發、測試、生產階段,應用還需要預發階段來進行發布前的最后驗證,則可以再新建一個預發階段。
編輯階段:點擊已有階段卡片更多操作,可以修改已有階段的名稱、標簽等。例如,企業習慣稱測試階段為UAT階段,則可以修改階段名稱。
刪除階段:點擊已有階段卡片更多操作,可以刪除一個研發流程階段。例如,應用僅需要開發、生產兩個階段,則可以刪除測試階段。
每個應用可以創建多套研發流程,以適應不同的發布場景。例如,創建一套標準研發流程用于日常研發,創建一套緊急發布流程用于線上問題快速修復。
編輯階段下流水線
研發流程每個階段下關聯一條流水線,做具體的任務流程執行。點擊階段卡片可以編輯流水線,一條典型的流水線如下:
流水線源:自動填充當前應用代碼源和默認分支,不可修改。
構建:用于應用構建制品。可按應用代碼語言(如Java、Python等)、應用部署類型(如K8s部署、主機部署)選擇相應的構建任務,如Java應用、K8s部署,則選擇Java鏡像構建。
部署:用于部署 AppStack 應用環境。
環境:在任務步驟中選擇待部署的應用環境,詳見環境管理。
制品:配置該環境待部署的制品,通常會選擇上一步構建階段的產物。
自定義參數:按需設置本次部署相關參數,參數由應用編排決定。
除此之外,還可以按需設置測試任務、人工卡點等任務。設置完成后,點擊保存流水線,在運行到研發流程的該階段時將運行階段關聯的流水線。
云效示例:Java K8s 應用標準研發流程模板,包含開發階段、測試階段、生產階段,開發、測試階段分別執行應用鏡像構建部署,生產階段部署之前增加人工卡點。
設置變更集成方式
變更集成方式為運行到某階段變更特性分支集成到發布分支的方式,支持以下三種:
自由選擇分支:選擇此方式,運行本階段流水線時,可以自由選擇任意分支運行發布,變更特性分支需要線下手動合并入目標發布分支,云效 AppStack 會根據目標發布分支 commit 自動計算出本次運行涉及的變更,并更新變更元數據。
手動選擇變更:選擇此方式,運行本階段流水線時,需要手動選擇待集成的變更列表,云效 AppStack 會將所選變更分支自動合并到系統生成發布分支運行,并更新所選變更的元數據。
運行固定分支:選擇此方式,運行本階段流水線時,只能運行固定的分支進行發布,變更特性分支需要線下手動合并入固定分支。云效 AppStack 會根據固定分支 commit 自動計算出本次運行涉及的變更,并更新變更元數據。
云效示例:Java K8s 應用標準研發流程模板,開發階段設置為自由選擇分支(通常開發環境需要靈活,可以自由部署任意分支進行開發自測), 測試階段設置為手動選擇變更(通常測試環境需要相對穩定進行聯調,可以限制只能部署變更特性分支),生產階段設置為運行固定分支(通常生產環境需要嚴格管控,只能部署指定發布分支)。
設置變更準入規則
變更準入規則是變更進入某階段的標準和條件,旨在管控和約束沒有達到發布標準的變更,可以實現業務變更按環境逐步晉級,以保障生產安全發布。
選中待設置的階段,打開變更準入規則開關。
點擊添加準入門檻新增一條規則,判斷標準可以設置成其他階段的執行結果是否為成功。注意,這里不要配置成循環依賴。
點擊保存準入規則配置完成后,在流水線執行后,會首先判斷本次涉及變更是否均已滿足準入條件。
云效示例:Java K8s 應用標準研發流程模板,開發階段無準入門檻,測試階段需要開發階段運行結果為成功,生產階段需要開發、測試階段的運行結果都為成功。
新建變更進行研發
研發流程配置完成后,可以進行日常業務需求的研發,從創建一個變更開始。通常一個業務需求或任務對應一個變更,方便業務研發管理和追溯。
新建變更
進入應用-變更列表,或者進入發布管理-變更列表,點擊新建變更打開新建變更彈窗,填寫以下表單:
變更名稱:標識變更
歸屬應用:應用內創建變更則自動填充當前應用,應用外創建則可以下拉選擇自己有權限的應用。
分支名稱:
代碼倉庫為 CodeUp 時,支持選擇已有分支和新建分支兩種方式,新建分支支持系統自動分配分支名稱,也支持自定義分支名稱。
代碼倉庫為通用 Git 時,僅支持填寫已有分支
關聯工作項:點擊添加關聯,自動推薦我相關的工作項,支持輸入工作項標題搜索,點擊工作項添加關聯。
負責人:自動填充當前成員
點擊確定創建變更,返回變更列表。
變更列表
進入應用-變更列表,展示本應用下的所有變更;進入發布管理-變更,展示本企業下的所有變更。默認展示我參與的、開發中的變更,點擊可以切換查看全部變更。
變更列表展示變更名稱、分支、負責人、創建時間、更新時間、變更狀態等信息。
支持按變更名稱模糊搜索,支持按變更狀態、所屬應用、負責人過濾。
查看變更詳情
進入應用-變更列表,或者進入發布管理-變更列表,點擊目標變更,打開變更詳情。
基本信息:展示變更的名稱、狀態、負責人、變更分支,以及分支上最新提交commit。
關聯工作項:展示變更關聯的工作項標題、優先級、狀態、負責人等
變更元數據:展示當前變更在研發流程上運行產生的元數據,元數據為當前變更在研發流程各個階段的流水線運行結果。
運行研發流程進行變更發布
進入應用-研發流程,按階段依次運行流水線部署應用服務到相應環境,逐環境進行驗證后發布生產,實現業務變更按環境逐步晉級。 切換到指定階段,點擊運行階段流水線,打開運行配置彈窗,設置參數后即可運行。
運行階段流水線
以云效示例Java K8s 應用標準研發流程為例,各階段點擊運行流水線,運行配置如下:
開發階段自由選擇分支,無準入門檻。
測試階段手動選擇變更,需要開發階段運行結果為成功。
生產階段運行固定分支,需要開發階段、測試階段的運行結果都為成功。
查看流水線運行詳情
以云效示例Java K8s 應用標準研發流程為例,各階段流水線運行詳情如下:
開發階段:自由選擇分支。
變更管理器:云效 AppStack 會在階段流水線前自動增加變更管理器步驟,用于處理變更計算和分支合并等。當變更集成方式為自由選擇分支時,系統會根據代碼分支 commit 自動計算出涉及變更。
依次執行后續構建、部署步驟。可以查看構建部署日志,點擊部署單詳情可以跳轉部署單詳情頁面查看部署進度。
測試階段:手動選擇變更,準入條件為開發階段運行結果為成功。
變更管理器:將所選待集成變更特性分支自動合并到系統自動生成發布分支。
集成變更詳情:展示發布分支, 展示變更列表:變更名稱、分支、狀態、Commit ID、負責人。
變更準入卡點:根據本階段配置的準入條件,判斷準入是否通過,不通過展示失敗詳情,展示變更元數據的期望值、實際值。
依次后續構建、部署步驟。
生產階段:運行固定分支,準入條件為開發階段、測試階段的運行結果都為成功。
使用變更集追溯完整需求
變更集通常用來實現多個相關應用、多個相關變更協同發布,從業務需求整體維度跟進業務進展。
新建變更集
進入發布管理-變更集列表,點擊新建變更:
變更集名稱:用于標識
關聯變更:點擊添加關聯待協同發布的變更。
負責人:通常用于協調統一發布。 點擊確定創建變更集,返回變更集列表。
變更集列表
進入發布管理-變更集列表,默認展示我參與的、開發中的變更集,點擊可以切換查看全部變更集。
展示變更集名稱、創建時間、負責人、關聯變更、狀態
點擊進入變更集詳情頁。
變更集詳情
進入發布管理-變更集列表,找到目標變更集,點擊進入變更集詳情頁。
基本信息:展示變更集名稱、負責人、創建時間、最后修改人、最后修改時間
變更列表:按應用分組展示本變更集關聯的變更,展示每個變更在研發流程下的運行元數據,用于跟進變更當前狀態。
關聯變更:通常用于需要更多其他變更聯合發布場景,可以添加更多關聯變更。
移除變更:通常用于某個變更未達到發布標準,不跟著本變更集一起發布的場景,可以移除某個變更。
設置變更集成員:通常用于多人協同發布,可以給變更集設置成員,
關閉變更集:當變更集下的所有變更都已經完成發布時,則可以關閉變更集,完成本次需求發布。