在《使用Jenkins實現(xiàn)持續(xù)集成構建檢查》一文中,寫到了這么一段話:
在這里,我們還可以通過--disable_output_color開關將輸出日志的顏色關閉。之所以實現(xiàn)這么一個功能,是因為在Jenkins中本來也無法顯示顏色,但是如果還將Terminal中有顏色的日志內容輸出到Jenkins中,就會出現(xiàn)一些額外的字符,比較影響日志的美觀。
非常感謝熱心的讀者,及時地為我糾正了這一點。事實上,當前在Jenkins中,是可以通過安裝插件來實現(xiàn)在輸出日志中顯示顏色的。
這個插件就是AnsiColor
。
安裝 && 配置
安裝的方式很簡單,【Manage Jenkins】->【Manage Plugins】,搜索AnsiColor
進行安裝即可。
安裝完成后,在Jenkins Project的Configure
頁面中,Build Environment
欄目下會多出Color ANSI Console Output
配置項,勾選后即可開啟顏色輸出配置。
在ANSI color map
的列表選擇框中,存在多個選項,默認情況下,選擇xterm
即可。
保存配置后,再次執(zhí)行構建時,就可以在Console
中看到顏色輸出了。
效果圖
使用xctool
命令編譯iOS應用時,在Jenkins的Console output
中會看到和Terminal
中一樣的顏色效果。
補充說明
需要說明的是,在輸出日志中顯示顏色,依賴于輸出的日志本身。也就是說,如果輸出日志時并沒有ANSI escape sequences
,那么安裝該插件后也沒有任何作用,并不會憑空給日志加上顏色。
例如,如果采用xcodebuild
命令編譯iOS應用,那么輸出日志就不會顯示顏色。
說到這里,再簡單介紹下ANSI escape sequences
。
ANSI escape sequences
ANSI escape sequences
,也叫ANSI escape codes
,主要是用于對Terminal中的文本字符進行顏色的控制,包括字符背景顏色和字符顏色。
使用方式如下:
33[字符背景顏色;字符顏色m{String}33[0m
其中,33[字符背景顏色;字符顏色m
是開始標識,33[0m
是結束標識,{String}
是原始文本內容。通過這種形式,就可以對輸出的文本顏色進行控制。
具體地,字符顏色和字符背景顏色的編碼如下:
字符顏色(foreground color):30~37
- 30:黑
- 31:紅
- 32:綠
- 33:黃
- 34:藍色
- 35:紫色
- 36:深綠
- 37:白色
字符背景顏色(background color):40~47
- 40:黑
- 41:深紅
- 42:綠
- 43:黃色
- 44:藍色
- 45:紫色
- 46:深綠
- 47:白色
需要說明的是,字符背景顏色和字符顏色并非必須同時設置,也可以只設置一項。
代碼示例
掌握了以上概念后,我們就可以通過對打印日志的代碼進行一點調整,然后就可以讓輸出的日志更加美觀了。
以Ruby為例,在Sting
基礎類中添加一些展示顏色的方法。
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/