¿Cómo puedo obtener una lista de complementos instalados de Jenkins?
Busqué el documento de la API de acceso remoto de Jenkins, pero no lo encontré. ¿Debo usar la CLI de Jenkins? ¿Hay un documento o ejemplo?
fuente
¿Cómo puedo obtener una lista de complementos instalados de Jenkins?
Busqué el documento de la API de acceso remoto de Jenkins, pero no lo encontré. ¿Debo usar la CLI de Jenkins? ¿Hay un documento o ejemplo?
Puede recuperar la información utilizando la consola de script Jenkins, a la que puede acceder visitando http://<jenkins-url>/script
. (Dado que ha iniciado sesión y tiene los permisos necesarios).
Ingrese el siguiente script Groovy para iterar sobre los complementos instalados e imprima la información relevante:
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Imprimirá la lista de resultados de esta manera (recortada):
Esta solución es similar a una de las respuestas anteriores en que usa Groovy, pero aquí estamos usando la consola de script. La consola de script es extremadamente útil cuando se usa Jenkins.
Actualizar
Si prefiere una lista ordenada, puede llamar a este sort
método :
def pluginList = new ArrayList(Jenkins.instance.pluginManager.plugins)
pluginList.sort { it.getShortName() }.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}
Ajuste el cierre a su gusto (por ejemplo, aquí está ordenado por shortName, en el ejemplo está ordenado por 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()}" }
En estos días uso el mismo enfoque que la respuesta descrita por @Behe a continuación en lugar de https://stackoverflow.com/a/35292719/1597808
Puede usar la API en combinación con profundidad, XPath y argumentos de contenedor.
Lo siguiente consultará la API del pluginManager para enumerar todos los complementos instalados, pero solo para devolver sus atributos shortName y version. Por supuesto, puede recuperar campos adicionales agregando '|' hasta el final del parámetro XPath y especificando el patrón para identificar el nodo.
El argumento de envoltura es obligatorio en este caso, ya que está devolviendo más de un nodo como parte del resultado, ya que coincide con múltiples campos con XPath y múltiples nodos de complementos.
Probablemente sea útil usar la siguiente URL en un navegador para ver qué información en los complementos está disponible y luego decidir qué desea limitar usando XPath:
fuente
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 nd de noviembre de 2014) y 1.647 (4 º de febrero de 2016)
Jenkins> Administrar Jenkins
Información del sistema
Complementos
fuente
La CLI de Jenkins admite la lista de todos los complementos instalados:
java -jar jenkins-cli.jar -s http://localhost:8080/ list-plugins
fuente
list-plugins
comando CLI no requiere que el usuario tenga el permiso General / RunScripts como logroovy
hace el comando.Utilice Jenkins CLI como este:
=
en la llamada significa 'leer desde la entrada estándar' . pluginEnumerator.groovy contiene el siguiente código Groovy:Si desea jugar con el código, aquí está la documentación de Jenkins Java API .
fuente
isActive()
API que puede usar en el script maravilloso en esta respuesta para obtener el estado del complemento. Ver javadoc.jenkins-ci.org/hudson/PluginWrapper.html#isActive () .Si está trabajando en un entorno docker y desea generar la lista de complementos en un formato plugins.txt para pasar eso a install_scripts.sh, use estos scripts en la
http://{jenkins}/script
consola:fuente
:latest
al final:println ("${plugin.getShortName()}:latest")
Las respuestas aquí fueron algo incompletas. Y tuve que recopilar información de otras fuentes para adquirir realmente la lista de complementos.
1. Obtenga la CLI de Jenkins
La CLI de Jenkins nos permitirá interactuar con nuestro servidor Jenkins desde la línea de comandos. Podemos obtenerlo con una simple llamada curl.
2. Cree un script Groovy para analizar (gracias a malenkiy_scot)
Guarde lo siguiente como
plugins.groovy
.3. Llame a la API de Jenkins para obtener resultados de complementos
Llame al servidor Jenkins (
localhost:8080
aquí) con su nombre de usuario y contraseña de inicio de sesión mientras hace referencia al script Groovy:La salida a plugins.txt se ve así:
fuente
La respuesta de Behe con los complementos de clasificación no funcionó en mi máquina Jenkins. Recibí el error
java.lang.UnsupportedOperationException
debido a intentar ordenar una colección inmutable, es decirJenkins.instance.pluginManager.plugins
. Solución simple para el código:Use la
http://<jenkins-url>/script
URL para ejecutar el código.fuente
displayName
impresiónshortName
, esto fue muy confuso ya que algunos complementos no son alfabéticamente iguales para ambos, y da como resultado una lista que no aparece ordenada. Cambiarit.displayName
ait.shortName
resuelve esto muy bien.Si es administrador de Jenkins, puede usar la página de información del sistema Jenkins:
fuente
/systeminfo
no funciona (HTTP 404) en Jenkins 1.594http://localhost:8080/systemInfo
algunos servidores distinguen entre mayúsculas y minúsculas. Tenga en cuenta también que requiere que el usuario conectado actualmente tenga permiso General / Administrar.Con
curl
yjq
:Este comando proporciona la salida en un formato utilizado por un
plugins.txt
archivo especial de Jenkins que le permite preinstalar dependencias (por ejemplo, en una imagen acoplable):Ejemplo de
plugins.txt
: https://github.com/hoto/jenkinsfile-examples/blob/master/source/jenkins/usr/share/jenkins/plugins.txtfuente
Desde la página de inicio de Jenkins:
O
fuente
Compartir otra opción encontrada aquí con credenciales
fuente
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
Quería una solución que pudiera ejecutarse en master sin ningún requisito de autenticación y no la vi aquí. Hice un script de bash rápido que extraerá todas las versiones del directorio de complementos.
fuente
grep Plugin-Version */META-INF/MANIFEST.MF | sed -e 's!/META-INF/MANIFEST.MF:Plugin-Version: !:!g' > ../plugins2.txt
Otra opción para usuarios de Python:
fuente
Creo que estas no son respuestas suficientemente buenas ... muchas implican un par de pasos extra bajo el capó. Así es como lo hice.
... porque la salida JSON debe consumirse después de llamar a la API.
fuente
También puede interesarle qué actualizaciones están disponibles para los complementos. Para eso, debe fusionar los datos sobre complementos instalados con información sobre actualizaciones disponibles aquí https://updates.jenkins.io/current/update-center.json .
Para analizar el archivo descargado como un JSON, debe leer en línea la segunda línea (que es enorme).
fuente
fuente
Hay una tabla que enumera todos los complementos instalados y si están habilitados o no en http: // jenkins / systemInfo
fuente
Si Jenkins se ejecuta en un contenedor Jenkins Docker, puede usar esta línea de comando en Bash:
fuente
Para Jenkins versión 2.125, funcionó lo siguiente.
NOTA: Reemplace las secciones que dicen USERNAME y APIKEY con un nombre de usuario válido y APIKey para ese usuario correspondiente. La clave API para un usuario está disponible a través de la opción Administrar usuarios → Seleccionar usuario → Clave API .
Es posible que tenga que extender la suspensión si su instalación de Jenkins tarda más en comenzar.
La iniciación
yum update -y
también actualizará la versión si instaló Jenkins usando yum también.fuente
Hay muchas maneras de obtener esta información, pero escribo de dos maneras como a continuación:
1. Consigue el cli de jenkins.
La CLI de jenkins nos permitirá interactuar con nuestro servidor jenkins desde la línea de comandos. Podemos obtenerlo con una simple llamada curl.
curl 'localhost:8080/jnlpJars/jenkins-cli.jar' > jenkins-cli.jar
2. Crear un guión maravilloso. O desde la consola de script jenkins
Necesitamos crear un script maravilloso para analizar la información que recibimos de la API de jenkins. Esto generará cada complemento con su versión. Guarde lo siguiente como plugins.groovy.
def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins() plugins.each {println "${it.getShortName()}: ${it.getVersion()}"}
fuente