A codificação de caracteres incompatível no Jenkins não pode resolver

0

Estou tentando executar um conjunto de testes de pepino (Ruby) do Jenkins que testa se os caracteres UTF-8 de 2 a 4 bytes são nomes válidos para grupos.

Eu tentei várias soluções e procurei por dias tentando encontrar um problema relevante para o meu.

O erro que tem me assombrado é:

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

Refere-se a uma linha na qual estou tentando enviar um comando ssh para a CLI na máquina do FreeBSD em que estou criando o grupo:

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

Onde existe o comando exec!() :

command.force_encoding("UTF-8")

O erro ocorre apenas quando estou enviando caracteres UTF-8 de 2 a 4 bytes, de forma que:

O grupo 'abcd' não causa o erro e Grupo 'ЯЯЯ' faz causar o erro

O problema:

A execução deste script na minha máquina Ubuntu local funciona perfeitamente bem, assim como outras máquinas na minha área. (é por isso que eu não acho que é necessário fornecer mais código do que é dado)

Eu já tentei estabelecer locales do sistema na máquina do Jenkins como en_US.UTF-8 como variáveis do sistema local e dentro do arquivo /.bashrc. Não onde eu vi uma variável de codificação definida como ASCII-8BIT.

Eu também tentei exportar as localidades do sistema do shell do Jenkins antes da execução do script.

Estou precisando de alguma resposta ou alguma orientação que possa me ajudar a resolver esse problema.

    
por Easton Bornemeier 10.07.2017 / 19:24

1 resposta

0

O problema foi resolvido atualizando todas as gemas do Ruby no sistema Jenkins. É provável que algumas gemas estivessem desatualizadas, mesmo que fossem tecnicamente compatíveis com a versão do Ruby que o Jenkins estava rodando e, portanto, poderia haver um código Ruby que não fosse o UTF8.

Se você encontrar esse problema no futuro, eu recomendaria garantir que todas as versões gem e ruby sejam consistentes entre sua máquina Jenkins e a máquina de trabalho.

    
por 09.07.2018 / 18:30