簡體   English   中英

如何在Jenkins中設置默認編碼?

[英]How do you set the default encoding in Jenkins?

我有一個輸出非ascii字符的python腳本。 它在命令行(有en en_US.UTF-8)下工作正常,但是一旦我嘗試在Jenkins中運行它(從同一個shell啟動),它就會以ascii終端的典型方式失敗:

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

我已嘗試在“執行shell”構建步驟中執行腳本調用,如下所示:

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 - > Configure System),其name=LANGvalue=<insert your locale here> (在我的情況下等於en_GB.UTF-8 )。 這樣您就可以避免為每個Jenkins作業設置區域設置。

我的解決方案是: 升級到最新版本的Jenkins。 似乎最新版本尊重系統區域設置。 例如,看看這個補丁可能嗎?

在任何情況下,Ubuntu 13.10附帶的默認值都已過期。 從他們的官方debian repo中刪除最新版本為我修復了它!

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

export PYTHONIOENCODING=UTF-8

不適合我。 然而,

export LC_CTYPE=en_US.UTF-8

沒有。

如果您使用的是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'
            }
         }
    }
}

另一種解決方案是使用Python 3

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM