我有點灰心,因為不懂開發流程,主要是為了寫 Jira Automation 文章才東拼西湊,我本來就對 DevOps 這段有點驚驚,不過運氣好在之前的 Create Branch、Commit 等都算順利,但從 pull request is merged 就一直卡關。
因為我不具備 Git 的基本知識,原本今天的文章我想寫 設定 deployment production 失敗時的自動通知成功啦!,但因為不懂 CI/CD,在設定上也一直卡關,設定到一半發現要設定 pipline ,文章也只能寫到一半,所以只好暫時放著,我先來練習我原本就想弄清楚的 JQL,關於 Git 和 deployment production 什麼的,之後再看。
我們在設定 Automation 時,我們會用 Basic 或 JQL 來做條件設定,但 JQL 這一串文字常讓我們介於懂和不懂之間,因此,為了更有助於使用,我就認真的閱讀 Atlassian 原廠文章 Use advanced search with Jira Query Language (JQL)
在JQL中,keywords是執行以下任一操作(或是以下操作的一部分)的重要單詞:
雙搜尋條件:找到“New office”專案中,Status 為 open 的所有 issueproject = "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)
找到 jsmith 或 jbrown create 的所有 issuesreporter = jsmith OR reporter = jbrown
找到逾期或未設定截止日期的所有 issues,在此 逾期的 issue 是優先項目duedate < now() OR duedate is empty
EMPTY 和 NULL :都是用於搜尋欄位空白或沒有值的 issue,特別一提,"IS" 和 "IS NOT" 運算符(明天我們會來說明什麼是運算符)只能與 "EMPTY" 或 "NULL" 一同使用,不得用於其他名詞。
例如:找到所有沒有到期日期(DueDate)的問題,都可以用以下的 JQLduedate = empty 或 duedate is empty
duedate = null 或 duedate is null
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)
找到沒有到期日(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
了解了 JQL Keywords 後,剛好有一個 Automation rule 的設定是有使用到上述 "EMPTY" "AND",我們來練習吧!
首先從專案 Board 點擊左邊功能區的 [Project setting]
點擊左邊功能區的 [Automation]
點擊中間上方的 [Rules] 、[Audit log] 、 [Templates] 的 [Templates]。
進到 Automation templates 選單後向下拉。
找到 When version is created → assign it to all the In Progress issues without a fix version ,並點擊進去。
在 Rules details 已經自動的填完 [Name] ,而其他的不用設定。
[Name]:When version is created → assign it to all the In Progress issues without a fix version,雖然我可以直接按下 「Turn it on],然後收工,但我們講好了要進去看 JQL 設定的,我會信守承諾。
詳看 [When] 的設定並修改
我們也點擊 [When] 了解一下 Automation rules 的設定。
因為我們的觸發事件是 Version created,而 Template 已設定好了,看起來不用設定。
詳看 [Branch rule / related issues] 的設定
fixVersion = EMPTY AND statusCategory = "In Progress"
現在做 JQL 是不是比較清楚了呢?