現在、Jenkins との組み合わせで UTF8 に問題があります。私たちのプロジェクトはPHPで構築されており、サーバーとしてUbuntuサーバーを使用しています。
ここで、エンコーディングが正しく機能しないという問題があります。さまざまな環境ですべてが機能していますが、ジェンキンサーバーのみが失敗します。
これをテストするために、ユニットテストでいくつかのテスト出力を作成しました。これを実行して、出力を読み取ります。これはスクリプトと応答です:
<?php
$str = 'téëst';
var_dump(
array(
mb_http_input(),
mb_http_output(),
mb_detect_order(),
utf8_decode($str),
utf8_decode(utf8_decode($str)),
utf8_encode($str),
utf8_encode(utf8_encode($str)),
$str,
mb_detect_encoding($str)
)
);
?>
これは私たちのライブ環境/ステージング環境と開発環境です:
array(9) {
[0] =>
bool(false)
[1] =>
string(4) "pass"
[2] =>
array(2) {
[0] =>
string(5) "ASCII"
[1] =>
string(5) "UTF-8"
}
[3] =>
string(5) "t��st"
[4] =>
string(5) "t??st"
[5] =>
string(11) "téëst"
[6] =>
string(19) "téëst"
[7] =>
string(7) "téëst"
[8] =>
string(5) "UTF-8"
}
ご覧のとおり、変換せずに通常の文字列で動作します。しかし、Jenkins 環境では、開発環境と同じコンピューター上で実行され、問題なく動作します。
これはその結果です:
[exec] array(9) {
[exec] [0] =>
[exec] bool(false)
[exec] [1] =>
[exec] string(4) "pass"
[exec] [2] =>
[exec] array(2) {
[exec] [0] =>
[exec] string(5) "ASCII"
[exec] [1] =>
[exec] string(5) "UTF-8"
[exec] }
[exec] [3] =>
[exec] string(5) "t??st"
[exec] [4] =>
[exec] string(5) "t??st"
[exec] [5] =>
[exec] string(11) "t????????st"
[exec] [6] =>
[exec] string(19) "t????????????????st"
[exec] [7] =>
[exec] string(7) "t????st"
[exec] [8] =>
[exec] string(5) "UTF-8"
[exec] }
上記のように、すべてのエンコーディング オプションが失敗し、通常の文字列も失敗します。
例として、私はすでにさまざまなことを試しました:
- pom.xml ファイルのエンコーディングを UTF-8 に変更します。
- JAVA_ARGS を次のように変更します: JAVA_ARGS="-Dfile.encoding=UTF-8"
- JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" を追加
- JENKINS_TOOL_OPTIONS="-Dfile.encoding=UTF8" を追加
- JENKINS_ARGS="-Dfile.encoding=UTF8 ...." を追加します。
どのオプションも機能しません。jenkinsユーザーとしてログインしてテストを実行し、それが彼の作業スペースであるかどうかを確認しましたが、そうではありませんでした。
誰かが私を良い方向に助けることができますか?これだけは、私たちと CI 開発の間です。
前もって感謝します。