无法在Jenkins

时间:2017-07-10 20:57:28

标签: jenkins character-encoding ruby-2.3

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

我尝试了很多解决方案,并且一直在寻找试图找到与我相关的问题的日子。

一直困扰着我的错误是:

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

这是指我尝试在我创建组的计算机上向CLI发送ssh命令的行:

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

exec!()命令中存在的位置:

command.force_encoding("UTF-8")

仅当我发送2-4个字节的UTF-8字符时才会出现错误,例如:

组'abcd'不会导致错误 和 群组'ЯЯЯ'导致错误

问题:

在我的本地Ubuntu机器上运行这个脚本完全正常(Ruby 2.2.1),以及我所在地区的其他机器。 (这就是为什么我认为没有必要提供比给定的代码更多的代码)。我知道编译到UTF-8有一个变化,跳转到Ruby 2.0,但两台机器都已经过去,所以我不认为这是问题所在。

我已经尝试在Jenkins机器上以en_US.UTF-8的形式建立系统区域设置作为区域设置系统变量并在/.bashrc文件中。我在哪里看到编码变量设置为ASCII-8BIT。

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

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

1 个答案:

答案 0 :(得分:0)

通过更新Jenkins系统上的所有Ruby宝石解决了这个问题。某些宝石可能已经过时了,即使它们在技术上与Jenkins机器运行的Ruby版本兼容,因此,可能存在非UTF8的Ruby代码。

如果您将来遇到此问题,我建议您确保所有gem和ruby版本在Jenkins机器和工作机器之间保持一致。