如何在 Jenkins 中设置默认编码



我有一个输出非ASCII字符的python脚本。它从命令行(具有 LANG en_US)工作正常。UTF-8),但是一旦我尝试在 Jenkins 中运行它(从同一个 shell 启动),它就会以 ascii 终端的典型方式失败:

UnicodeEncodeError: 'ascii' codec can't encode character u'xe5' in position 37: ordinal not in range(128)

我尝试在"执行外壳"构建步骤中的脚本调用之前,如下所示:

export LANG=en_US.UTF-8

但是,它似乎忽略了这一点。在我的 python 脚本中输入以下内容:

print "Encoding = %s" % sys.getdefaultencoding()

给我这个,不管我做什么:

Encoding = ascii

那么有什么东西可以让我强迫 Jenkins 使用 UTF-8 吗?

关系,找到了怎么做:

export PYTHONIOENCODING=UTF-8
如果要

在 Jenkins 安装中在系统级别设置编码,可以将其添加为全局属性键值对(Jenkins -> Manage Jenkins -> Configuration System),其中包含 name=LANGvalue=<insert your locale here>(在我的例子中等于 en_GB.UTF-8 )。这样就可以避免为每个 Jenkins 作业设置区域设置。

如果您使用的是 Jenkins 管道,则需要将管道中的编码设置为:

pipeline {
    agent {label 'node name'}
    environment {
        LC_ALL = 'en_US.UTF-8'
        LANG    = 'en_US.UTF-8'
        LANGUAGE = 'en_US.UTF-8'
    }
    stages {
        stage ('XXXX') {
            steps {
                 echo 'Hello'
            }
         }
    }
}

export PYTHONIOENCODING=UTF-8

对我不起作用。然而

export LC_CTYPE=en_US.UTF-8

做到了。

我的解决方案是:升级到最新版本的 Jenkins。 似乎最新版本尊重系统区域设置。 看,例如,这个补丁也许?

无论如何,Ubuntu 13.10 附带的默认值已经过时了。从他们的官方 debian 存储库中提取最新版本为我修复了它!

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

另一种解决方案是使用 Python 3

brew update
brew install pyenv
pyenv install 3.7.3
pyenv local 3.7.3
make virtualenv

相关内容

  • 没有找到相关文章

最新更新