Docker Jenkins slave 错误的字符编码

Docker Jenkins slave wrong character encoding

我正在使用 this Jenkins slave docker 图像,它基于 ubuntu:14.04

我想使用包含 UTF-8 字符的字符串参数。

öüóőúűáéí 等字符(匈牙利字符)将被替换为 question marks

由于 this 票证提到我试图将 -e LANG=hu_HU.UTF-8bash -c "locale-gen hu_HU.UTF-8" 传递给 docker。我还将 export LANG=hu_HU.UTF-8 放置到 Jenkins 用户的 .bashrc 字符仍然被替换。我也试过 en_US.UTF-8

我也尝试对 Jenkins Job 做同样的事情:

+ export LANG=hu_HU.UTF-8
+ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=hu_HU.UTF-8
LANGUAGE=
LC_CTYPE="hu_HU.UTF-8"
LC_NUMERIC="hu_HU.UTF-8"
LC_TIME="hu_HU.UTF-8"
LC_COLLATE="hu_HU.UTF-8"
LC_MONETARY="hu_HU.UTF-8"
LC_MESSAGES="hu_HU.UTF-8"
LC_PAPER="hu_HU.UTF-8"
LC_NAME="hu_HU.UTF-8"
LC_ADDRESS="hu_HU.UTF-8"
LC_TELEPHONE="hu_HU.UTF-8"
LC_MEASUREMENT="hu_HU.UTF-8"
LC_IDENTIFICATION="hu_HU.UTF-8"
LC_ALL=    

输出是一样的。

谢谢。

我找到了解决方案:

bash -c "locale-gen hu_HU && locale-gen hu_HU.UTF-8 && update-locale &&  echo 'export LANG=hu_HU.UTF-8' > /jenkins/.bashrc"

另一种(也许更干净)的解决方案是修改作业配置,以便将环境变量注入到构建作业中。

在构建环境部分中,在 'Properties Content' 字段中添加环境变量。

我认为这是一个更干净的解决方案,因为本地 jenkins 帐户没有受到污染,让 Jenkins 安装负责构建环境;当你有> 1个奴隶来维护本地帐户时更可取... 从 Jenkins ver1.613

开始,此解决方案是准确的