由于工作的原因孔飒,需要寫一個自動審批的工作流秽荞,看了下網(wǎng)上的分享,資料不多像捶;經(jīng)過幾天的踩坑上陕,決定寫這篇分享,不對之處歡迎指正
1. Jira創(chuàng)建一個工作流
首先創(chuàng)建一個工作流
2. Jenkins上安裝插件 JIRA Trigger Plugin
2.1 安裝plugin
Manage Jenkins -> Manage Plugin -> JIRA Trigger Plugin
2.2 Jenkins配置Jira相關(guān)參數(shù)
Manage Jenkins -> Configure System -> JIRA Trigger Configuration
3. Jira創(chuàng)建一個webhook
完成前面兩部之后拓春,開始創(chuàng)建webhook
Jira -> 系統(tǒng) -> 高級 -> webhook 點擊右上角創(chuàng)建webhook
- 名稱:隨便填寫即可
- URL:{Jenkins的域名}/jira-trigger-webhook-receiver/
- 事件:這個字段的意義就是释簿,在Jira上發(fā)生這個事件的時候,調(diào)起webhook硼莽,發(fā)起一個POST請求庶溶;這個地方填寫的是JQL,也就是Jira的一個搜索語句,假如你只要某個項目的issue狀態(tài)發(fā)生了變化偏螺,可以參照如圖所示行疏,在事件那欄寫
project = 項目名稱
保存之后,在瀏覽器輸入剛剛webhook的URL套像,回車后如果提示這是一個POST請求
則表示webhook設(shè)置成功了酿联!
4. Jenkins新建一個Job
總結(jié)一下webhook的工作原理:
- 在Jira上進(jìn)行操作,觸發(fā)了剛剛在webhook中設(shè)置好的事件夺巩,此時Jira服務(wù)器會調(diào)webhook的URL進(jìn)行POST請求
- 此時請求會發(fā)到Jenkins贞让,那么要如何觸發(fā)job的執(zhí)行呢,這就需要我們新建一個job來接收這個POST請求了
4.1 創(chuàng)建pipline job
也就是創(chuàng)建流水線的job劲够,隨便命名后震桶,看到Build Triggers
- 假如你只是想校驗issue狀態(tài)的變化,勾選Build when an issue is updated in JIRA 征绎;如果你想校驗的是issue評論發(fā)生的變化蹲姐,勾選Build when a comment is added to JIRA(如果沒有這個選項那一定是沒有安裝Jenkins的插件了,看前文)
這里網(wǎng)上的說明也很多人柿,不多說 - JQL filter 這個字段是當(dāng)webhook的請求發(fā)來柴墩,會校驗請求相關(guān)參數(shù)是否符合要求,可以和webhook填寫的一致凫岖,也可以再加上更嚴(yán)格的篩選
- Changelog matcher:選擇Add Changelog matcher江咳,然后選擇Jira Field Matcher;這個字段是校驗webhook發(fā)來請求中的issue哥放,是否是由某個狀態(tài)(Old value)變?yōu)榱四硞€狀態(tài)(New value)
這個狀態(tài)的值需要從Jira獲燃咧浮(就是工作流每個階段的名稱啦) - 保存job
其實到這里,整個webhook就可以用了甥雕,改變某個issue到指定狀態(tài)踩身,此job應(yīng)當(dāng)是會自動構(gòu)建的,如果沒有自動構(gòu)建社露,那么要么是URL寫錯挟阻,要么是狀態(tài)變更的錯誤,具體問題具體分析了峭弟。
5. webHook的傳參
前面說到webhook發(fā)起的是POST請求附鸽,很有意思的一件事請就是參數(shù)是如何傳的呢?
webhook頁面瞒瘸,URL下面寫了可以在URL中使用下面的額外變量坷备,我以為只要點擊某個變量,加到URL后挨务,即可傳遞此參數(shù)击你,可是事實是加上參數(shù)后URL甚至都不能用了玉组。
不知道是不是我使用的姿勢有問題谎柄,看了很多網(wǎng)上的分享丁侄,我了解到webhook的URL被請求后,實際上是默認(rèn)會傳issue的key過去的朝巫,我們選擇一個已經(jīng)構(gòu)建的job rebuild一次鸿摇,可以看到確實傳了參數(shù)issue key
那么其實其他的參數(shù)都是沒有用的么?
也許是有用的劈猿,可能是我引用的參數(shù)不對拙吉,目前為止,我只發(fā)現(xiàn)不傳參的時候URL是可以被自動調(diào)用的(歡迎指正)
可是這個issue key其實已經(jīng)足夠有用了揪荣,你可以通過調(diào)jira的api獲得你想要的信息筷黔,下一篇講如何在pipline中使用參數(shù)