iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
IT管理

每天利用 Jira 開單時,練習一個密技,應該不是薪水小偷吧!?系列 第 24

Day24- 解析 JQL 讓 Automation 更進階-認識 JQL Keywords後,設定開新版本後自動加入 IN PROGRESS 的票中

  • 分享至 

  • xImage
  •  

我有點灰心,因為不懂開發流程,主要是為了寫 Jira Automation 文章才東拼西湊,我本來就對 DevOps 這段有點驚驚,不過運氣好在之前的 Create Branch、Commit 等都算順利,但從 pull request is merged 就一直卡關。
因為我不具備 Git 的基本知識,原本今天的文章我想寫 設定 deployment production 失敗時的自動通知成功啦!,但因為不懂 CI/CD,在設定上也一直卡關,設定到一半發現要設定 pipline ,文章也只能寫到一半,所以只好暫時放著,我先來練習我原本就想弄清楚的 JQL,關於 Git 和 deployment production 什麼的,之後再看。
https://ithelp.ithome.com.tw/upload/images/20231010/20162673CTlQHW3KkT.png

今日分享

  1. JQL keywords
  2. 啟用 When version is created → assign it to all the In Progress issues without a fix version

JQL keywords

我們在設定 Automation 時,我們會用 Basic 或 JQL 來做條件設定,但 JQL 這一串文字常讓我們介於懂和不懂之間,因此,為了更有助於使用,我就認真的閱讀 Atlassian 原廠文章 Use advanced search with Jira Query Language (JQL)

在JQL中,keywords是執行以下任一操作(或是以下操作的一部分)的重要單詞:

  • 將兩個或多個子句連接在一起以形成復雜的JQL查詢。
  • 更改一個或多個子句的邏輯。
  • 更改運算子的邏輯。
  • 在JQL查詢中具有明確的定義。
  • 執行特定功能,以更改JQL查詢的結果。
    我也觀察到一個有趣現象,這些 keywords 在 JQL 中都會呈現大寫,也許是為了讓讀者更清楚語法。以下是幾個常用的 keywords。
  1. AND:用於結合多個子句,更加精準搜索條件。
    例如:
  • 雙搜尋條件:找到“New office”專案中,Status 為 open 的所有 issue
    project = "New office" AND status = "open"

  • 3個搜尋條件:找到所有 (1)Assignee 給 jsmith 且 (2)Status 為 open 的所有 issue 且 (3)優先順序(Priority)為 urgent 的issues:
    status = open AND priority = urgent AND assignee = jsmith

  • 找到 JRA 這個 project 中未指定給 jsmith 的所有 issue,要找到指定的 Project 通常會用 Key name ,在這裡 Key 就是 JRA 。
    project = JRA AND assignee != jsmith

  • 找到 JRA 和 CONF 兩個 Projects 中,3.14 版本中的所有 issues,此處 IN 有二擇一的意思,也就是只要有符合其中一個即可。
    project in (JRA,CONF) AND fixVersion = "3.14"

  • 找到 Jack、Jill、John 這三個人以外的所有 Issues(通常是 reporter 和 Assignee 之外的意思)
    reporter not in (Jack,Jill,John) AND assignee not in (Jack,Jill,John)

  1. OR:用於搜尋多個條件,只要符合其中一個條件即可符合,用來擴大搜尋。註:可用括號()來控制條件執行的順序。(注意:有時 IN 的用法也等於 OR)
    例如:
  • 找到 jsmith 或 jbrown create 的所有 issues
    reporter = jsmith OR reporter = jbrown

  • 找到逾期或未設定截止日期的所有 issues,在此 逾期的 issue 是優先項目
    duedate < now() OR duedate is empty

  1. EMPTY 和 NULL :都是用於搜尋欄位空白或沒有值的 issue,特別一提,"IS" 和 "IS NOT" 運算符(明天我們會來說明什麼是運算符)只能與 "EMPTY" 或 "NULL" 一同使用,不得用於其他名詞。
    例如:找到所有沒有到期日期(DueDate)的問題,都可以用以下的 JQL
    duedate = empty 或 duedate is empty
    duedate = null 或 duedate is null

  2. NOT:用於否定個別條件或由括號組成較為複雜 JQL 查詢(由多個條件組成的查詢),從而精準搜尋。
    (注意:還請參閱 "NOT EQUALS(!=)"、"DOES NOT CONTAIN(!〜)"、"NOT IN" 和 "IS NOT"。)
    例如:

  • 找到所有 Assignee 不是 jsmith 的 issues:
    NOT assignee = jsmith

  • 找到所有不是由 jsmith 或 jbrown Create 的 issues:
    NOT (reporter = jsmith OR reporter = jbrown)

  1. ORDER BY:用於指定依欄位的值排序搜索結果。這個指令需要放在 JQL 的末尾,否則 JQL 將無效。也可以使用由低到高排序("asc")或由高到低("desc")指令。
    例如:
  • 找到沒有到期日(Duedate)的 issues,按創建日期(Create date)排序:
    duedate = empty ORDER BY created

  • 找到沒有到期日(Duedate)的 issues,按創建日期(Create date)排序,依由高到低排序
    duedate = empty ORDER BY created, priority desc

  • 找到沒有到期日(Duedate)的 issues,按創建日期(Create date)排序,依由低到高排序
    duedate = empty ORDER BY created, priority asc


啟用 When version is created → assign it to all the In Progress issues without a fix version

了解了 JQL Keywords 後,剛好有一個 Automation rule 的設定是有使用到上述 "EMPTY" "AND",我們來練習吧!

  1. 找到今天要練習的 Automation Templates When version is created → assign it to all the In Progress issues without a fix version
  • 首先從專案 Board 點擊左邊功能區的 [Project setting]
    https://ithelp.ithome.com.tw/upload/images/20231010/20162673TDbnfA3mxi.png

  • 點擊左邊功能區的 [Automation]

  • 點擊中間上方的 [Rules] 、[Audit log] 、 [Templates] 的 [Templates]。

  • 進到 Automation templates 選單後向下拉。

  • 找到 When version is created → assign it to all the In Progress issues without a fix version ,並點擊進去。
    https://ithelp.ithome.com.tw/upload/images/20231010/20162673egE63hDwnv.png

  1. Rules details 已經自動的填完 [Name] ,而其他的不用設定。
    [Name]:When version is created → assign it to all the In Progress issues without a fix version,雖然我可以直接按下 「Turn it on],然後收工,但我們講好了要進去看 JQL 設定的,我會信守承諾。
    https://ithelp.ithome.com.tw/upload/images/20231010/20162673MD7nTUyrRl.png

  2. 詳看 [When] 的設定並修改
    我們也點擊 [When] 了解一下 Automation rules 的設定。
    因為我們的觸發事件是 Version created,而 Template 已設定好了,看起來不用設定。
    https://ithelp.ithome.com.tw/upload/images/20231010/201626739qKHUf84QO.png

  3. 詳看 [Branch rule / related issues] 的設定

  • 此處是 Branch rule / related issues 設定區,需要設定的欄位有 [Type of related issues],在下拉式選單中,系統選擇了 JQL,因此也出現了[JQL]的設定欄位,系統的 JQL 設定如下。
    fixVersion = EMPTY AND statusCategory = "In Progress"
    我們可以看到這段 JQL 中,有兩個條件
  • 條件 1 是 fixVersion = EMPTY,此處使用 = ,若使用 IS 也是可以的。
  • 條件 2 是 statusCategory = "In Progress",Issue 在 In Progress 的 status 中。
  • 上述兩個條件用 AND 做連結,代表必須兩個條件都符合才能被搜出來。
    https://ithelp.ithome.com.tw/upload/images/20231010/20162673KAd1uni8J6.png
  1. 詳看 [Than] 的設定
  • 我們也點擊 [than] 了解一下 Automation rules 的設定。
  • 看到右邊 Edit issue 的設定,只有 [Fix versions] 需要設定,但 template 原始設定就符合我們的期望。
  • 最後再按下右上角的 [Turn it on],恭喜完成 ✅ 。

https://ithelp.ithome.com.tw/upload/images/20231010/20162673EhDURakjSR.png

現在做 JQL 是不是比較清楚了呢?


上一篇
Day23 - 反樸歸真一天- 重覆的工作描述就讓 Jira Automation 代勞吧!你去寫 Code 或教我 DeBug
下一篇
Day25 - 解析 JQL 讓 Automation 更進階 - 今天來認識 JQL operators (運算符號)
系列文
每天利用 Jira 開單時,練習一個密技,應該不是薪水小偷吧!?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言