Jenkins는 시스템 로케일을 사용하지 않습니다


10

Jenkins에서 재미있는 행동을했습니다.
Jenkins의 셸은 내 시스템 로캘을 사용하지 않습니다.

Jenkins는 jenkins내 시스템에서 사용자로 실행됩니다 .

jenkinsSSH 를 통해 로그인 :

locale 표시 :

LANG = en_US.UTF-8
LANGUAGE = en_US : en
LC_CTYPE = "en_US.UTF-8"
등 ...

envLANGLANGUAGE변수 :

LANG = en_US.UTF-8
LANGUAGE = en_US : en

id 사용자의 ID를 보여줍니다.

uid = 1008 (jenkins) gid = ...

jenkins 작업 쉘에 위의 명령을 입력했습니다.

locale 표시 :

LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
등 ...

env않습니다 하지 표시 LANGLANGUAGE변수

id 예상대로 사용자의 ID를 표시합니다.

uid = 1008 (jenkins) gid = ...

파일들 :

/etc/profile 포함한다 :

LANG = en_US.UTF-8
내보내기 LANGUAGE = en_US : en 내보내기

/etc/default/locale 포함한다 :

LANG = en_US.UTF-8
내보내기 LANGUAGE = en_US : en 내보내기

시작 스크립트 /etc/init.d/jenkins는 시스템 로케일을 내 보내야합니다.

#
[-r / etc / default / locale] 인 경우 환경로드 ; 그때
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; 그때
. / etc / environment
내보내기 LANG LANGUAGE
fi


물론 로케일을 수정 한 후 재부팅했습니다.)

Apache도 시스템의 로케일을 사용합니다.
내 시스템은 Ubuntu 14.04 설치입니다.
다른 것을 확인하기 위해 놓쳤습니까?

읽어 주셔서 감사합니다!
누군가가 도울 수 있기를 바랍니다 :)


Jenkins는 빌드 쉘에서 모든 환경 변수를 재설정하는 것으로 보입니다. 프로젝트 설정을 확인하십시오. 도있다 ENV-분사 플러그인 .
jofel

귀하의 솔루션은 대답이 아니라 질문에 대한 편집 ...이어야한다
jasonwryan

답변:


10

해결책:

Jenkins 마스터가 non-interactive셸을 통해 슬레이브 시스템에 연결되어 있기 때문에 /etc/profile실행 /etc/default/locale되지 않으며 영향을 미치지 않기 때문입니다.
non-interactive쉘은 보통을 사용 ~/.bashrc합니다.

이 주제에 대한 거의 모든 세부 사항은 askubuntu에서 찾을 수 있습니다 :
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells 다음에

추가 ~/.bashrc:

LANG = en_US.UTF-8
내보내기 LANGUAGE = en_US : en 내보내기


나를 위해 그것을했다.

이 '슬레이브 문제'도 여기에서 설명합니다 :
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM 친절한 관계, whosit

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.