1

現在、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 開発の間です。

前もって感謝します。

4

1 に答える 1