配置前要注意的點:
先安裝插件:set build description
安裝該插件后,在【Post-build Actions】
欄目中會多出description setter
功能,可以實現構建完成后設置當次build的描述信息。這個描述信息不僅會顯示在build頁面中,同時也會顯示在歷史構建列表中。
有了這個前提,要將二維碼圖片展示在歷史構建列表中貌似就可以實現了,能直觀想到的方式就是采用HTML
的img
標簽,將<img src='qr_code_url'>
寫入到build描述信息中。
這個方法的思路是正確的,不過這么做以后並不會實現我們預期的效果。
這是因為Jenkins出於安全的考慮,所有描述信息的Markup Formatter
默認都是采用Plain text
模式,在這種模式下是不會對build描述信息中的HTML編碼進行解析的。
要改變也很容易,Manage Jenkins
-> Configure Global Security
,將Markup Formatter
的設置更改為Safe HTML
即可。
首先說明2點:
1.這個url指向一張圖片
2.我想通過正則匹配到這個圖片地址,然后在descripiotn中通過<img src = url>的形式,在jenkins構建歷史中展示出這張圖片
示例:
測試文本:
appQRCodeURL: https://www.pgyer.com/app/qrcodeHistory/6d2176e2fec26df62f907296237e78910f45b2ff711d81f6e2a926ff45xxxxx
Regular expression填寫:
appQRCodeURL: ([a-zA-z]+://[^\s]*)
Description填寫:
<img src ="\1" height="140" width="140" ><a href='https://www.pgyer.com/xxxx'>Install Online</a>
解釋:
1.Description使用 \n這種形式去引用Regular expression 中正則表達式匹配到的結果(只會匹配括號中括起來的內容)
2.如果正則表達式中有多個()括號,則可以使用\1\2來對應這些括號
碎碎念:
- 在這里我只想匹配到 https://xxx 這個url網址,我以為正則表達式部分這樣寫[a-zA-z]+://[^\s]* 就可以匹配到了。
- 事實上,我在用在線正則表達式測試的時候確實也匹配到了,
- 但在使用jenkins時,<img src = "\1"> 出來的結果卻是這樣的,並沒有和我預期一樣展示出圖片。
接下來排查問題,圖片展示不出來,肯定是圖片的路徑有問題。
直接訪問url地址可以看到圖片,說明url本身沒有問題。
所以問題出在對圖片的引用這里。
- 首先確認正則表達式是否正確的匹配到了圖片地址呢?
在 Regular expression處輸入https://www.pgyer.com/app/qrcodeHistory/...(...表示正則表達式匹配后面的內容),
Description處什么也不寫,這樣執行構建后,構建歷史中會直接展示正則表達式匹配到的內容,我們就可以查看匹配到的結果是否和我們預期的一致了
展示的效果是這樣的。點開...可以訪問到圖片。
看構建詳情是匹配到了url地址的
百思不得其解的時候,看到了下面地址中的博客,才明白過來,原來
在jenkins的 set build description這個插件中,如果想要引用到正則表達式匹配到的結果,
一定要在正則表達式外面用()英文的小括號括起來。
划重點:
因為 \1表示引用 正則表達式中第1個用小括號括起來,匹配到的內容,
所以如果description中使用了\1引用,則正則表達式中一定要有1組用()括起來的正則表達式,才能有引用到的結果啊
看一下說明文檔:
1
Regular expression參數的含義:
Description參數的含義:
另附一個 APP版本號的正則表達式
BuildVersion: (([1-9]\d|[1-9])(\.([1-9]\d|\d)){2})
使用方式 :
<b>"\1" </b>
效果:
參考了:
https://blog.csdn.net/weiguang1017/article/details/78549607