Jenkins verwendet keine Gebietsschemas des Systems


10

Ich habe ein interessantes Verhalten in Jenkins.
Jenkins 'Shell verwendet meine Systemgebietsschemas nicht.

Jenkins läuft als Benutzer jenkinsauf meinem System.

Eingeloggt wie jenkinsüber SSH:

locale angezeigt:

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

envShows LANGund LANGUAGEVariablen:

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

id zeigt die ID des Benutzers:

uid = 1008 (jenkins) gid = ...

Die obigen Befehle für eine Jenkins-Job-Shell wurden eingegeben:

locale angezeigt:

LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
etc ...

envwird nicht angezeigt LANGund LANGUAGEVariablen

id zeigt die ID des Benutzers (wie erwartet):

uid = 1008 (jenkins) gid = ...

die Dateien:

/etc/profile enthält:

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

/etc/default/locale enthält:

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

Startskript /etc/init.d/jenkinssollte Systems locales exportieren:

# Umgebungen laden,
wenn [-r / etc / default / locale]; dann
. / etc / default / locale
export LANG SPRACHE
elif [-r / etc / environment]; dann
. / etc / environment
export SPRACHE
fi


Natürlich habe ich nach dem Ändern der Gebietsschemas neu gestartet;)

Apache verwendet auch die Gebietsschemas des Systems.
Mein System ist eine Ubuntu 14.04-Installation.
Habe ich etwas anderes verpasst?

Danke fürs Lesen!
Ich hoffe jemand kann helfen :)


Jenkins scheint alle Umgebungsvariablen in Build-Shells zurückzusetzen. Überprüfen Sie die Projekteinstellungen. Es gibt auch ein env-inj-Plugin .
Jofel

Ihre Lösung sollte eine Antwort sein, keine Bearbeitung Ihrer Frage ...
Jasonwryan

Antworten:


10

Lösung:

Dies geschieht, weil der Jenkins-Master über eine non-interactiveShell eine Verbindung zum Slave-Computer herstellt , also /etc/profilenicht ausgeführt wird und auch /etc/default/localekeine Auswirkungen hat.
non-interactiveMuscheln werden normalerweise verwendet ~/.bashrc.

Fast alle Informationen zu diesem Thema finden Sie auf askubuntu finden:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

Hinzufügen zu ~/.bashrc:

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


habe es für mich getan.

Dieses "Sklavenproblem" wird auch hier behandelt:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Mit freundlichen Grüßen, wer

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.