Jenkins non utilizza le impostazioni locali del sistema


10

Ho avuto un comportamento interessante in Jenkins.
La shell di Jenkins non usa le localizzazioni dei miei sistemi.

Jenkins funziona come utente jenkinssul mio sistema.

Accesso effettuato jenkinstramite SSH:

locale visualizzati:

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

envspettacoli LANGe LANGUAGEvariabili:

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

id mostra l'ID dell'utente:

uid = 1008 (jenkins) gid = ...

Immettere i comandi sopra in una shell di lavori jenkins:

locale visualizzati:

LANG =
LANGUAGE =
LC_CTYPE = "POSIX"
ecc ...

envnon senza mostrare LANGe LANGUAGEvariabili

id mostra l'ID dell'utente (come previsto):

uid = 1008 (jenkins) gid = ...

i file:

/etc/profile contiene:

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

/etc/default/locale contiene:

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

lo script di avvio /etc/init.d/jenkinsdovrebbe esportare le impostazioni locali del sistema:

# carica ambienti
se [-r / etc / default / locale]; allora
. / etc / default / locale
export LANG LANGUAGE
elif [-r / etc / environment]; allora
. / etc / environment
export LANG LANGUAGE
fi


Naturalmente ho riavviato dopo aver modificato le impostazioni locali;)

Apache utilizza anche le impostazioni locali del sistema Il
mio sistema è un'installazione Ubuntu 14.04.
Mi sono perso a controllare qualcos'altro?

Grazie per aver letto!
Spero che qualcuno possa aiutare :)


Jenkins sembra reimpostare tutte le variabili d'ambiente nelle shell di compilazione. Controlla le impostazioni del progetto. C'è anche un plugin env-inject .
jofel,

La tua soluzione dovrebbe essere una risposta, non una modifica alla tua domanda ...
Jasonwryan,

Risposte:


10

Soluzione:

Ciò accade perché il master Jenkins si collega alla macchina slave tramite non-interactiveshell, quindi /etc/profilenon viene eseguito e inoltre /etc/default/localenon ha alcun effetto.
non-interactivele conchiglie di solito usano ~/.bashrc.

Quasi tutti i dettagli su questo argomento sono disponibili su askubuntu:
/ubuntu/247738/why-is-etc-profile-not-invoked-for-non-login-shells

aggiungendo a ~/.bashrc:

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


fatto per me.

Questo "problema degli schiavi" è anche discusso qui:
https://groups.google.com/forum/#!topic/jenkinsci-users/hscDs4pKIoU https://groups.google.com/forum/#!topic/jenkinsci-users / g0fNnDltqeM Cordiali saluti, a parte

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.