日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

單應用變更持續(xù)交付最佳實踐

本文主要介紹微服務架構(gòu)下,單應用獨立開發(fā)、集成測試、持續(xù)交付最佳實踐。

適用場景

微服務架構(gòu)下,每個應用服務獨立開發(fā)、獨立發(fā)布,小步快跑,持續(xù)快速交付業(yè)務需求。多人協(xié)同開發(fā)同一個應用時,分支開發(fā)模式是一個適合的協(xié)同方案。該模式下一個需求或任務通常對應一個 feature 分支,多個需求一起合并到 release 分支進行集成測試驗證并發(fā)布。期間可能遇到以下問題:

  • 痛點1:當開發(fā)同學領到一個需求時,怎么為這個需求快速的拉一個 feature 分支?

  • 痛點2:當多個相關需求一起發(fā)布時,多個 feature 分支怎么高效自動化的合并到 release 分支?

  • 痛點3:當其中一個 feature 分支沒有經(jīng)過測試驗證時,怎么“阻止”它發(fā)布到生產(chǎn)環(huán)境避免漏測引起故障?

  • 痛點4:當其中一個 feature 分支做了測試驗證,但是發(fā)現(xiàn)有嚴重問題,怎樣可以“退出”本次發(fā)布而不影響其他需求正常發(fā)布?

  • 痛點5:當一個需求 feature 分支提交測試了、發(fā)布上線了,怎么自動、及時的更改相應需求狀態(tài),便于相關業(yè)務、產(chǎn)品、測試同學跟蹤進度?

image.png

云效解決方案

云效應用交付平臺 AppStack 提供變更持續(xù)交付解決方案,涉及核心概念如下:

  • 應用:一個軟件的最小發(fā)布單元,聚合代碼、環(huán)境、版本等軟件資產(chǎn),以及研發(fā)流程定義。最小發(fā)布單元意味著無法解耦的一個或者多個服務的組合,這個服務組合會通過一個流程進行統(tǒng)一交付。

  • 變更:變更是對應用的一次特性改變(引入新的特性或改變已有特性),源于需求,終于交付。通常一個需求或任務對應一個變更,對應一個 feature 分支。

  • 研發(fā)流程:應用完成一次變更的過程和約束,包括開發(fā)、測試、發(fā)布上線的完整流程,由多個階段的多條流水線承載,依次在不同環(huán)境進行測試、構(gòu)建、部署,最終審批通過后發(fā)布生產(chǎn)環(huán)境。

image.png

云效操作實踐

以下實踐,以一個spring-boot應用的“圖書館管理系統(tǒng)”為例,開發(fā)“圖書借閱功能”、“圖書歸還功能”、“圖書到期續(xù)借功能”三個需求,一起發(fā)布上線。

作為應用負責人

作為應用負責人,需要編排應用構(gòu)建、部署流程,通過流水線工具自動化起來;需要定義應用生產(chǎn)發(fā)布準則,來規(guī)范應用研發(fā)流程降低發(fā)布風險。

新建應用

新建應用,輸入應用名稱,應用模板選擇「變更持續(xù)交付模式」。

image.png

代碼源配置

應用設置,配置應用代碼源,設置默認分支。

image.png

配置研發(fā)流程

(研發(fā)流程配置操作步驟變更持續(xù)交付模式。)

本應用的研發(fā)流程可以分為測試階段、預發(fā)階段、生產(chǎn)階段:

  • 測試階段:由Java單元測試、Java代碼掃描、構(gòu)建、部署測試環(huán)境等步驟組成。用于日常測試驗證。

  • 預發(fā)階段:由構(gòu)建、部署預發(fā)環(huán)境等步驟組成。用于預發(fā)布驗證。

  • 生產(chǎn)階段:由構(gòu)建、生產(chǎn)發(fā)布審批(人工卡點)、部署生產(chǎn)環(huán)境、合并主干、關閉變更等步驟組成。

  • 生產(chǎn)發(fā)布審批通過后,部署生產(chǎn)環(huán)境。

  • 生產(chǎn)環(huán)境部署驗證通過后,表明本次發(fā)布成功,可以將發(fā)布release 分支合并回主干 master,并自動關閉相關變更。

image.png

設置變更集成方式和準入規(guī)則

本示例各階段都選擇「添加變更集成」方式,在運行階段流水線時可以選擇多個變更分支集成到release分支進行構(gòu)建部署驗證。

  • 測試階段:無準入規(guī)則。

  • 預發(fā)階段:配置準入規(guī)則為:「測試階段-執(zhí)行結(jié)果」等于「成功」,避免沒有經(jīng)過測試驗證的分支直接進入預發(fā)。

  • 生產(chǎn)階段:配置準入規(guī)則為:「測試階段-執(zhí)行結(jié)果」等于「成功」,「預發(fā)階段-執(zhí)行結(jié)果」等于「成功」,避免沒有經(jīng)過預發(fā)驗證的分支直接進入生產(chǎn)階段。

image.png

作為一線開發(fā)

“需求1:圖書借閱功能”、“需求2:圖書歸還功能”、“需求3:圖書到期續(xù)借功能”三個需求分別分配給開發(fā)小張、小明、小強開發(fā)。

第1步,為一個需求新建一個變更拉一個 feature 分支

小張創(chuàng)建一個變更「變更1-實現(xiàn)圖書借閱功能」,選擇新建分支輸入 feature001,則可自動為該需求拉取一個分支(解決上述痛點1)。依次類推,小明創(chuàng)建一個變更「變更2-實現(xiàn)圖書歸還功能」,自動新建分支feature002。小強創(chuàng)建一個變更「變更3-實現(xiàn)到期續(xù)借功能」,自動新建分支feature003。

image.png

第2步,開發(fā)代碼提交到 feature 分支

小張開發(fā)好圖書借閱相關代碼后,提交代碼到feature001上,小明開發(fā)圖書歸還相關代碼后,提交代碼到feature002分支上。

第3步,選擇變更集成,部署測試環(huán)境驗證

小張和小明,一借一還,需要一起部署到測試環(huán)境進行聯(lián)調(diào)驗證。進入應用研發(fā)流程頁,選擇變更1和變更2一起集成測試,云效會自動將 feature001 和 feature002 合并到自動生成的 release/xxx_n 分支(解決上述痛點2),使用該 release 分支做構(gòu)建,并部署環(huán)境。環(huán)境部署成功即可進行測試驗證。

image.png

image.png

第4步,提交變更進行預發(fā)布

測試環(huán)境驗證通過,進入「預發(fā)階段」,選擇變更1和變更2進行集成,勾選自動合并上一階段集成的分支,會自動生成新的 release/xxx_m 集成分支,自動合并上一階段 feature001、feature002、release/xxx_n 分支,使用新的 release/xxx_m 分支構(gòu)建并部署預發(fā)環(huán)境。預發(fā)部署成功后即可進行預發(fā)驗證。

image.png

image.png

此時若在預發(fā)階段選擇變更1、變更2、變更3一起集成,則經(jīng)過變更準入卡點時會校驗失敗,因為變更3沒有在測試環(huán)境部署驗證過,即保證了沒有經(jīng)過測試驗證的需求不可發(fā)布(解決上述痛點3)。

image.png

變更3因沒有測試驗證通過,不滿足發(fā)布條件,團隊本次決定圖書續(xù)借功能不上線,只上線變更1和變更2,則可再次運行預發(fā)階段流水線,將變更3踢出集成區(qū),退出本次發(fā)布(解決上述痛點4)。

image.png

第5步,提交變更進行生產(chǎn)發(fā)布

預發(fā)驗證通過后,即可進入生成發(fā)布階段。選擇待發(fā)布的變更1和變更2,運行生產(chǎn)流水線,發(fā)布審批通過后,即可部署生產(chǎn)環(huán)境。生產(chǎn)環(huán)境部署完成,可配置自動關閉變更,并將發(fā)布 release/xxx_k 分支合并入主干 master,至此即完成了一次完整的需求發(fā)布上線。

作為業(yè)務產(chǎn)品同學

變更發(fā)布完成了,我作為PD同學怎么知道需求發(fā)布了呢?云效AppStack變更和Projex工作項做了狀態(tài)聯(lián)動,支持變更發(fā)布完成自動將需求狀態(tài)置為「已發(fā)布」,這樣PD同學可及時看到需求進展(解決上述痛點5)。具體配置方式如下:進入Projex項目-項目設置-自動化規(guī)則,選擇「支持工作項與變更狀態(tài)的聯(lián)動」模板,配置當產(chǎn)品類需求關聯(lián)的全部變更狀態(tài)為「已發(fā)布」時,將需求狀態(tài)置為「已完成」。

image.png

至此,本方案完成了從應用配置、到需求開發(fā)、多變更集成測試、發(fā)布上線的完整流程,滿足了變更分支自動創(chuàng)建、變更分支自動合并集成測試、發(fā)布準入卡點控制等訴求,支持變更關聯(lián)業(yè)務需求和狀態(tài)聯(lián)動,完整追溯需求的全生命周期流程。