Log Parser Pluginを使ってParseするときに、文字化けや色の制御文字が邪魔になるので、その対策をまとめています。
コンソール出力が文字化けする
- Javaのバージョンにもよりますが、JVM起動オプションを変更することで解決します。
- Jenkinsの「システムプロパティ」で以下のエンコードを確認してください。
file.encoding
sun.jnu.encoding
CentOSの場合
-
/etc/sysconfig/jenkins
を編集
# arguments to pass to java
JAVA_ARGS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
- 編集後、Jenkinsを再起動
$ sudo service jenkins restart
Ubuntuの場合
-
/etc/default/jenkins
を編集
# arguments to pass to java
JAVA_ARGS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
- 編集後、Jenkinsを再起動
$ sudo service jenkins restart
Mac(Homebrew)の場合
-
~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
を編集
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-Dfile.encoding=UTF-8</string>
<string>-Dsun.jnu.encoding=UTF-8</string>
<string>-jar</string>
<string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
</array>
- 編集後、Jenkinsを再起動
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
Mac(OSX Installer)の場合
-
/Library/LaunchDaemons/org.jenkins-ci.plist
のProgramArgumentsの起動方法を確認 - java指定起動であればHomebrewの場合と同様
- jenkins-runner.sh指定起動であれば
/Library/Application Support/Jenkins/jenkins-runner.sh
にjavaArgsを追加
javaArgs=""
javaArgs="$javaArgs -Dfile.encoding=UTF-8"
javaArgs="$javaArgs -Dsun.jnu.encoding=UTF-8"
heapSize=`$defaults heapSize` && javaArgs="$javaArgs -Xmx${heapSize}"
permGen=`$defaults permGen` && javaArgs="$javaArgs -XX:MaxPermSize=${permGen}"
- 編集後、Jenkins再起動
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
Windowsの場合
- システム環境変数をセットする。
JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
- 実行ジョブごとに「Windowsバッチコマンドの実行」先頭に以下を追加
chcp 65001
- 参考
- Windows を Jenkins の Slave にして Git管理してる Rspec のテストを実行するためのセットアップ手順
- コマンドプロンプト起動時、自動的に文字コードをUTF-8にして日本語もちゃんと表示できるようにする方法
スレーブ起動の場合(OS共通)
- 変更したいスレーブの「設定」を開く
- 「高度な設定」「起動方法」
- JVMオプション
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
を追加(スペース区切り) - 追加後Jenkins スレーブを再接続
コンソール出力でターミナルの色指定が制御文字で表示される
- AnsiColor Pluginを使うと解決します。
- プラグインインストール後、Jobごとの設定で「ビルド環境」で「Color ANSI Console Output」を有効にしてください。