Cómo instalar un complemento en Jenkins manualmente

119

La instalación de un complemento desde el Centro de actualización da como resultado:

Comprobando la conectividad a Internet No se pudo conectar a http://www.google.com/ . ¿Quizás necesite configurar el proxy HTTP? Error de implementación del complemento - Detalles hudson.util.IOException2: Error al descargar desde http://updates.jenkins-ci.org/download/plugins/deploy/1.9/deploy.hpi

¿Es posible descargar el complemento e instalarlo manualmente en Jenkins?

Kishore Tamire
fuente

Respuestas:

156

Sí tu puedes. Descargue el complemento (archivo * .hpi) y colóquelo en el siguiente directorio:

<jenkinsHome>/plugins/

Luego, deberá reiniciar Jenkins.

Michael Küller
fuente
7
Este método no instala automáticamente ningún complemento que dependa del complemento que se está instalando. Como tal, no lo recomiendo y estoy votando en contra por este motivo. Por favor, avíseme si me equivoco y deshaceré mi voto en contra.
Farrukh Najmi
8
Si se ve obligado a instalar un complemento manualmente (por cualquier motivo), no conozco ningún otro método que se encargue de instalar automáticamente las dependencias también.
Michael Küller
¿Cómo puedo saber dónde está la casa de jenkins? whereis jenkins¿ Utilizando ?
Negro
4
/var/lib/jenkinsSin embargo, lo encontré debajo , ya hay muchos complementos pero terminan con en .jpilugar de .hpi. ¿Qué tengo que hacer?
Negro
3
Jenkins cambia el nombre del archivo del complemento durante la instalación de .hpi a .jpi de esa manera puede detectar un nuevo complemento para instalar sobre uno existente. Vea aquí: stackoverflow.com/questions/30658375/…
Michael Küller
137
  1. Descarga el complemento.
  2. Dentro de Jenkins: Administrar JenkinsAdministrar complementos → Hay una pestaña llamada Avanzado y en esa página hay una opción para cargar un complemento (la extensión del archivo debe ser hpi).

A veces, cuando descarga complementos, puede obtener archivos (.zip), luego simplemente cambie el nombre con (.hpi) y use la interfaz de usuario para instalar el complemento.

jfcorugedo
fuente
4
Esto es probablemente más "seguro" que stackoverflow.com/a/14953877/627806 ya que pasa por el front-end.
Jon Burgess
A veces, esto es necesario si Jenkins no se inicia debido a una configuración incorrecta del complemento. Por ejemplo, tuve que hacer una instalación manual debido a este problema .
dskrvk
1
Intenté instalar este complemento, cambié zip a hpi e intenté cargar desde la opción avanzada en administrar complementos, pero está dando un errorA problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.
¿Qué problema has encontrado? ¿Podemos conocer la excepción real?
jfcorugedo
1
Tenga en cuenta que hay un límite de tamaño impuesto por nginx (consulte: [ issues.jenkins-ci.org/browse/JENKINS-32575] ), por lo que es posible que deba cambiar la configuración de nginx o cargar manualmente.
Moshe Zvi
22

Si usa Docker, debe leer este archivo: https://github.com/cloudbees/jenkins-ci.org-docker/blob/master/plugins.sh

Ejemplo de un Dockerfile principal:

FROM jenkins
COPY plugins.txt /plugins.txt
RUN /usr/local/bin/plugins.sh /plugins.txt

plugins.txt

<name>:<version>
<name2>:<version2>
SergioArcos
fuente
Estaba tratando de resolver esto para Docker y me encontré con esta respuesta. ¡Funciona genial!
muglio
depende de la forma en que esté instalado jenkins. En mi instalación (apt-get install jenkins) no pude ubicar el archivo plugin.sh. Sin embargo, si partimos de FROM jenkins, entonces existe.
hadaytullah
tenga en cuenta que debe incluir el complemento y todas sus dependencias en plugins.txt ya que no resolverá las dependencias transitivas. Por ejemplo, blueocean tiene más de 10 dependencias que también tendrías que incluir manualmente ..
code4cause
¿Cómo utilizo este método cuando estoy ejecutando Docker detrás de un proxy? plugins.shno se pueden instalar complementos si el proxy no está configurado en Jenkins. Y no creo que haya un método para configurar el proxy en Jenkins usando Dockerfile.
7_R3X
13

He creado un script simple que hace lo siguiente:

  • Descargue uno o más complementos al directorio de complementos
  • Escanee todos los complementos en ese directorio en busca de dependencias faltantes
  • descargue estas dependencias también
  • bucle hasta que no queden dependencias abiertas

El script no requiere jenkins en ejecución; lo uso para aprovisionar una ventana acoplable.

https://gist.github.com/micw/e80d739c6099078ce0f3

Michael Wyraz
fuente
La URL está rota ahora. ¿Puedes volver a publicar tu script?
Charles Morin
11

Actualización para Docker: use el script install-plugins.sh . Toma una lista de nombres de complementos menos la extensión '-plugin'. Vea la descripción aquí .

install-plugins.sh reemplaza el obsoleto plugins.sh que ahora advierte:

WARN: plugins.sh is deprecated, please switch to install-plugins.sh

Para utilizar un plugins.txt según plugins.sh, consulte este problema y esta solución alternativa:

RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/plugins.txt | tr '\n' ' ')

satolizard
fuente
10

A veces, cuando descarga complementos, puede obtener archivos (.zip), luego simplemente cambie el nombre con (.hpi) y luego extraiga todos los complementos y muévase al <jenkinsHome>/plugins/directorio.

Dnyaneshwar Kalme
fuente
4

La respuesta aceptada es precisa, pero asegúrese de instalar también todas las dependencias necesarias. La instalación mediante la CLI o la web parece solucionar esto, pero mis complementos no aparecían en el navegador ni se usaban java -jar jenkins-cli.jar -s http://localhost:8080 list-pluginshasta que también instalé las dependencias.

jdf
fuente
1
He creado una esencia simple para enumerar todas las últimas versiones requeridas de las dependencias de complementos de la web (escanea todo el árbol de dependencias): gist.github.com/Lucasus/1a6b8df71425c790361c
Łukasz Wiatrak
2

En mi caso, necesitaba instalar un complemento en un servidor de compilación sin conexión que ejecuta un servidor Windows (la versión no importará aquí). Ya instalé Jenkins en mi computadora portátil para probar los cambios por adelantado y se está ejecutando en localhost: 8080 como un servicio de Windows.

Entonces, si está dispuesto a tomarse el tiempo para configurar Jenkins en una máquina con conexión a Internet y llevar estos cambios al servidor sin conexión Jenkins (¡funciona, confirmado por mí!), Estos son los pasos que puede seguir:

  • Jenkins en mi computadora portátil: Abra Jenkins, http: // localhost: 8080
  • Navegador: administrar Jenkins | Descargar complemento sin opción de instalación
  • Explorador de Windows: copie el archivo del complemento descargado que se encuentra en la carpeta "c: \ archivos de programa (x86) \ Jenkins \ plugins" (es decir, role-strategy.jpi)
  • Péguelo en una carpeta compartida en el servidor sin conexión
  • Detenga el servicio Jenkins (servidor sin conexión Jenkins) a través de Servicios de componentes, Servicio Jenkins
  • Copie el archivo del complemento (es decir, role-strategy.jpi) en la carpeta "c: \ archivos de programa (x86) \ Jenkins \ plugins" en el servidor (Jenkins sin conexión)
  • Reinicie Jenkins y ¡listo! Debería estar instalado.
yyardim
fuente
2

Las respuestas dadas funcionan, con complementos agregados.

Si desea reemplazar / actualizar un complemento incorporado como el complemento de credenciales, que tiene dependencias, entonces debe usar la interfaz. Para automatizar utilizo:

 curl -i -F [email protected] http://jenkinshost/jenkins/pluginManager/uploadPlugin
bbaassssiiee
fuente
1

Esta es una forma de copiar complementos de una caja de Jenkins a otra.

Copie el directorio de complementos:

scp -r jenkins-box.url.com:/var/lib/jenkins/plugins .

Comprime los complementos:

tar cvfJ plugins.tar.xz plugins

Cópielos en la otra caja de Jenkins:

scp plugins.tar.xz different-jenkins-box.url.com
ssh different-jenkins-box.url.com "tar xvfJ plugins.tar.xz -C /var/lib/jenkins"

Reinicie Jenkins.

jmunsch
fuente
0

Para instalar el complemento "git" con todas sus dependencias:

curl -XPOST http://localhost:8080/pluginManager/installNecessaryPlugins -d '<install plugin="git@current" />'

Aquí, el complemento instalado es git; @currentJenkins ignora la versión, especificada como . Jenkins se está ejecutando en el localhostpuerto 8080, cámbielo según sea necesario. Hasta donde yo sé, esta es la forma más sencilla de instalar un complemento con todas sus dependencias 'a mano'. Probado en Jenkinsv1.644

m.kocikowski
fuente