218 votes

Comment obtenir une liste des plugins Jenkins installés avec leur nom et leur version ?

Comment puis-je obtenir une liste des plugins Jenkins installés ?

J'ai cherché le document sur l'API d'accès à distance de Jenkins, mais il n'a pas été trouvé. Dois-je utiliser le CLI de Jenkins ? Existe-t-il un document ou un exemple ?

254voto

Behe Points 1435

Vous pouvez récupérer les informations à l'aide de la fonction Jenkins script Console qui est accessible en visitant http://<jenkins-url>/script . (Étant donné que vous êtes connecté et que vous disposez des autorisations requises).

Screenshot of the Script Console

Saisissez les éléments suivants Groovy script pour itérer sur les plugins installés et imprimer les informations pertinentes :

Jenkins.instance.pluginManager.plugins.each{
  plugin -> 
    println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}

Il imprimera la liste des résultats comme ceci (coupée) :

SScreenshot of script output

Cette solution est similaire à une des réponses ci-dessus dans la mesure où il utilise Groovy, mais ici nous utilisons la console script à la place. La console script est extrêmement utile lorsqu'on utilise Jenkins.

Mise à jour

Si vous préférez une liste triée, vous pouvez appeler ceci sort méthode :

def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
  plugin -> 
    println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}

Ajustez la fermeture à votre convenance (par exemple, ici elle est triée par le nom court, dans l'exemple elle est triée par le nom d'affichage).

108voto

dbailey Points 183

Ces jours-ci, j'utilise plutôt la même approche que la réponse décrite par @Behe ci-dessous, lien mis à jour : https://stackoverflow.com/a/35292719/3423146 (ancien lien : https://stackoverflow.com/a/35292719/1597808 )


Vous pouvez utiliser l'API en combinaison avec des arguments de profondeur, XPath et wrapper.

L'instruction suivante interroge l'API du pluginManager pour dresser la liste de tous les plugins installés, mais ne renvoie que leurs attributs shortName et version. Vous pouvez bien sûr récupérer des champs supplémentaires en ajoutant '|' à la fin du paramètre XPath et en spécifiant le motif pour identifier le nœud.

wget http://<jenkins>/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins

L'argument wrapper est nécessaire dans ce cas, car il renvoie plus d'un nœud dans le résultat, à la fois parce qu'il fait correspondre plusieurs champs avec le XPath et plusieurs nœuds de plugin.

Il est probablement utile d'utiliser l'URL suivante dans un navigateur pour voir quelles informations sur les plugins sont disponibles et ensuite décider ce que vous voulez limiter en utilisant XPath :

http://<jenkins>/pluginManager/api/xml?depth=1

39voto

curiosu Points 703

Jenkins 1.588 (2 et de novembre 2014) & 1.647 (4 th de février 2016)

  • Jenkins > Gérer Jenkins

    enter image description here

  • Informations sur le système

    enter image description here

  • Plugins

    enter image description here

27voto

wmli Points 81

Le CLI de Jenkins prend en charge la liste de tous les plugins installés :

java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins

0 votes

Cela n'indique pas l'état du plugin.

2 votes

Et le list-plugins La commande CLI n'exige pas que l'utilisateur dispose de l'option Autorisation globale/scripts d'exécution comme groovy fait.

0 votes

Cela ne semble pas fonctionner avec un jeton d'API si l'utilisateur/le jeton n'est pas "Overall/Administrator".

27voto

Si vous travaillez dans un environnement docker et que vous voulez sortir la liste des plugins dans un format plugins.txt afin de le passer à l'install_scripts.sh, utilisez ces scripts dans le fichier http://{jenkins}/script console :

  1. Cette version est utile pour obtenir une version spécifique du paquet

    Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") }

  2. Si vous ne voulez que le plugin avec la dernière version, vous pouvez utiliser ceci (merci @KymikoLoco pour l'astuce)

    Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:latest") }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X