Comment pouvez-vous définir l'encodage par défaut dans Jenkins?
J'ai un script python qui affiche des caractères non-ascii.
Il fonctionne très bien à partir de la ligne de commande (qui a LANG fr_fr.UTF-8), mais une fois que j'essaie de le lancer dans Jenkins (lancé à partir de la même coquille), il échoue dans la manière typique d'un terminal ascii:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe5' in position 37: ordinal not in range(128)
J'ai essayé en les précédant l'appel du script dans la "Exécuter shell" étape de génération de la sorte:
export LANG=en_US.UTF-8
Cependant, il semble ignorer que. Mettre la suite dans mon script python:
print "Encoding = %s" % sys.getdefaultencoding()
Donne-moi, peu importe ce que je fais:
Encoding = ascii
Donc, il y a quelque chose qui va me permettre de force Jenkins pour utiliser l'UTF-8?
Je serais intéressé par un plus de réponse générale à cette question. Je pense que le Python hack ci-dessous ne fonctionne pas pour Python 3.x...
Si vous utilisez Jenkins pipelin utilisation
Si vous utilisez Jenkins pipelin utilisation
pipeline { agent {label 'nodename'} environment { LC_ALL = 'en_US.UTF-8' LANG = 'en_US.UTF-8' LANGUAGE = 'en_US.UTF-8' ... }
OriginalL'auteur Karl | 2011-05-20
Vous devez vous connecter pour publier un commentaire.
Jamais l'esprit, d'avoir trouvé comment faire:
exportation PYTHONIOENCODING=UTF-8
Vous ajoutez cette ligne dans la "exécuter shell" construire étape avant d'appeler le script python. Python n'a pas l'air à la variable d'environnement LANG, mais il regarde à la PYTHONIOENCODING variable.
Vous n'avez pas à le faire pour chaque script. Au lieu de définir PYTHONIOENCODING de l'UTF-8 dans Jenkins > Gérer Jenkins > Configurer le Système > variables d'Environnement > Ajouter. Il n'est pas nécessaire de redémarrer Jenkins pour qu'il prenne effet.
OriginalL'auteur Karl
Si vous souhaitez définir l'encodage au niveau du système dans votre Jenkins installation, vous pouvez l'ajouter en tant que propriétés globales des paires clé-valeur (Jenkins -> Gérer Jenkins -> Configurer le Système) avec
name=LANG
etvalue=<insert your locale here>
(qui dans mon cas est égal àen_GB.UTF-8
). De cette façon, vous évitez de définir les paramètres régionaux pour chaque Jenkins travail.PYTHONIOENCODING
:UTF-8
comme une variable d'environnement n'a finalement de travail.Merci TemporalWolf, qui a résolu le problème pour moi. J'ai été complètement bloqué pendant un certain temps.
OriginalL'auteur Sigbjørn
Ma solution a été: la mise à niveau vers la dernière version de Jenkins. Il semble que la dernière version respecte les paramètres régionaux du système. Voir, par exemple, ce patch peut-être?
Dans tous les cas, la valeur par défaut livré avec Ubuntu 13.10 était hors de date. Tirant vers le bas de la dernière version de leurs officiels de debian repo fixe pour moi!
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+sur+Ubuntu
OriginalL'auteur hwjp
export PYTHONIOENCODING=UTF-8
ne fonctionne pas pour moi. Cependant,
export LC_CTYPE=en_US.UTF-8
fait.
OriginalL'auteur Greg Sheremeta
Si vous utilisez le Jenkins Pipeline, vous devez définir l'encodage dans le pipeline:
OriginalL'auteur LC 웃