web-dev-qa-db-ja.com

JenkinsでANSIcolorプラグインを使用するには?

Jenkins用のANSIカラープラグインをインストールしました。ジョブでは、デフォルトのプロファイル「xterm」でそのプラグインをアクティブにしました。

バッチファイル(Windowsプラットフォーム)からログに出力するときに、コンソールログの出力を色付けする方法がわかりません。

上のドキュメント

https://wiki.jenkins-ci.org/display/JENKINS/AnsiColor+Plugin

役に立たない。実際にカラーで印刷する方法の例はありません。

いくつかの異なるエコー/印刷コマンドを試しましたが、色が機能しません。

どんなヒントもありがたい。

38

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

12
Mirko Ebert

Jenkins-ANSIcolorプラグインについては、ここにさらに多くのドキュメントがあります: https://github.com/dblock/jenkins-ansicolor-plugin

「高輝度」の色(90年代の範囲)を使用しており、これらはサポートされていないため、色は表示されませんでした。 30年代の色にこだわる

8
hamx0r
  1. ソフトウェアが実際にANSIカラーを出力していることを再確認してください。たとえば、このエコーを実行するbashスクリプトは、インストールされたAnsiColorプラグインで色を生成しますが、プラグインなしでコンソール出力に混乱したエスケープシーケンスを生成します。

BASHの場合:

echo -e '\033[35mPurple!\033[0m'
  1. プロジェクト構成を確認し、「ビルド環境」を確認し、「カラーANSIコンソール出力」が確認されていることを確認します。

  2. 「ビルド環境」セクションが見つからない場合は、プラグインの管理に移動して、適切なプラグインが実際にインストールされていることを再確認してください。
    (最近、「AnsiColor」ではなく「Ansible」プラグインをインストールしました。..)

8
nathan

これはJenkinsコンソールからのみ機能し、コンソールに出力される実際のスクリプトからは機能しません出力

2
Cyberience

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");
  • グローバルビルド構成のレベルでenv varとして登録します。
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マスターに戻すことができる最善の回避策のようです。

0
domih