Comment afficher la liste de tous les " env " des propriétés au sein de jenkins pipeline de travail?
Donné un jenkins 2.1 build pipeline, jenkins injecte une env
variable dans le node{}
. Par exemple, BRANCH_NAME
peut être consulté avec
node {
echo ${env.BRANCH_NAME}
...
Je veux echo tous env
propriétés dans le jenkins pipeline.
Je suis à la recherche d'un code comme
node {
for(e in env){
echo e + " is " + ${e}
}
...
qui fera écho à quelque chose comme
BRANCH_NAME is myBranch2
CHANGE_ID is 44
...
- env est une carte. Avez-vous essayé normal itération? comme -- env.chaque{ println il }
- Ressemble à une copie de stackoverflow.com/questions/36836806/...
- essayez
env.each { name, value -> println "Name: $name -> Value $value" }
- Autant que je sache env juste encapsule les variables d'environnement. Je ne pense pas que vous pouvez faire une boucle à travers elle. Essayez "sh env' sur linux/ "chauve-souris set" sur windows.
- par mon commentaire ci-dessous,
env.each { name, value -> println "Name: $name -> Value $value" }
imprimeName: org.jenkinsci.plugins.workflow.cps.EnvActionImpl@45c2d1ee -> Value null
. - C'est à cause des bris de Pipeline Groovy fermetures. Si vous de droite old-style Java (qui est,
new ClassName() { ... }
), cela devrait fonctionner. Ou vous l'exécutez sur une méthode tagged@NonCPS
, puis fermetures de travail à l'intérieur aussi.
Vous devez vous connecter pour publier un commentaire.
L'autre, de manière plus concise:
cf. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
sh
avecbat
etenv
avecset
sous Windows.Selon Jenkins documentation pour déclarative pipeline:
Jenkins Pour script pipeline:
Ci-dessus trie également votre env vars pour des raisons de commodité.
printenv
est juste une commande shell qui imprime l'environnement, rien de spécifique à Jenkins. Sans arguments, c'est équivalent àenv
sans arguments. Je suis sûr quesh 'printenv | sort'
va travailler dans la DCL (ou script pipeline.sh 'printenv | sort'
n'en fait travailler pour un Jenkins déclarative pipeline; fwiwsh 'env | sort'
fonctionne pas testés sur Jenkins ver. 2.46.1). J'ai d'abord mentionnésh 'printenv'
parce qu'il a été référencé dans officiel de Jenkins de la documentation.Les ouvrages suivants:
Noter qu'il sera très probablement échouer sur la première exécution et vous demander d'approuver les différents groovy méthodes pour exécuter dans jenkins bac à sable. Ceci est fait dans "manage jenkins/dans-processus d'approbation de script"
La liste j'ai inclus:
java.lang.UnsupportedOperationException: each on a CPS-transformed closure is not yet supported
@NonCPS
?Vous pouvez atteindre le résultat à l'aide de
sh
/bat
étape etreadFile
:Malheureusement
env.getEnvironment()
retourne très limitée de la carte de variables d'environnement.sh 'env > env.txt'
fonctionne bien, et il comprend des variables d'environnement créé par le processus du shell.env.getEnvironment()
ne montre que le Jenkins définir des variables d'environnement qui sont un sous-ensemble de celle observée dans lesh 'env'
technique. Aussi, il a besoin de script de sécurité de l'approbationmethod org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction getEnvironment
. Leenv.each { name, value -> println "Name: $name -> Value $value" }
recommandé par @Renato @Jayan imprime seulement lesName: org.jenkinsci.plugins.workflow.cps.EnvActionImpl@45c2d1ee -> Value null
.Pourquoi toute cette complicatedness?
fait ce dont vous avez besoin (sous *nix)
Voici un petit script, vous pouvez ajouter un pipeline de travail à la liste de toutes les variables d'environnement:
Cette liste à la fois système et Jenkins variables.
J'utilise le Bleu de l'Océan plugin de ne pas aimer chaque entrée environnement de l'obtention de son bloc. Je veux un bloc avec toutes les lignes.
Imprime mal:
Imprime mal:
Imprime bien:
Imprime bien: (comme mentionné par @mjfroehlich)
Les réponses ci-dessus, sont maintenant désuètes en raison d'un nouveau pipeline de la syntaxe. Ci-dessous affiche les variables d'environnement.
for
avec une fermeture peut aussi causer des problèmes sans@NonCPS
annotation.De la croix-plate-forme de sorte de liste de toutes les variables d'environnement:
si vous voulez vraiment faire une boucle sur le
env
liste viens de faire:une autre façon d'obtenir exactement la sortie mentionné dans la question:
Cela peut facilement être étendue pour construire une carte avec un sous-ensemble de l'env vars correspondant à un critère:
Je suppose que vous avez besoin sous la forme d'un script, mais si quelqu'un veux juste jeter un oeil sur le Jenkins GUI, cette liste peut être trouvée en cliquant sur "Variables d'Environnement" section contextuel menu de gauche de chaque version
Sélectionnez projet => Sélectionnez " build => Variables d'Environnement