無(wú)壓力的軟件發(fā)布之旅

無(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

  1. 分支——在分支名稱中包含指定問(wèn)題的標(biāo)記,也就是 issue 的 key 。
  2. 提交——在提交消息中包含 issue key。
  3. 合并請(qǐng)求——在源分支名稱中,或者提交消息,或合并請(qǐng)求標(biāo)題中包含 issue key。
  4. 構(gòu)建——在提交消息中包含 issue key。
  5. 部署——在提交消息中包含 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 任務(wù)看板
CODING 企業(yè)版」作為企業(yè)級(jí)軟件研發(fā)管理系統(tǒng),任務(wù)看板功能實(shí)現(xiàn)了 Epic \ user stories \ Sprint 等敏捷概念落地。

對(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
編譯者:程景天。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評(píng)論 25 709
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,975評(píng)論 2 59
  • 多種多樣的工作流使得在項(xiàng)目中實(shí)施Git時(shí)變得難以選擇。這份教程提供了一個(gè)出發(fā)點(diǎn),調(diào)查企業(yè)團(tuán)隊(duì)最常見(jiàn)的Git工作流。...
    JSErik閱讀 4,609評(píng)論 2 8
  • 在1998年的8月25日出生的我終于與你相遇。盡管我還是來(lái)遲了兩年左右,但我終于追上了你的步伐——我親愛(ài)...
    青春不予我歡樂(lè)閱讀 462評(píng)論 0 0
  • 暖風(fēng)起,滿園春色關(guān)不住。春天,應(yīng)該是沈園最美的季節(jié)。 第一次去沈園,我記得是個(gè)春天。心情早已不可考,唯一留下深刻印...
    見(jiàn)伊閱讀 2,128評(píng)論 177 130

友情鏈接更多精彩內(nèi)容