近期許多公司導入Jira /Confluence 系統來加強團隊的議題處理彈性以及改善工作流程。這套由澳洲軟體公司Atlassian 設計的專案管理軟體功能非常強大,但對我們這種小小硬體工程師來說,要把硬體設計流程套進軟體開發周期的架構下實在有點不容易。這篇文章不會對工作流程下太多著墨,而是站在部門小螺絲釘的角度使用Jira 設計一個自動化工具,讓同仁不用花太多時間在文件填寫,同時給主管一個儀表板可以總覽專案進度。{alertInfo}
目錄#
甚麼是Jira /Confluence#
Jira 與Confluence 是一套由Atlassian 公司設計的專案管理軟體,其中Jira更偏向動態專案管理,而Confluence 的用則是像Wiki 相似,比較偏向靜態的文件編輯或者會議紀錄。
目前大多數的用法會在會議時會議記錄填寫在Confluence 中,頁面可以連動Jira 的Issue task,讓會議主持人可以追蹤各個Ticket的進度。
另一個用法可以將產品或專案做一個階段性紀錄,或者產品Release後的反查系統,為專案建立一個自己的頁面,當其他團隊需要合作或選用自身團隊的Solution 時,可以直接遠端存取而不需要多餘的檔案交換過程。
下圖可以看到,每個頁面是以樹狀圖的方式排序,比較適合靜態文件的存放。

另一個優點是Jira 可以自定義許多篩選器,讓KanBan 的觀點依照執行者、專案類型、專案狀態等等條件做篩選,讓使用者一目了然知道現在專案與任務進度。

基本觀念#
Jira 系統所有元素都是一個 Issue ,而 Issue 再依據使用狀況不同需要設定不同屬性 (Field)。
舉例來說,一個 Bug Issue,其中的 Field 可能包含Summary, Reporter, Components, Description, Priority 等等。這部分會依據 IT 的設定有所不同。甚至,不同種類的 Issue (Issue Type 不同) 能填寫的欄位也會不一樣。
這是實務上用在 Bug 修復時需要建立的單子:

或者,現在我想做一個大型專案,裡面包含很多不同種類的 Issue ,如Task, Test plane, Test Execution 等等的整套專案流程,我該怎麼做?
如果手動一個一個建立,再互相把它連接起來,光是專案開案的前期準備工作就可以耗掉PM半天時間再做這件事情了,不僅效率低落也浪費時間。

為何需要自動化#
想像一下現在有一套標準的硬體開發流程,從構想、規劃、設計一直到驗證、試產、量產與結案,這整套流程除了前期的構想與規劃不在工程師的範疇,後面的四大步驟基本上都是工程師在管理。
而大部分的 RD 開發者會負責設計、驗證與試產三個階段,這三個階段再細分會有 EVT、DVT 以及 PVT, (參考工作熊大大的文章: 深入了解EVT/DVT/PVT:新產品開發的三個關鍵驗證階段解說),這麼多手續全部手動建立Jira 的Issue,填這個就飽了哪裡有空去真正實作硬體設計呢?
為了解決這個問題,勢必一定要導入專案自動化的方式才能降低工程師討厭寫文件的心態,最好的方法就是只要填一次,所有東西都會自動長出來,還能自動提醒。
下圖示範了一個建立在Epic 底下的Issue 們,這些都是綁在同一個大專案下的子任務

Jira 自動化設定#
要達成自動化建立Issue ,我們要到 Jira 首頁選擇 “Project”,並在頁面左下角的 Project settings,找到左方側邊欄的 Automation 就可以建立針對這個 Project 的自動化規則。
需要注意的是,這裡的 “Project” 跟我們平常使用的專案 Project 是不一樣的概念,可能因為 Jira 系統本身的限制,每個部門分到的空間也被稱作 Project,所以本文接下來會把部門的 Project 稱作Project space。
下方的範例中有四個自動化規則,如任務到期提醒,專案建立自動化,Issue 表格自動填寫等等。

.tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:6px 25px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:6px 20px;word-break:normal;} .tg .tg-lboi{border-color:inherit;text-align:left;vertical-align:middle} .tg .tg-0pky{border-color:inherit;text-align:left;vertical-align:top}
| 是否必填 | 種類 | 說明 |
|---|---|---|
| 必填 | 觸發事件 Trigger | 設定要觸發這個自動化規則的事件,常見的有當心任務建立時、Issue 有新留言時、Issue 欄位被更動時,或者依照時間每幾天一次等等。 |
| 非必填 | 條件 Condition | 設定這個自動化的篩選條件。如 Issue 欄位是 Epic 時,或者特定欄位滿足條件、If/Else 判斷、JQ L語法判斷等等。 |
| 非必填 | 動作 Action | 設定自動化規則要針對篩選後結果所執行的動作。如建立其他Issue,修改Issue 欄位、傳送Email通知或者刪除Issue 等等。 |
| 非必填 | 分支規則 Branch rule | 這功能允許在自動化流程中加入多重層次操作,可以針對特定的相關 Issue(例如子任務、連結的 Issue、相同 Sprint 中的 Issue 等)進行額外的操作,從而使自動化更加靈活。 |
條件的符號則是一個橘色漏斗,也可以想像成篩選器或filter,因為 Jira 所有任務都是 Issue,沒有適當的篩選器很容易不小心改錯地方。

JQL 常見語法#
Jira Query Language (JQL) 是 Jira 的查詢語言,用來幫助用戶篩選、搜尋及分析問題(Issue)資料。JQL 提供了靈活的語法,使得用戶可以使用條件組合來找出符合特定需求的 Issue,無論是簡單的篩選還是複雜的查詢,都可以透過 JQL 來完成。詳細可以參考 Sunny大大寫的:[Day18]Jira Query Language (JQL)-第一次使用Jira就上手一文,筆者這邊直接提供我使用的簡單範例供大家參考。
我們的需求有兩個,第一是能夠在建立 Epic 類型的 Issue 時可以自動產生 milestone 的 task ,讓 RD 可以減輕填寫文件的負擔。
第二則是希望系統可以在任務到期的時候,主動傳送電子郵件給每一位執行者,讓他們知道說任務時間已經到期,需要盡快完成工作。
第一個需求我們設定 Trigger 條件為當有新 Issue 被建立時,系統會觸發這條自動化規則。
接著系統會檢查這個 Issue Type 是不是 Epic。 在我們使用 JQL 語法中的 summary 欄位,搭配字元檢查運算符將不符合的 Epic Issue 篩選掉。 語法如下:
summary !~ "快掃" AND summary !~ "AAP" AND summary !~ "HW-E" AND summary !~ "Non" AND summary !~"Training" AND summary !~ "Study"而第二個需求,我們希望系統可以檢查 Issue 的到期日並發送 Email 通知。這需要將Trigger 改成 Scheduled。
- 首先在 trigger 步驟選擇 Scheduled,並設定排程時間。可以設定多久執行一次,如一天一次,一小時一次,或者一分鐘一次等等。而下方的進階 JQL 過濾可以把要執行的對象作更進階的篩選。
筆者這邊設定一天執行一次,且檢查 Issue 欄位中的 “End date” 是不是小於今天的日期,且 Issue 的狀態不是在 done。這樣可以省去一個 condition 的步驟。
JQL 語法如下:
"End date" <= now() and status not in (done)
Issue {{issue.key}} - {{issue.summary}} is over due內文也可以利用 smart value 填寫專案連結:
https://jira-dc.xxx.com/browse/{{issue.key}}總結#
這篇文章說明了怎麼使用 Jira 內建的自動化功能,來讓使用者事半功倍。不僅系統可以主動通知任務結束的日期之外,也可以快速產生很多關聯的任務,來節省時間。自動化設定的規則主要分三大項目:第一項是觸發條件,選擇什麼事件會觸發這個自動化;第二項是篩選條件,目的是將 Project 中的所有 Issue 作篩選,留下有興趣的 Issue;第三項是動作,是自動化規則實際要進行的動作,除了建立新 Issue 之外,也可以傳送電子郵件通知,或者刪除任務等等。
透過多樣的組合,讓自動化規則有五花八門的輸出,最後達到主管與 RD 都雙贏的局面。
參考資料#
- Jira 官方說明






