Jenkinsの互換性のない文字エンコーディングを解決できませんでした。

Jenkinsの互換性のない文字エンコーディングを解決できませんでした。

2-4バイトUTF-8文字がグループに有効な名前であることをテストするJenkinsのCucumber(Ruby)テストコレクションを実行しようとしています。

私はいくつかの解決策を試して、私に関連する問題を見つけるために数日間検索してきました。

私を悩ませ続けるエラーは次のとおりです。

incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)

これは、グループを作成したFreeBSDシステムのCLIにsshコマンドを送信しようとしている行を表します。

$mymachine.cli_ssh.exec!("config group create --name='#{group_name}'")

コマンドにexec!()ある場合:

command.force_encoding("UTF-8")

このエラーは、2〜4バイトのUTF-8文字を送信した場合にのみ発生します。たとえば、次のようになります。

グループ「abcd」確かにエラーが発生し、グループ「ЯЯЯ」が発生します。するエラーを引き起こす

質問:

このスクリプトを実行すると、私のローカルUbuntuコンピュータだけでなく、私の地域の他のコンピュータでも完全に動作します。 (それで、与えられたものよりも多くのコードを提供する必要はないと思います)

Jenkinsシステムでは、ロケールシステム変数と/ .bashrcファイルの両方でシステムロケールをen_US.UTF-8に設定してみました。どこかでASCII-8BITに設定されたエンコード変数を見たことがあります。

また、スクリプトが実行される前にJenkinsシェルからシステムロケールをエクスポートしようとしました。

この問題を解決するのに役立つ答えや方向が必要です。

ベストアンサー1

JenkinsシステムのすべてのRuby gemを更新することで問題を解決しました。一部のgemは、Jenkinsシステムが実行されているRubyのバージョンと技術的に互換性がありますが、使用されなくなる可能性が高いため、UTF8以外のRubyコードがある可能性があります。

後でこの問題が発生した場合は、Jenkinsシステムとワーカーシステム間のすべてのgemバージョンとRubyバージョンが一貫していることを確認することをお勧めします。

おすすめ記事