La définition de la couleur à partir de la chaîne Python fonctionne comme un charme. Voici un extrait de travail de mon script python:AnsiColor Plugin ne fonctionne pas lorsque la chaîne ansi est chargée avec getenv
line = "All Tests OK."
print('\033[31m \033[1m' + line + '\033[0m');
Il en résulte une couleur sortie Jenkins console comme ceci:
All Tests OK.
Extracting chaînes ANSI à partir du code:
Pour améliorer la lisibilité du code, j'aimerais déplacer les chaînes de couleurs et les séquences d'échappement dans un fichier de configuration global. J'ai donc mon fichier batch build.conf.bat qui a un tas de paramètres globaux pour l'environnement de construction et comprend 5 variables pour ANSIColor comme ceci:
set ansiBlue=\033[34m
set ansiRed=...
Dans le script Python, je peux accéder à toutes les variables d'environnement en utilisant
print(os.getenv('ansiBlue') + " " + line + os.getenv('ansiOff'))
Ceci renvoie une chaîne avec le code ANSI, tel que défini dans le fichier de configuration par lots. Jusqu'à ici, tout va bien mais quand Jenkins dirige la construction, la sortie de la console est comme ceci:
\033[34m All Tests OK. \033[0m
Ainsi, le travail des chaînes créées manuellement, mais les chaînes à partir de variables ne fonctionnent pas. Pourquoi ça? Donc, ma question est, que puis-je faire pour que ces variables fonctionnent dans la sortie de la console Jenkins?
-
PS: Je l'ai déjà enveloppé la chaîne concatonated dans une variable qui a ensuite été imprimé de chaîne de caractères (str (testOutput)), mais cela était encore sans succès ..
analyseur Python se traduit par un caractère d'échappement '\ 033', mais analyseur de lot ne fait pas que la traduction, de sorte que votre' os.getenv' lit une barre oblique inverse et trois chiffres. Peut-être que quelque chose comme (désolé, python n'est pas ma région) 'os.getenv ('ansiBlue'). Replace ('\\ 033', '\ 033')' pourrait résoudre votre problème. –
'replace' devrait fonctionner, ou en général pour le texte source Latin-1 vous pouvez utiliser' codecs.decode (chaîne_source, 'unicode_escape') '. – eryksun
Merci les gars, l'indice avec replace() a fonctionné bien que je n'ai jamais vu le double backslash dans la sortie. – domih