在《使用Jenkins實(shí)現(xiàn)持續(xù)集成構(gòu)建檢查》一文中菩收,寫到了這么一段話:
在這里媒殉,我們還可以通過--disable_output_color開關(guān)將輸出日志的顏色關(guān)閉。之所以實(shí)現(xiàn)這么一個功能,是因?yàn)樵贘enkins中本來也無法顯示顏色盅粪,但是如果還將Terminal中有顏色的日志內(nèi)容輸出到Jenkins中,就會出現(xiàn)一些額外的字符悄蕾,比較影響日志的美觀票顾。
非常感謝熱心的讀者,及時地為我糾正了這一點(diǎn)帆调。事實(shí)上奠骄,當(dāng)前在Jenkins中,是可以通過安裝插件來實(shí)現(xiàn)在輸出日志中顯示顏色的番刊。
這個插件就是AnsiColor
含鳞。
安裝 && 配置
安裝的方式很簡單,【Manage Jenkins】->【Manage Plugins】芹务,搜索AnsiColor
進(jìn)行安裝即可蝉绷。
安裝完成后,在Jenkins Project的Configure
頁面中枣抱,Build Environment
欄目下會多出Color ANSI Console Output
配置項(xiàng)熔吗,勾選后即可開啟顏色輸出配置。
在ANSI color map
的列表選擇框中佳晶,存在多個選項(xiàng)桅狠,默認(rèn)情況下,選擇xterm
即可。
保存配置后中跌,再次執(zhí)行構(gòu)建時咨堤,就可以在Console
中看到顏色輸出了。
效果圖
使用xctool
命令編譯iOS應(yīng)用時晒他,在Jenkins的Console output
中會看到和Terminal
中一樣的顏色效果吱型。
補(bǔ)充說明
需要說明的是,在輸出日志中顯示顏色陨仅,依賴于輸出的日志本身津滞。也就是說,如果輸出日志時并沒有ANSI escape sequences
灼伤,那么安裝該插件后也沒有任何作用触徐,并不會憑空給日志加上顏色。
例如狐赡,如果采用xcodebuild
命令編譯iOS應(yīng)用撞鹉,那么輸出日志就不會顯示顏色。
說到這里颖侄,再簡單介紹下ANSI escape sequences
鸟雏。
ANSI escape sequences
ANSI escape sequences
,也叫ANSI escape codes
览祖,主要是用于對Terminal中的文本字符進(jìn)行顏色的控制孝鹊,包括字符背景顏色和字符顏色。
使用方式如下:
33[字符背景顏色;字符顏色m{String}33[0m
其中展蒂,33[字符背景顏色;字符顏色m
是開始標(biāo)識又活,33[0m
是結(jié)束標(biāo)識,{String}
是原始文本內(nèi)容锰悼。通過這種形式柳骄,就可以對輸出的文本顏色進(jìn)行控制。
具體地箕般,字符顏色和字符背景顏色的編碼如下:
字符顏色(foreground color):30~37
- 30:黑
- 31:紅
- 32:綠
- 33:黃
- 34:藍(lán)色
- 35:紫色
- 36:深綠
- 37:白色
字符背景顏色(background color):40~47
- 40:黑
- 41:深紅
- 42:綠
- 43:黃色
- 44:藍(lán)色
- 45:紫色
- 46:深綠
- 47:白色
需要說明的是耐薯,字符背景顏色和字符顏色并非必須同時設(shè)置,也可以只設(shè)置一項(xiàng)丝里。
代碼示例
掌握了以上概念后可柿,我們就可以通過對打印日志的代碼進(jìn)行一點(diǎn)調(diào)整,然后就可以讓輸出的日志更加美觀了丙者。
以Ruby為例,在Sting
基礎(chǔ)類中添加一些展示顏色的方法营密。
class String
# colorization
def colorize(color_code)
"\e[#{color_code}m#{self}\e[0m"
end
def red
colorize(31)
end
def green
colorize(32)
end
def yellow
colorize(33)
end
end
然后械媒,我們在打印日志時就可以通過如下方式來控制日志的顏色了。
# 步驟執(zhí)行正常,輸出為綠色
step_action_desc += " ... ?"
puts step_action_desc.green
# 步驟執(zhí)行異常纷捞,輸出為紅色
step_action_desc += " ... ?"
puts step_action_desc.red
展示效果如下圖所示痢虹。
是不是好看多了?
原文鏈接:http://debugtalk.com/post/make-Jenkins-Console-Output-Colorful/