我试图从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,既作为locale系统变量,也在/.bashrc文件中。没有,我在哪里看到一个编码变量设置为ASCI-8位。
我还尝试在脚本执行之前从Jenkins shell导出系统区域设置。
我需要一些答案,或一些能帮助我解决这个问题的方向。
发布于 2018-07-09 16:30:09
通过更新Jenkins系统上的所有Ruby宝石解决了这个问题。很可能某些宝石已经过时,尽管它们在技术上与正在运行的Jenkins机器Ruby版本兼容,因此,可能存在非UTF8 8的Ruby代码。
如果您将来遇到这个问题,我建议您确保所有的gem和ruby版本在Jenkins机器和工作机器之间是一致的。
https://unix.stackexchange.com/questions/377524
复制相似问题