Несовместимая кодировка символов в Jenkins не может быть разрешена

Я пытаюсь запустить тестовый пакет Cucumber (Ruby) из Jenkins, который проверяет, являются ли 2-4 байтовые символы UTF-8 правильными именами для групп.

Я перепробовал несколько решений и несколько дней искал проблему, имеющую отношение к моей.

Ошибка, которая преследует меня:

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

Которая относится к строке, где я пытаюсь отправить команду ssh в CLI на машине FreeBSD, на которой я создаю группу:

$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 перед выполнением скрипта.

Мне нужен какой-то ответ или направление, которое поможет мне решить эту проблему.

0
12.07.2017, 22:38
1 ответ

Проблема была решена путем обновления всех гемов Ruby в системе Jenkins. Вполне вероятно, что некоторые драгоценные камни были устаревшими, даже если они были технически совместимы с версией Ruby, на которой работала машина Дженкинса, и поэтому мог существовать код Ruby, который не был -UTF8.

Если вы столкнетесь с этой проблемой в будущем, я бы рекомендовал убедиться, что все версии gem и ruby ​​согласованы между вашим компьютером Jenkins и рабочим компьютером.

0
28.01.2020, 04:44

Теги

Похожие вопросы