剖析 Jira 基礎架構與配置技巧

2021-09-22 08:32:29 字數 4489 閱讀 6874

jira 和 confluence 是 atlassian 公司推出的企業級專案管理和團隊協作產品,這兩款明星產品的關係就像咖啡和甜甜圈,單獨品嚐很棒,結合在一起使用效果絕佳。很多創業公司和大型企業在管理工具的演進過程中都或多或少使用過它們。

但是由於缺乏專業顧問的指導和最佳實踐的指引,很多公司在匯入 jira 過程走得並不順利,過多的「反對聲音」導致最終的「夭折」。在筆者看來,行業上的專案管理工具的功能大同小異,更關鍵的是工具背後的方**和思想。如果大家不理解它們,即使嘗試不同的工具也無濟於事。

筆者自2023年以來,依次使用過jira 3.x、6.x、7.x,最近也有幸體驗了8.x,每次大版本公升級都會給使用者帶來很棒的功能特性、使用者體驗和效能的提公升,最讓人振奮的是6.x版本引入了agile,將之前列表顯示方式以全新的「看板」方式來顯示,進而慢慢地從缺陷和問題跟蹤軟體公升級為敏捷專案管理軟體。接下來,我為大家揭開 jira背後的神秘面紗,以及在實踐過程中的一些配置技巧。

issue(問題)是 jira 專案的基本單元,用來跟蹤乙個專案中的所有工作或任務,無論是技術型、非技術型、支援型或其他型別。jira 專案是 issue 的集合,提供了 issue 的背景上下文,讓使用者知道應該在**建立 issues,使用者是 jira 專案的成員,工作在專案的 issues 上。根據每個組織和需求的特性場景,乙個 issue 可以是:

為了區分不同型別的工作,jira 將相似的 issues 歸為同乙個issue type(問題型別),常見問題型別有:epic、story、bug、task 和 sub-task 等。問題型別可以分為「標準問題型別」(如:story、task)和「子任務問題型別」(如:sub-task),它們之間是強父子關係(相對於 jira 鏈結這種弱關聯而言)。此外,我們還可以自定義問題型別,如:針對客戶的諮詢或查詢場景,我們可以建立乙個自定義問題型別query。

在 jira 中,問題型別是個很關鍵的概念,它與工作流、介面和字段的配置都有直接關係(如上圖)。接下來,我們將逐一介紹下:

乙個 jira 專案通常需要搭配多種問題型別,比如:敏捷專案至少包含 epic、story、task、bug 和 sub-task。為了滿足某些特定場景(如:敏捷專案管理),我們將與之關聯的問題型別「組合」在「問題型別方案」中,便於以後其他敏捷專案復用該問題型別方案。乙個 jira 專案關聯乙個問題型別方案,而乙個問題型別方案關聯 1~n 個問題型別。

fields(字段)是 jira 中最基本的資料單元,為 issue 儲存有意義的資料。jira 字段分為系統欄位和自定義字段,字段型別包含:文字型、下拉列表、使用者選擇器和日期等,例如:「經辦人」屬於使用者選擇器型別的系統字段,缺陷「嚴重程度」屬於下拉列表型別的自定義字段。字段必須在其載體」介面「中展現。

此外,字段還有」隱藏「和」必填「行為,在「字段配置」中設定每個欄位的行為。乙個字段配置可以被 1~n 個問題型別使用,例如:乙個 jira 專案中除問題型別 bug 之外的所有問題型別都使用預設的字段配置,而 bug 的字段配置中強制自定義字段「嚴重程度」為「必填」。我們將這些與不同問題型別關聯的字段方案組合稱為「字段配置方案」。乙個 jira 專案關聯乙個自定義的字段配置方案或乙個系統預設字段配置。

jira 介面是顯示在 ui 上的字段排列和展現,例如:新 issue 建立介面、現有 issue 編輯介面、狀態轉換的工作流介面。介面方案提供了在建立 issue、編輯 issue 和檢視 issue 時可以顯示不同的字段(如下圖),例如:自定義字段「發布結果」不顯示在建立 issue 介面,但是需要顯示在編輯和檢視 issue 介面。所以,乙個介面方案對應 1~3 個介面。

乙個 jira 專案中不同問題型別可能需要配置不同的介面方案,例如:在問題型別 bug 的介面方案中,bug 介面需要自定義字段「嚴重程度」和「缺陷原因」,而其他問題型別使用預設的介面方案即可(乙個介面方案關聯 1~n 個問題型別),我們將這些與不同問題型別關聯的介面方案組合稱為」問題型別介面方案「。乙個 jira 專案關聯乙個問題型別介面方案,乙個問題型別介面方案會被 1~n 個 jira 專案使用

jira 使用工作流跟蹤乙個 issue 的生命週期,工作流記錄著乙個 issue 在其生命週期中 status(狀態)和 transition**換動作)的變化。乙個 issue 在某個特定時間點有且僅有乙個狀態(如:開啟的、進行中或關閉的),jira 狀態有三個類別:初始、進行中、終態,每個 jira 狀態屬於其中的某個類別,例如:「待辦」和「開啟的」為初始狀態。

當乙個 issue 從乙個狀態移動到另外乙個狀態時,轉換動作是這兩個狀態之間的連線,通過這個「連線」實現了狀態的切換,例如:轉換動作「關閉」將 issue 從「進行中」切換到「關閉的」狀態。在「轉換動作」中可以配置「工作流介面」來收集必要的資料(如上圖),例如:用解決 issue 時的彈窗收集「解決結果」和工作在該 issue 上的「耗費時間「。

乙個工作流關聯 1~n 個問題型別,比如:task 和 sub-task 可以共用乙個工作流,story和bug分別有自己特定的工作流。我們將這些工作流「組合」在workflow scheme(工作流方案)中,為某些特定場景服務(類似於問題型別方案的作用)。乙個 jira 專案關聯乙個工作流方案,乙個工作流方案會被 1~n 個 jira 專案使用。

除了上面4個與問題型別直接關聯的「方案」外,jira 還有以下4個與 jira 專案直接關聯(1:1)的方案:

一般來講,jira 配置應遵循「簡潔」和「可復用」原則,可以大大減少後期維護成本,對維持jira效能也有幫助。

我們在處理 jira 定製化需求時需要遵守一定的流程:

為了減少過多的自定義欄位對 jira 效能的影響,我們在建立自定義欄位時盡量使用「通用名稱」,例如:使用「客戶id」代替「商家id」和「買家id」,這樣在使用到「商家id」或「買家id"的 jira 專案中可以直接使用「客戶id」實現。所以,當需要建立自定義欄位時,我們一定要看下是否有現有字段可以使用,或將現有字段改造成「通用名稱」以達到「復用」的目的。

此外,這個原則也適用於「問題型別」、「介面」和」工作流「等的設計。筆者見過將」jira任務「區分為多個問題型別:開發任務、測試任務和普通任務等,如果這些任務的工作流和介面無法統一,那麼可以這麼設計。如果這些任務的工作流和介面幾乎一樣(可以統一),那麼更建議使用單獨的自定義字段」任務型別「來做區分,這樣簡化了實現方式,減少了後期維護成本。

由於字段型別一旦選中,以後將無法修改,除非新建乙個字段。筆者曾經接到乙個需求:在提交發布審批流程中,每個 jira 只能對應乙個應用名稱(按應用來提交申請的場景)。自定義字段「應用名稱」的型別為「選擇列表」,按需求應該設計為「單選」。但是考慮到「擴充套件性,最終將該字段的型別設計為:選擇列表(多選),因為這個方案既能應對按應用提交發布申請的場景,也能應對按實際需求或專案提交發布申請的場景

場景:不同的 jira 專案都需要使用自定義字段「產品分類」,但是每個專案的「產品分類」的選項值不盡相同。那麼,我們該如何設計 jira 來適配這個場景呢?

可能的解決方案

隨著組織規模的擴大和實際業務的擴充套件,相關流程和 jira 配置也在不斷進化,從剛開始的嘗試逐漸發展成熟,進而演變成組織的一些通用配置,例如:針對產品迭代管理的 jira 敏捷專案管理配置,這套配置可以直接拿來管理新的產品線。在建立 jira專案時,我們可以選擇「建立與共享配置」選擇乙個標桿專案,或者使用外掛程式「 delegated project creator for jira」從通用模板建立。另外,不要修改預設配置,可以從預設配置「複製」,然後來修改。如果有多個 jira 管理員,那麼需要對齊配置的命名規範。

我之前有聽到過乙個 jira 工作流設計出 20+個狀態,「完美」匹配現實中的業務流程。其實,過於規範的工作流會「慫恿」低效的行為。我也見過 「freestyle" 的 jira 工作流,任何狀態之間都可以隨意轉換,過於自由的工作流難以沉澱下來,也會影響資料度量的準確性。有效的軟體開發依賴於人及其溝通,然後才是用工具輔助跟蹤過程。我們使用 jira 幫助溝通,但別使用它做不必要的工作。盡量使用簡單的工作流,因為每增加乙個狀態都會增加更多的轉換動作和複雜性

從普通 jira 使用者轉變為 jira 配置管理員,一路走來,跌跌撞撞,踩了很多坑。但是通過不斷地學習和實踐,我逐漸領悟到 jira 的設計理念和精髓,並通過分享與很多人建立起連線,這是乙個很令人愉快的事情。同時,我也看到,很多公司由於缺乏專業人員的指導和最佳實踐的指引,在匯入 jira 過程走得並不順利,過多的「反對聲音」導致最終的「夭折」。在我看來,行業上的專案管理工具的功能大同小異,更關鍵的是工具背後的方**和思想。如果大家不理解它們,即使嘗試不同的工具也無濟於事。

即時通訊架構剖析與實現

架構師的技術棧圖如下 需要知道知識面 集群監控 zabbix f5是乙個物理機,軟體 硬體的方式來負責ip包的 專業工作來做商業模式 如上架構支撐1000w沒有問題 缺點 1 效能瓶頸 lvs或者f5都是有效能上限的,超過這個效能上限怎麼辦?比如facebook taobao tencent等等,他...

Linux之hosts檔案剖析與配置

無論是linux還是windows都有hosts檔案,我們只有配置了host檔案才能通過主機名稱去訪問該機器。hosts檔案配置至關重要,無論是開發還是測試運維都需要配置,會伴隨整個大資料生命週期。linux的hosts檔案位置 etc hosts windows的hosts檔案位置 c windo...

Git使用基礎與技巧

git clone 轉殖遠端版本庫 git init 初始化本地版本庫 git status 檢視狀態 git diff 檢視變更內容 git add 跟蹤所有改動過的檔案 git add 跟蹤指定的檔案 git mv 檔案改名 git rm 刪除檔案 git rm cached 停止跟蹤檔案但不刪...