無(wú)壓力的軟件發(fā)布之旅
認(rèn)真看完這段視頻,保證你在下一次大發(fā)布之前不會(huì)再有那么大壓力。
最能衡量敏捷團(tuán)隊(duì)成功的標(biāo)準(zhǔn)就是將可用的軟件發(fā)布給客戶。但是,即使是有經(jīng)驗(yàn)的軟件團(tuán)隊(duì)也會(huì)感到十分痛苦,因?yàn)檫@也是驗(yàn)證已經(jīng)完成的問(wèn)題了;代碼沒(méi)有經(jīng)過(guò)評(píng)審,代碼還沒(méi)來(lái)得及合并,或者合并代碼失敗。聽(tīng)起來(lái)是不是很熟悉???
「CODING 企業(yè)版」作為企業(yè)級(jí)軟件研發(fā)管理系統(tǒng),助力團(tuán)隊(duì)敏捷開(kāi)發(fā)轉(zhuǎn)型升級(jí)。
在這個(gè)演示中,你將學(xué)習(xí)到下面幾點(diǎn):
編碼最佳實(shí)踐,將提高你交付高質(zhì)量產(chǎn)品的能力。了解為什么代碼評(píng)審對(duì)于交付質(zhì)量是至關(guān)重要的,并且監(jiān)視和修復(fù)失敗的構(gòu)建能保證發(fā)布更快捷。
通過(guò)在發(fā)布中心建立清晰的圖表來(lái)表示發(fā)布的進(jìn)度和狀態(tài),你會(huì)學(xué)習(xí)如何節(jié)省工作時(shí)間。
從構(gòu)建、編碼到發(fā)布的完全自動(dòng)化。通過(guò)從發(fā)布中心直接發(fā)布你的版本來(lái)簡(jiǎn)化工作流程。
觀看 & 學(xué)習(xí)
提問(wèn)和回答
我們的主持人 Jason Wong 和 Megan Cook 從這次演講中選擇了他們最喜歡的問(wèn)答。繼續(xù)閱讀以了解更多關(guān)于無(wú)壓力發(fā)布的信息。
問(wèn)題 1:成功使用發(fā)布中心的 3 個(gè)最重要的非技術(shù)因素是什么?
回答 1:(1)充滿信心地交付:團(tuán)隊(duì)內(nèi)外的利益相關(guān)者將能夠知道在整個(gè)發(fā)布周期的任何時(shí)候都應(yīng)該準(zhǔn)備好什么。
(2)更快地做出決策以節(jié)約時(shí)間:準(zhǔn)備好交付,及時(shí)了解已經(jīng)完成了哪些功能,以及還存在哪些有問(wèn)題。在發(fā)布中心中跟蹤檢查本次發(fā)布版本的所有問(wèn)題,這樣你就不必手動(dòng)協(xié)調(diào)問(wèn)題解決和調(diào)整代碼了。
(3)發(fā)布的記錄:通過(guò)查看已發(fā)布的版本來(lái)了解發(fā)布什么特性(何時(shí)發(fā)布),以及通過(guò)查看未發(fā)布的版本,了解每個(gè)即將發(fā)布的版本的計(jì)劃。
image
「CODING 企業(yè)版」提供便捷的發(fā)布管理,清晰每一次發(fā)布交付物,方便運(yùn)維團(tuán)隊(duì)執(zhí)行開(kāi)發(fā)團(tuán)隊(duì)的發(fā)布計(jì)劃。
問(wèn)題2:在 Atlassian 中,通常是誰(shuí)來(lái)管理版本發(fā)布?
回答2:Atlassian 中每個(gè)團(tuán)隊(duì)都有它自己的特定方法,但總的來(lái)說(shuō),我們盡可能的將過(guò)程自動(dòng)化,以便以最少的開(kāi)銷修復(fù) bug。
團(tuán)隊(duì)通常有一份待完成事項(xiàng)的列表,但是我們盡量將其最小化。像發(fā)布中心這樣的工具在這個(gè)過(guò)程中幫助確保我們計(jì)劃發(fā)布的是最高質(zhì)量的,并且 Jira 軟件問(wèn)題的狀態(tài)和它們的實(shí)際開(kāi)發(fā)非常匹配。
一些較大的團(tuán)隊(duì)對(duì)于 bug 管理者/發(fā)布管理者會(huì)建立專人輪換制度。
對(duì)于較大的主版本和小版本,通常會(huì)有一個(gè)專門的人來(lái)負(fù)責(zé)發(fā)布,并且所有的工作都是圍繞風(fēng)險(xiǎn)和時(shí)間期限展開(kāi)的。這可能由團(tuán)隊(duì)領(lǐng)導(dǎo)或開(kāi)發(fā)經(jīng)理負(fù)責(zé),但是我們?cè)噲D確保由團(tuán)隊(duì)成員輪換負(fù)責(zé),這樣每個(gè)人都知道這個(gè)過(guò)程,并理解發(fā)布高質(zhì)量軟件的要求。
對(duì)于發(fā)布的計(jì)劃時(shí)間線,團(tuán)隊(duì)領(lǐng)導(dǎo)將與產(chǎn)品經(jīng)理和市場(chǎng)營(yíng)銷人員進(jìn)行協(xié)調(diào),以確定何時(shí)準(zhǔn)備好發(fā)布,以及是否需要管理發(fā)布范圍或時(shí)間。正是由這些人,決定了哪些功能將在哪些版本中發(fā)布。
問(wèn)題3:你如何做到一個(gè)分支/提交/合并請(qǐng)求/構(gòu)建/部署關(guān)聯(lián)到一個(gè)問(wèn)題(issue)?
回答3:
- 分支——在分支名稱中包含指定問(wèn)題的標(biāo)記,也就是 issue 的 key 。
- 提交——在提交消息中包含 issue key。
- 合并請(qǐng)求——在源分支名稱中,或者提交消息,或合并請(qǐng)求標(biāo)題中包含 issue key。
- 構(gòu)建——在提交消息中包含 issue key。
- 部署——在提交消息中包含 issue key。
問(wèn)題4:當(dāng)你在隔離的多個(gè)分支上使用相同的代碼時(shí),你有什么經(jīng)驗(yàn)來(lái)處理這些沖突?
回答4:我們的經(jīng)驗(yàn)是,這很少是一個(gè)問(wèn)題。大多數(shù)情況下不存在代碼重復(fù),只是偶爾會(huì)發(fā)生沖突。
通常會(huì)有兩個(gè)問(wèn)題:
- 長(zhǎng)期運(yùn)行的特性分支與其他正在進(jìn)行的開(kāi)發(fā)隔離。
- 大規(guī)模的重構(gòu)任務(wù),在完成、測(cè)試并準(zhǔn)備發(fā)布之前,需要隔離。
對(duì)于前者,一種做法是頻繁地進(jìn)行開(kāi)發(fā)和集成,但是將特性本身保留在特征標(biāo)志后面,這樣只有我們自己的測(cè)試程序或少數(shù)幾個(gè)客戶能看到正在進(jìn)行的更改。這確保了相互沖突的代碼不斷地集成,最小化沖突的可能性,并在大特性更新到主干開(kāi)發(fā)分支時(shí)最小化風(fēng)險(xiǎn)和影響。
如果做不到這樣,或者在進(jìn)行大型重構(gòu)的情況下,我們確保開(kāi)發(fā)分支盡可能多地集成到特性分支中(通過(guò)將基線/開(kāi)發(fā)分支的變更合并到特性分支中)。這確保了所有正在進(jìn)行的開(kāi)發(fā)都是在長(zhǎng)時(shí)間運(yùn)行的特性分支上完成的,并且盡可能經(jīng)常地進(jìn)行測(cè)試。如果存在任何合并沖突,那么就更容易讓做更改的人來(lái)幫助解決合并沖突,或者至少保持他們影響范圍最小化,這樣解決起來(lái)就更容易點(diǎn)。
最好的解決方案是將任何工作分解成塊,以便盡可能頻繁地合并到穩(wěn)定或開(kāi)發(fā)分支中。這就減少了在特性分支中對(duì)相同文件進(jìn)行更改的機(jī)會(huì)。
問(wèn)題5:你建議用什么樣的策略來(lái)管理正在進(jìn)行的開(kāi)發(fā)分支、熱修復(fù)分支和部署到不同環(huán)境的分支(測(cè)試環(huán)境/定版環(huán)境/生產(chǎn)環(huán)境)等并行分支?
回答5:在我們的網(wǎng)站上有許多分支策略,著重看下比較工作流部分。
在以前的一些討論中可以找到更多的細(xì)節(jié),正確使用 Git 和持續(xù)的部署工作流程在 SaaS 團(tuán)隊(duì)的 Git 工作流中有更深入的介紹。
簡(jiǎn)而言之,有兩種主要的工作流:可下載產(chǎn)品的產(chǎn)品發(fā)布工作流和在線服務(wù)的 SAAS 工作流( SAAS 團(tuán)隊(duì)的 Git 工作流)。
「CODING 企業(yè)版」作為企業(yè)級(jí)軟件研發(fā)管理系統(tǒng),任務(wù)看板功能實(shí)現(xiàn)了 Epic \ user stories \ Sprint 等敏捷概念落地。CODING 任務(wù)看板
對(duì)于可下載的產(chǎn)品,大多數(shù)團(tuán)隊(duì)使用的是 Gitflow 工作流的變體,其中主線用于正在進(jìn)行的開(kāi)發(fā),而之前的每一個(gè)小版本都有自己的分支,其中 bugfix 分支創(chuàng)建了然后再合并回來(lái),在需要的時(shí)候,就構(gòu)建一個(gè) Bug 修復(fù)版本。之前的每個(gè)發(fā)布分支都將所有的變更合并到后續(xù)版本中,并確保所有的 Bug 修復(fù)都包含在所有后續(xù)版本中。
問(wèn)題6:發(fā)布中心是否能很好地與看板和頻繁發(fā)布協(xié)同工作?
回答6:是的,它工作得很好。看板上的發(fā)布按鈕可以用來(lái)創(chuàng)建一個(gè)新版本,其中包含了該版本的所有問(wèn)題。一旦創(chuàng)建了這個(gè)版本,就可以使用發(fā)布中心檢查任何警告,或者獲得版本的概述。
即使沒(méi)有看板圖,你也可以在任何時(shí)候創(chuàng)建一個(gè)版本,并在這些問(wèn)題已經(jīng)完成的情況下添加問(wèn)題。然后,發(fā)布中心可以用來(lái)檢查任何警告,以確保發(fā)布已經(jīng)準(zhǔn)備妥當(dāng)。
問(wèn)題7:發(fā)布中心是否可以顯示來(lái)自多個(gè) Jira 軟件項(xiàng)目的問(wèn)題信息,或者是發(fā)布中心項(xiàng)目和修復(fù)版本?
回答7:發(fā)布中心是一個(gè)版本的詳細(xì)視圖。由于版本目前是針對(duì)特定項(xiàng)目的,所以發(fā)布中心也是針對(duì)特定項(xiàng)目的。
問(wèn)題8:你能讓發(fā)布中心的警告自動(dòng)發(fā)布到一個(gè) Hipchat 聊天室里嗎?
回答8:到今天為止,發(fā)布中心警告和 Hipchat 之間沒(méi)有集成,我們目前還沒(méi)有任何計(jì)劃去集成。我們一直在思考發(fā)布中心可以通過(guò)不同的方式加強(qiáng)與 Hipchat 的團(tuán)隊(duì)協(xié)作,并希望從我們的客戶那里聽(tīng)到更多關(guān)于他們?nèi)绾问褂眠@種集成或與其他產(chǎn)品的集成的更多信息。
問(wèn)題9:“發(fā)布”按鈕后面關(guān)聯(lián)的是什么?是用來(lái)部署生產(chǎn)服務(wù)器的腳本嗎,比如 Bamboo 中的 Job ?
回答9:“發(fā)布”按鈕有一些與之相關(guān)的功能:
它可以設(shè)定發(fā)布日期,并將版本的狀態(tài)更改為“已發(fā)布”。如果在版本中有任何開(kāi)放的問(wèn)題,它也會(huì)提供將這些問(wèn)題轉(zhuǎn)移到另一個(gè)版本的選項(xiàng)。這些都可以在沒(méi)有 Bamboo 的情況下使用。
當(dāng) Bamboo 與 Jira 軟件集成時(shí),發(fā)布按鈕可以用來(lái)啟動(dòng)一個(gè)新的構(gòu)建,可以用 Bamboo 來(lái)配置,以采取必要的步驟來(lái)發(fā)布你的版本(例如,部署到生產(chǎn)環(huán)境的腳本)。
發(fā)布按鈕也可用于啟動(dòng)已運(yùn)行的 Bamboo 構(gòu)建的手動(dòng)定版發(fā)布。你可以擁有一個(gè)自動(dòng)運(yùn)行的構(gòu)建,但是有一個(gè)可選的階段,只有手動(dòng)觸發(fā),才能實(shí)際執(zhí)行部署/放行。(這個(gè)階段相當(dāng)于選項(xiàng)2中的整個(gè)構(gòu)建,但是可以通過(guò)人工操作來(lái)觸發(fā)構(gòu)建。)
問(wèn)題10:是否有將發(fā)布中心與 GitHub/GitHub 企業(yè)版整合的計(jì)劃?
回答10:發(fā)布中心已經(jīng)與 GitHub 和GitHub 企業(yè)版合作。你所要做的就是將 Jira 軟件實(shí)例連接到你的 GitHub 帳號(hào),使用 DVCS 賬戶在 Jira 軟件的附加管理員菜單中可以找到。然后你就可以開(kāi)始跟蹤所有版本的進(jìn)展,包含了發(fā)布中心中所有相關(guān)開(kāi)發(fā)信息。
「CODING 企業(yè)版」提供便捷的發(fā)布管理,清晰每一次發(fā)布交付物,方便運(yùn)維團(tuán)隊(duì)執(zhí)行開(kāi)發(fā)團(tuán)隊(duì)的發(fā)布計(jì)劃。
本文中文翻譯自原文:Journey to a stress-free release
編譯者:程景天。

