Jenkins 中的不兼容字符编码无法解决

Jenkins 中的不兼容字符编码无法解决

我正在尝试运行 Jenkins 的 Cucumber (Ruby) 测试套件,该套件测试 2-4 字节 UTF-8 字符是否是组的有效名称。

我已经尝试了多种解决方案,并且已经搜索了几天试图找到与我相关的问题。

一直困扰我的错误是:

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 机器上将系统区域设置建立为 en_US.UTF-8 ,既作为区域设置系统变量,又在 /.bashrc 文件中。我在哪里见过设置为 ASCII-8BIT 的编码变量。

我还尝试在脚本执行之前从 Jenkins shell 导出系统区域设置。

我需要一些答案,或者一些可以帮助我解决这个问题的方向。

答案1

通过更新 Jenkins 系统上的所有 Ruby gem 解决了该问题。尽管某些 gem 在技术上与 Jenkins 机器运行的 Ruby 版本兼容,但它们很可能已经过时,因此,可能存在非 UTF8 的 Ruby 代码。

如果您将来遇到这个问题,我建议确保您的 Jenkins 机器和工作机器之间的所有 gem 和 ruby​​ 版本都是一致的。

相关内容