Jenkinsはシステムのロケールを使用しません


10

ジェンキンスで面白い行動をした。
Jenkinsのシェルは私のシステムロケールを使用しません。

Jenkinsはjenkins私のシステムでユーザーとして実行されます。

jenkinsSSH経由でログイン:

locale 表示:

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

envショーLANGLANGUAGE変数:

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

id ユーザーのIDを示します。

uid = 1008(jenkins)gid = ...

上記のコマンドをjenkinsジョブシェルに入力します。

locale 表示:

LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
など...

envではない示し、LANGおよびLANGUAGE変数

id ユーザーのIDを表示します(予想どおり):

uid = 1008(jenkins)gid = ...

ファイル:

/etc/profile 含む:

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

/etc/default/locale 含む:

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

起動スクリプト/etc/init.d/jenkinsはシステムのロケールをエクスポートする必要があります:

#負荷環境
であれば[-rは、/ etc / default /ロケール]; その後
。/ etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; その後
。/ etc / environment
export LANG LANGUAGE
fi


もちろん、ロケールを変更した後で再起動しました;)

Apacheもシステムのロケールを使用します
私のシステムはUbuntu 14.04インストールです。
何か他のものをチェックするのを見逃しましたか?

読んでくれてありがとう!
誰かが助けてくれることを願っています:)


ジェンキンスはビルドシェルのすべての環境変数をリセットするようです。プロジェクトの設定を確認してください。env-injectプラグインもあります
jofel 2014年

あなたの解決策は、あなたの質問の編集ではなく答えであるべきです...
jasonwryan

回答:


10

解決:

これは、Jenkinsマスターがnon-interactiveシェルを介してスレーブマシンに接続しているために/etc/profile実行され/etc/default/localeず、影響もないために発生します。
non-interactiveシェルは通常を使用してい~/.bashrcます。

このトピックに関するほぼすべての詳細は、askubuntuで見つけることができます:
https ://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells

追加~/.bashrc

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


私のためにやった。

この「スレーブの問題」については、https
//groups.google.com/forum/#! topic / jenkinsci- users / hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-usersでも説明されています。 / g0fNnDltqeM よろしくお願いします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.