2-4바이트 UTF-8 문자가 그룹에 유효한 이름인지 테스트하는 Jenkins의 Cucumber(Ruby) 테스트 모음을 실행하려고 합니다.
나는 여러 가지 해결책을 시도했고 나와 관련된 문제를 찾으려고 며칠 동안 검색해 왔습니다.
나를 계속 괴롭히는 오류는 다음과 같습니다.
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 시스템에서 로케일 시스템 변수와 /.bashrc 파일 모두에서 시스템 로케일을 en_US.UTF-8로 설정해 보았습니다. 어딘가에서 ASCII-8BIT로 설정된 인코딩 변수를 본 적이 있습니다.
또한 스크립트가 실행되기 전에 Jenkins 셸에서 시스템 로캘을 내보내려고 했습니다.
이 문제를 해결하는 데 도움이 될 수 있는 답변이나 방향이 필요합니다.
답변1
Jenkins 시스템의 모든 Ruby gem을 업데이트하여 문제가 해결되었습니다. 일부 gem은 Jenkins 시스템이 실행 중인 Ruby 버전과 기술적으로 호환되지만 더 이상 사용되지 않을 가능성이 높으므로 UTF8이 아닌 Ruby 코드가 있을 수 있습니다.
나중에 이 문제가 발생하면 Jenkins 시스템과 작업자 시스템 간에 모든 gem 및 Ruby 버전이 일관되는지 확인하는 것이 좋습니다.