Comment puis-je obtenir une liste des plugins Jenkins installés?
J'ai recherché le document de l'API Jenkins Remote Access, mais il n'a pas été trouvé. Dois-je utiliser la CLI de Jenkins? Y a-t-il un document ou un exemple?
la source
Comment puis-je obtenir une liste des plugins Jenkins installés?
J'ai recherché le document de l'API Jenkins Remote Access, mais il n'a pas été trouvé. Dois-je utiliser la CLI de Jenkins? Y a-t-il un document ou un exemple?
Vous pouvez récupérer les informations à l'aide de la console de script Jenkins accessible en visitant http://<jenkins-url>/script
. (Étant donné que vous êtes connecté et que vous disposez des autorisations requises).
Entrez le script Groovy suivant pour parcourir 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 (découpé):
Cette solution est similaire à l' une des réponses ci-dessus en ce qu'elle utilise Groovy, mais ici, nous utilisons la console de script à la place. La console de script est extrêmement utile lors de l'utilisation de Jenkins.
Mettre à jour
Si vous préférez une liste triée, vous pouvez appeler cette 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 guise (par exemple, ici, elle est triée par le shortName, dans l'exemple, elle est triée par DisplayName)
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-ci, j'utilise la même approche que la réponse décrite par @Behe ci-dessous à la place https://stackoverflow.com/a/35292719/1597808
Vous pouvez utiliser l'API en combinaison avec des arguments de profondeur, XPath et wrapper.
Ce qui suit interrogera l'API de pluginManager pour répertorier tous les plugins installés, mais uniquement pour renvoyer 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 modèle pour identifier le nœud.
L'argument wrapper est requis dans ce cas, car il renvoie plus d'un nœud dans le cadre du résultat, à la fois en ce qu'il fait correspondre plusieurs champs avec XPath et plusieurs nœuds de plug-in.
Il est probablement utile d'utiliser l'URL suivante dans un navigateur pour voir quelles informations sur les plugins sont disponibles, puis décider de ce que vous souhaitez limiter en utilisant XPath:
la source
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
Jenkins 1,588 (2 e de Novembre 2014) et 1.647 (4 e de Février 2016)
Jenkins> Gérer Jenkins
Informations système
Plugins
la source
La CLI Jenkins prend en charge la liste de tous les plugins installés:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
la source
list-plugins
commande CLI n'exige pas que l'utilisateur ait l' autorisation Overall / RunScripts comme le fait lagroovy
commande.Utilisez Jenkins CLI comme ceci:
=
dans l'appel signifie «lire à partir de l'entrée standard» . pluginEnumerator.groovy contient le code Groovy suivant:Si vous souhaitez jouer avec le code, voici la documentation de l'API Java Jenkins .
la source
isActive()
api que vous pouvez utiliser dans le script groovy de cette réponse pour obtenir l'état du plugin. Voir javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Si vous travaillez dans un environnement docker et que vous souhaitez afficher la liste des plugins au format plugins.txt afin de la transmettre à install_scripts.sh, utilisez ces scripts dans la
http://{jenkins}/script
console:la source
:latest
à la fin:println ("${plugin.getShortName()}:latest")
Les réponses ici étaient quelque peu incomplètes. Et j'ai dû compiler des informations provenant d'autres sources pour acquérir la liste des plugins.
1. Obtenez la CLI Jenkins
La CLI Jenkins nous permettra d'interagir avec notre serveur Jenkins à partir de la ligne de commande. Nous pouvons l'obtenir avec un simple appel curl.
2. Créez un script Groovy pour l'analyse (grâce à malenkiy_scot)
Enregistrez ce qui suit sous
plugins.groovy
.3. Appelez l'API Jenkins pour les résultats du plugin
Appelez le serveur Jenkins (
localhost:8080
ici) avec votre nom d'utilisateur et votre mot de passe de connexion tout en faisant référence au script Groovy:La sortie vers plugins.txt ressemble à ceci:
la source
La réponse de Behe avec les plugins de tri ne fonctionnait pas sur ma machine Jenkins. J'ai reçu l'erreur
java.lang.UnsupportedOperationException
en essayant de trier une collection immuable ieJenkins.instance.pluginManager.plugins
. Solution simple pour le code:Utilisez l'
http://<jenkins-url>/script
URL pour exécuter le code.la source
displayName
moment où vous imprimez leshortName
, c'était très déroutant car certains plugins ne sont pas les mêmes par ordre alphabétique pour les deux, et il en résulte une liste qui n'apparaît pas triée. Changerit.displayName
pourit.shortName
résout ce bien.Si vous êtes un administrateur Jenkins, vous pouvez utiliser la page d'informations système Jenkins:
la source
/systeminfo
ne fonctionne pas (HTTP 404) sur Jenkins 1,594http://localhost:8080/systemInfo
certains serveurs sont sensibles à la casse. Notez également que l'utilisateur actuellement connecté doit disposer de l'autorisation générale / d'administration.Avec
curl
etjq
:Cette commande donne la sortie dans un format utilisé par un
plugins.txt
fichier Jenkins spécial qui vous permet de pré-installer des dépendances (par exemple dans une image docker):Exemple de
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtla source
Depuis la page d'accueil de Jenkins:
Ou
la source
Partager une autre option trouvée ici avec les informations d'identification
la source
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
Je voulais une solution qui pourrait fonctionner sur master sans aucune exigence d'authentification et je ne l'ai pas vue ici. J'ai créé un script bash rapide qui extraira toutes les versions du répertoire des plugins.
la source
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Une autre option pour les utilisateurs de Python:
la source
Je pense que ce ne sont pas des réponses suffisantes ... beaucoup impliquent quelques étapes supplémentaires sous le capot. Voici comment je l'ai fait.
... car la sortie JSON doit être utilisée après l'appel de l'API.
la source
Vous pouvez également être intéressé par les mises à jour 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é en tant que JSON, vous devez lire en ligne la deuxième ligne (ce qui est énorme).
la source
la source
Il y a un tableau répertoriant tous les plugins installés et s'ils sont activés ou non sur http: // jenkins / systemInfo
la source
Si Jenkins s'exécute dans un conteneur Jenkins Docker, vous pouvez utiliser cette ligne de commande dans Bash:
la source
Pour la version 2.125 de Jenkins, ce qui suit a fonctionné.
REMARQUE: remplacez les sections qui indiquent USERNAME et APIKEY par un UserName et une APIKey valides pour cet utilisateur correspondant. La clé API pour un utilisateur est disponible via l' option Gérer les utilisateurs → Sélectionner un utilisateur → Clé API .
Vous devrez peut-être prolonger la mise en veille si votre installation Jenkins prend plus de temps à démarrer.
L'initiation
yum update -y
mettra également à niveau la version si vous avez également installé Jenkins en utilisant yum.la source
Il existe de nombreuses façons de récupérer ces informations, mais j'écris de deux manières comme ci-dessous: -
1. Obtenez le cli jenkins.
La CLI jenkins nous permettra d'interagir avec notre serveur jenkins à partir de la ligne de commande. Nous pouvons l'obtenir avec un simple appel curl.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Créez un script groovy. OU depuis la console de script jenkins
Nous devons créer un script groovy pour analyser les informations que nous recevons de l'API jenkins. Cela affichera chaque plugin avec sa version. Enregistrez ce qui suit sous plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
la source