Comment installer un plugin dans Jenkins manuellement

119

L'installation d'un plugin à partir du centre de mise à jour entraîne:

Vérification de la connectivité Internet Échec de la connexion à http://www.google.com/ . Peut-être avez-vous besoin de configurer le proxy HTTP? Échec du déploiement du plug-in - Détails hudson.util.IOException2: échec du téléchargement à partir de http://updates.jenkins-ci.org/download/plugins/deploy/1.9/deploy.hpi

Est-il possible de télécharger le plugin et de l'installer manuellement dans Jenkins?

Kishore Tamire
la source

Réponses:

156

Oui, vous pouvez. Téléchargez le plugin (fichier * .hpi) et placez-le dans le répertoire suivant:

<jenkinsHome>/plugins/

Ensuite, vous devrez redémarrer Jenkins.

Michael Küller
la source
7
Cette méthode n'installe pas automatiquement les plugins qui sont des dépendances du plugin en cours d'installation. En tant que tel, je ne le recommande pas et je vote à la baisse pour cette raison. S'il vous plaît laissez-moi savoir si je me trompe et j'annulerai mon vote défavorable.
Farrukh Najmi
8
Si vous êtes obligé d'installer un plugin manuellement (pour une raison quelconque), je ne connais aucune autre méthode qui se chargera également d'installer automatiquement les dépendances.
Michael Küller
Comment puis-je savoir où se trouve la maison de Jenkins? En utilisant whereis jenkins?
Black
4
Je l'ai trouvé sous /var/lib/jenkinscependant, il existe déjà de nombreux plugins mais ils se terminent par .jpiau lieu de .hpi. Que devrais-je faire?
Black
3
Jenkins renomme le fichier du plugin pendant l'installation de .hpi en .jpi de cette façon, il est capable de détecter un nouveau plugin à installer sur un existant. Voir ici: stackoverflow.com/questions/30658375/…
Michael Küller
137
  1. Téléchargez le plugin.
  2. Dans Jenkins: Gérer JenkinsGérer les plugins → Il y a un onglet appelé Avancé et sur cette page, il y a une option pour télécharger un plugin (l'extension du fichier doit être hpi).

Parfois, lorsque vous téléchargez des plugins, vous pouvez obtenir des fichiers (.zip), puis renommer simplement avec (.hpi) et utiliser l'interface utilisateur pour installer le plugin.

jfcorugedo
la source
4
C'est probablement "plus sûr" que stackoverflow.com/a/14953877/627806 car il passe par le front-end.
Jon Burgess
Parfois, cela est nécessaire si Jenkins ne démarre pas en raison d'une mauvaise configuration du plugin. Par exemple, j'ai dû faire une installation manuelle à cause de ce problème .
dskrvk
1
J'ai essayé d'installer ce plugin, changé zip en hpi et essayé de télécharger à partir de l'option avancée dans la gestion des plugins, mais cela donne une erreurA 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.
Quel problème avez-vous trouvé? Pouvons-nous connaître l'exception réelle?
jfcorugedo
1
Notez qu'il y a une limite de taille imposée par nginx (voir: [ issues.jenkins-ci.org/browse/JENKINS-32575] ), donc vous devrez peut-être changer la configuration de nginx ou télécharger manuellement.
Moshe Zvi
22

Si vous utilisez Docker, vous devriez lire ce fichier: https://github.com/cloudbees/jenkins-ci.org-docker/blob/master/plugins.sh

Exemple de Dockerfile parent:

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

plugins.txt

<name>:<version>
<name2>:<version2>
SergioArcos
la source
J'essayais de résoudre ce problème pour docker et je suis tombé sur cette réponse. Fonctionne très bien!
muglio
cela dépend de la façon dont jenkins est installé. Dans mon installation (apt-get install jenkins), je n'ai pas pu localiser le fichier plugin.sh. Cependant, si nous partons de FROM jenkins, cela existe.
hadaytullah
notez que vous devez inclure le plugin et toutes ses dépendances dans plugins.txt car il ne résoudra pas les dépendances transitives. Par exemple, blueocean a plus de 10 dépendances que vous devrez également inclure manuellement ..
code4cause
Comment utiliser cette méthode lorsque j'exécute docker derrière un proxy? plugins.shne peut pas installer de plugins si le proxy n'est pas configuré dans Jenkins. Et je ne pense pas qu'il existe une méthode pour configurer le proxy dans Jenkins à l'aide de Dockerfile.
7_R3X
13

J'ai créé un script simple qui fait ce qui suit:

  • Téléchargez un ou plusieurs plugins dans le répertoire des plugins
  • Analyser tous les plugins de ce répertoire pour les dépendances manquantes
  • téléchargez également ces dépendances
  • boucle jusqu'à ce qu'il ne reste plus de dépendances ouvertes

Le script ne nécessite aucun jenkins en cours d'exécution - je l'utilise pour provisionner une boîte de menu fixe.

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

Michael Wyraz
la source
L'URL est maintenant cassée. Pouvez-vous s'il vous plaît republier votre script?
Charles Morin
11

Mise à jour pour Docker: utilisez le script install-plugins.sh . Il faut une liste de noms de plugins moins l'extension '-plugin'. Voir la description ici .

install-plugins.sh remplace le plugins.sh obsolète qui avertit désormais:

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

Pour utiliser un plugins.txt selon plugins.sh, consultez ce problème et cette solution de contournement:

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

satolézard
la source
10

Parfois, lorsque vous téléchargez des plugins, vous pouvez obtenir des fichiers (.zip), puis renommer simplement avec (.hpi), puis extraire tous les plugins et passer au <jenkinsHome>/plugins/répertoire.

Dnyaneshwar Kalme
la source
4

La réponse acceptée est exacte, mais assurez-vous d'installer également toutes les dépendances nécessaires. L'installation à l'aide de la CLI ou du Web semble prendre en charge cela, mais mes plugins n'apparaissaient pas dans le navigateur ou ne les utilisaient pas java -jar jenkins-cli.jar -s http://localhost:8080 list-pluginsjusqu'à ce que j'aie également installé les dépendances.

jdf
la source
1
J'ai créé un résumé simple pour répertorier toutes les dernières versions requises des dépendances de plug-ins sur le Web (analyse l'ensemble de l'arborescence de dépendances): gist.github.com/Lucasus/1a6b8df71425c790361c
Łukasz Wiatrak
2

Dans mon cas, j'avais besoin d'installer un plugin sur un serveur de build hors ligne qui exécute un serveur Windows (la version n'a pas d'importance ici). J'ai déjà installé Jenkins sur mon ordinateur portable pour tester les modifications à l'avance et il fonctionne sur localhost: 8080 en tant que service Windows.

Donc, si vous êtes prêt à prendre le temps de configurer Jenkins sur une machine avec une connexion Internet et de transférer ces modifications sur le serveur hors ligne Jenkins (cela fonctionne, confirmé par moi!), Voici les étapes que vous pouvez suivre:

  • Jenkins sur mon ordinateur portable: Ouvrez Jenkins, http: // localhost: 8080
  • Navigateur: Gérez Jenkins | Télécharger le plugin sans option d'installation
  • Explorateur Windows: copiez le fichier du plugin téléchargé qui se trouve dans le dossier "c: \ program files (x86) \ Jenkins \ plugins" (ie role-strategy.jpi)
  • Collez-le dans un dossier partagé sur le serveur hors ligne
  • Arrêtez le service Jenkins (serveur hors ligne Jenkins) via les services de composants, le service Jenkins
  • Copiez le fichier du plugin (ie role-strategy.jpi) dans le dossier "c: \ program files (x86) \ Jenkins \ plugins" sur le serveur (Offline Jenkins)
  • Redémarrez Jenkins et le tour est joué! Il devrait être installé.
yyardim
la source
2

Les réponses données fonctionnent, avec des plugins ajoutés.

Si vous souhaitez remplacer / mettre à jour un plugin intégré comme le plugin d'informations d'identification, qui a des dépendances, vous devez utiliser le frontend. Pour automatiser j'utilise:

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

C'est un moyen de copier des plugins d'une boîte Jenkins à une autre.

Copiez le répertoire des plugins:

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

Compressez les plugins:

tar cvfJ plugins.tar.xz plugins

Copiez-les dans l'autre boîte 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"

Redémarrez Jenkins.

Jmunsch
la source
0

Pour installer le plugin "git" avec toutes ses dépendances:

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

Ici, le plugin installé est git; la version, spécifiée comme @currentétant ignorée par Jenkins. Jenkins fonctionne sur le localhostport 8080, modifiez-le si nécessaire. Pour autant que je sache, c'est le moyen le plus simple d'installer un plugin avec toutes ses dépendances «à la main». Testé sur Jenkinsv1.644

m.kocikowski
la source