Jenkins用のANSIカラープラグインをインストールしました。ジョブでは、デフォルトのプロファイル「xterm」でそのプラグインをアクティブにしました。
バッチファイル(Windowsプラットフォーム)からログに出力するときに、コンソールログの出力を色付けする方法がわかりません。
上のドキュメント
https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin
役に立たない。実際にカラーで印刷する方法の例はありません。
いくつかの異なるエコー/印刷コマンドを試しましたが、色が機能しません。
どんなヒントもありがたい。
ANSIカラープラグインは、コンソール出力をHTMLに変換します。出力にansiエスケープシーケンスが含まれている場合、これらの特殊なcharシーケンスが(色付きの)HTMLに変換されます。 「ANSIカラーマップ」を介してのみマッピングを設定できます。
例:
\ x1b [31mは、html色を赤に変換します
あなたのプログラムはエスケープシーケンスを使用していないようです。ただし、独自のソフトウェアまたはスクリプトを作成した場合は、これらのエスケープシーケンスを使用できます。
最初のBASHの例:
echo -e "\033[31mRed\033[0m"
2番目のBASHの例:
printf "\033[31mRed\033[0m"
必要な場合は、printfに改行シーケンスを追加する必要があります。
printf "\033[31mRed\033[0m\n"
エスケープシーケンスの詳細:
英語: http://en.wikipedia.org/wiki/ANSI_escape_code
Deutsch: http://de.wikipedia.org/wiki/Escape-Sequenz
Jenkins-ANSIcolorプラグインについては、ここにさらに多くのドキュメントがあります: https://github.com/dblock/jenkins-ansicolor-plugin
「高輝度」の色(90年代の範囲)を使用しており、これらはサポートされていないため、色は表示されませんでした。 30年代の色にこだわる
BASHの場合:
echo -e '\033[35mPurple!\033[0m'
プロジェクト構成を確認し、「ビルド環境」を確認し、「カラーANSIコンソール出力」が確認されていることを確認します。
「ビルド環境」セクションが見つからない場合は、プラグインの管理に移動して、適切なプラグインが実際にインストールされていることを再確認してください。
(最近、「AnsiColor」ではなく「Ansible」プラグインをインストールしました。..)
これはJenkinsコンソールからのみ機能し、コンソールに出力される実際のスクリプトからは機能しません出力
OPはWindowsでのAnsiColor Jenkinsプラグインの使用について明示的に尋ねたので、ここに私の答えがあります。
cmd.exeはターミナルエミュレータではありません
@ocodoが書いたように、cmd.exe
(Jenkinsによってトリガーされる)はターミナルエミュレーターではないため、デフォルトではバッチコマンドからのANSI出力をサポートしません。したがって、これはWindowsではサポートされていません。
これらのテストは、Windowsバッチビルドステップを使用したJenkinsでは失敗しました。
echo \e[33m hello \e[0m
echo \033[33m hello \033[0m
echo \x1b[33m hello \x1b[0m
echo \27[33m hello \27[0m
echo \[33m hello \[0m
echo ←[33m hello ←[0m
最終行:FirefoxテストボックスフォームにESC文字を挿入するには、alt + 27を押します。これは、ほとんどのエディターのエスケープシーケンスでもあります。詳細はこちら: http://www.robvanderwoude.com/ansi.php#AnsiColor および https://groups.google.com/forum/#!topic/jenkinsci-users/0OcjlZQfqrk
解決策:Pythonテキストの色付けに印刷
コンソール出力にPythonを使用するビルドジョブはAnsiColorで問題がなかったため、コンソール出力がスクリプトによって生成される環境でPythonを使用できる場合、そこからANSIコードを挿入できます。これを回避して、カラフルにする方法を次に示します。
util/ansiGreen.py
にヘルパースクリプトを作成します:#!/usr/bin/env python
print("\033[32m");
set ansiGreen=python %cdRootPath%util\ansiGreen.py
call make-some-tests.bat
if %errorlevel% gtr 0 (
%ansiRed%
echo [ERROR] You screwed up trunk!
%ansiOff%
)
ご覧のとおり、着色で終わるには%ansiOff%
も必要です(単に"\033[0m"
がpythonで印刷されます)。それ以外の場合、%ansiRed%
の後はすべてredになります。
このスクリプトはJenkinsスレーブで実行されます。 Jenkinsのバッチビルドステップ内で直接環境を設定および取得することも、もう1つの課題です。
少しいですが、多くの調査の結果、AnsiColorをWindows JenkinsスレーブからWindows Jenkinsマスターに戻すことができる最善の回避策のようです。