Comment obtenir une liste de plugins Jenkins avec le nom et la version de la paire
Comment puis-je obtenir une liste de plugins Jenkins?
J'ai cherché sur le Jenkins Accès à Distance de l'API document, mais il n'a pas été trouvé. Dois-je utiliser Jenkins CLI? Est-il un document ou un exemple?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez récupérer les informations à l'aide de la Jenkins Script Console qui est accessible en visitant
http://<jenkins-url>/script
. (Étant donné que vous êtes connecté et que vous disposez des autorisations nécessaires).Entrez les informations suivantes Groovy script pour itérer sur les plugins installés et imprimer les informations pertinentes:
Il permet d'imprimer la liste des résultats comme ceci (découpée):
Cette solutions est similaire à l'une des réponses ci-dessus en ce qu'il utilise Groovy, mais nous sommes ici à l'aide du script de la console à la place. Le script de la console est extrêmement utile lors de l'utilisation de Jenkins.
Mise à jour
Si vous préférez une liste triée, vous pouvez appeler cette
sort
méthode:Ajuster la Fermeture à vos goûts.
Jenkins.instance.pluginManager.plugins.sort({it.getDisplayName()}).each{ plugin -> println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}") }
echo 'script=Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") } null' \ | no_proxy=localhost curl --netrc --silent --data-binary @- -X POST "http://localhost:8080/jenkins/scriptText" | sort > plugins.txt
jenkins.model.Jenkins.instance.getPluginManager().getPlugins().stream().sorted().each { println "${it.getShortName()} | ${it.getVersion()} | ${it.getDisplayName()}" }
Ces jours-je utiliser la même approche que la réponse décrite par @Behe ci-dessous au lieu https://stackoverflow.com/a/35292719/1597808
Vous pouvez utiliser l'API en combinaison avec de la profondeur, XPath, et l'enveloppe des arguments.
La suite de la requête à l'API de la pluginManager à la liste de tous les plugins installés, mais seulement pour le retour de leur shortName et attributs version. Vous pouvez bien sûr trouver d'autres champs en ajoutant '|' à la fin de la XPath paramètre et en précisant le motif pour identifier le nœud.
Le wrapper argument est requis dans ce cas, parce que c'est le retour de plus d'un nœud dans le cadre de la raison, à la fois en ce qu'elle est la mise en correspondance de plusieurs champs avec XPath et plusieurs plugin nœuds.
Il est probablement utile d'utiliser l'URL suivante dans un navigateur pour voir ce que les informations sur les plugins sont disponibles et de décider ensuite ce que vous souhaitez limiter à l'aide de XPath:
curl 'http://192.168.197.133:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins' | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g'
curl -s -k "http://jenkins/pluginManager/api/json?depth=1" | jq '.plugins[]|{shortName, version,longName}' -c
curl -sSL -k "http://jenkins/pluginManager/api/json?depth=1" | jq '.plugins[]|{shortName, version,longName}' -c | sort
(suit des redirections 301, triés)curl -s "http://<jenkins>/pluginManager/api/json?depth=1&tree=plugins\[shortName,version,longName\]"
echo 'script=Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}:${plugin.getVersion()}") }; null' | no_proxy=localhost curl --silent --data-binary @- -X POST \ "http://<user>:<password>@localhost:8080/jenkins/scriptText" \ | sort | grep -v -e " (private.*-root)$" > plugins.txt
Jenkins 1.588 (2ème de novembre, 2014) & 1.647 (4ème de février, 2016)
Jenkins > Gérer Jenkins
Système D'Information
Plugins
Utiliser Jenkins CLI comme ceci:
=
dans l'appel signifie 'lire l'entrée standard'. pluginEnumerator.groovy contient les éléments suivants Groovy code:Si vous souhaitez jouer avec le code, voici Jenkins documentation de l'API Java.
isActive()
api que vous pouvez utiliser dans le script groovy dans cette réponse, pour obtenir l'état du plugin. Voir javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive().Le Jenkins CLI appuie l'inscription de tous les plugins installés:
java -jar jenkins-cli.jar -s http://localhost:8080/list-plugins
list-plugins
CLI commande ne nécessite pas l'utilisateur d'avoir le Global/RunScripts autorisation commegroovy
commande.Les réponses données ici ont été quelque peu incomplète. Et j'ai dû compiler des informations provenant d'autres sources afin de réellement acquérir la liste des plugins.
1. Obtenir le Jenkins CLI
Le Jenkins CLI va nous permettre de communiquer avec nos Jenkins serveur à partir de la ligne de commande. On peut l'obtenir avec une simple curl appel.
2. Créer un script Groovy pour l'analyse (grâce à malenkiy_scot)
Enregistrer le suivant comme
plugins.groovy
.3. Appelez le Jenkins API de plugin résultats
Appeler le serveur Jenkins (
localhost:8080
ici) avec votre login et mot de passe tout en référençant le script Groovy:La sortie de plugins.txt ressemble à ceci:
Behe réponse avec tri plugins ne fonctionne pas sur mon Jenkins machine. J'ai reçu le message d'erreur
java.lang.UnsupportedOperationException
en essayant de trier immuable collection c'est à direJenkins.instance.pluginManager.plugins
. Solution Simple pour le code:Utiliser le
http://<jenkins-url>/script
URL pour exécuter le code.displayName
alors que l'impression de l'shortName
, c'était très confus que certains plugins ne sont pas par ordre alphabétique la même pour les deux, et les résultats dans une liste qui ne semble pas triés. Changerit.displayName
àit.shortName
résout ce bien.Si vous travaillez dans un menu fixe et que vous souhaitez à la sortie de la liste des plugins dans un plugins.txt format afin de transmettre que de la install_scripts.sh l'utilisation de ce script dans le
http://{jenkins}/script
consoleDe l'Jenkins page d'accueil:
Ou
Si vous êtes un Jenkins administrateur, vous pouvez utiliser le Jenkins page informations système:
/systeminfo
ne fonctionne pas (erreur HTTP 404) sur Jenkins 1.594http://localhost:8080/systemInfo
--certains serveurs sont sensibles à la casse. Notez également qu'elle exige de l'utilisateur actuellement connecté à l'Ensemble/d'administration de l'autorisation.Partage une autre option disponible ici avec les informations d'identification
curl -sSL "http://127.0.0.1:8080/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \n/g' | sort
Avec
curl
etjq
:Cette commande donne de sortie dans un format utilisé par des Jenkins
plugins.txt
de fichier qui vous permet de pré-installer des dépendances (par exemple dans un menu fixe de l'image):Exemple de
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtJe pense qu'elles ne sont pas assez bonnes réponse(s)... de nombreux impliquent un couple d'extra sous le capot étapes. Voici comment je l'ai fait.
...parce que la sortie JSON doit être consommée après l'appel de l'API.
Une autre option pour Python:
Je voulais une solution qui pourrait fonctionner sur le master, sans auth exigences et de ne pas le voir ici. J'ai fait une rapide script bash qui va tirer toutes les versions des plugins dir.
Il y a un tableau listant tous les plugins installés et si oui ou non ils sont activés au http://jenkins/systemInfo
Si Jenkins exécuter dans le Jenkins Docker conteneur, vous pouvez utiliser cette ligne de commande dans Bash:
Jenkins pour la version 2.125 la suite travaillé.
REMARQUE: le remplacement de sections que dire de nom d'utilisateur et APIKEY avec un nom d'utilisateur valide et APIKey pour que l'utilisateur correspondant.
La clé API pour un utilisateur est disponible via
Gérer les Utilisateurs → Sélectionner l'Utilisateur → Clé API option.
Vous pourriez avoir à étendre le sommeil si votre Jenkins installation prend plus de temps pour démarrer.
L'initiation
yum update -y
permettra de mettre à jour la version ainsi si vous avez installé Jenkins à l'aide de yum ainsi.Il y a beaucoup de moyen de récupérer cette information, mais je suis en train d'écrire des deux manières ci-dessous : -
1. Obtenir le jenkins cli.
Le jenkins CLI va nous permettre de communiquer avec nos jenkins serveur à partir de la ligne de commande. On peut l'obtenir avec une simple curl appel.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Créer un script groovy. OU de jenkins script console
Nous avons besoin de créer un script groovy à analyser les informations que nous recevons de l'jenkins API. Ce sera la sortie de chaque plugin avec sa version. Enregistrez les en tant que plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
Vous pouvez aussi être intéressé quelles mises à jour sont disponibles pour les plugins. Pour cela, vous devez fusionner les données sur les plugins installés avec des informations sur les mises à jour disponibles ici https://updates.jenkins.io/current/update-center.json .
Pour analyser le fichier téléchargé au format JSON, vous devez le lire en ligne, la deuxième ligne (qui est énorme).