web-dev-qa-db-fra.com

Comment puis-je mettre à jour les plugins jenkins depuis le terminal?

J'essaie de créer un script bash pour configurer Jenkins. Existe-t-il un moyen de mettre à jour une liste de plugins depuis le terminal Jenkins?

Lors de la première configuration, aucun plugin n'est disponible dans la liste

c'est à dire.:

Java -jar jenkins-cli.jar -s `http://localhost:8080` install-plugin dry

ne fonctionnera pas

25
anilyeni

Un moyen simple mais efficace consiste à répertorier tous les plugins installés, à rechercher les mises à jour et à les installer.

Java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins

Chaque plugin qui a une mise à jour disponible, a la nouvelle version entre parenthèses à la fin. Ainsi, vous pouvez convoiter ceux-ci:

Java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }'

Si vous appelez install-plugin avec le nom du plug-in, il est automatiquement mis à niveau vers la dernière version.

Enfin, vous devez redémarrer Jenkins.

Tout mettre ensemble (peut être placé dans un script Shell):

UPDATE_LIST=$( Java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ list-plugins | grep -e ')$' | awk '{ print $1 }' ); 
if [ ! -z "${UPDATE_LIST}" ]; then 
    echo Updating Jenkins Plugins: ${UPDATE_LIST}; 
    Java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ install-plugin ${UPDATE_LIST};
    Java -jar /root/jenkins-cli.jar -s http://127.0.0.1:8080/ safe-restart;
fi
38
Michael Wyraz

Vous pouvez réellement installer des plugins à partir du terminal informatique (plutôt que du terminal Jenkins).

  1. Téléchargez le plugin depuis le site du plugin (http://updates.jenkins-ci.org/download/plugins)
  2. Copiez ce plugin dans le $JENKINS_HOME/plugins répertoire
  3. À ce stade, démarrez Jenkins ou appelez le service de paramètres de rechargement (http://yourservername:8080/jenkins/reload)

Cela activera le plugin dans Jenkins et en supposant que Jenkins est démarré.

cd $JENKINS_HOME/plugins
curl -O http://updates.jenkins-ci.org/download/plugins/cobertura.hpi
curl http://yourservername:8080/reload
31
Jon Boydell

Voici comment vous pouvez déployer les plugins Jenkins CI en utilisant Ansible, qui est bien sûr utilisé à partir du terminal. Ce code fait partie de roles/jenkins_ci/tasks/main.yaml:

- name: Plugins
  with_items:                             # PLUGIN NAME
  - name: checkstyle                      # Checkstyle
  - name: dashboard-view                  # Dashboard View
  - name: dependency-check-jenkins-plugin # OWASP Dependency Check
  - name: depgraph-view                   # Dependency Graph View
  - name: deploy                          # Deploy
  - name: emotional-jenkins-plugin        # Emotional Jenkins
  - name: monitoring                      # Monitoring
  - name: publish-over-ssh                # Publish Over SSH
  - name: shelve-project-plugin           # Shelve Project
  - name: token-macro                     # Token Macro
  - name: zapper                          # OWASP Zed Attack Proxy (ZAP)
  Sudo: yes
  get_url: dest="{{ jenkins_home }}/plugins/{{ item.name | mandatory }}.jpi"
           url="https://updates.jenkins-ci.org/latest/{{ item.name }}.hpi"
           owner=jenkins group=jenkins mode=0644
  notify: Restart Jenkins

Ceci fait partie d'un exemple plus complet que vous pouvez trouver sur: https://github.com/sakaal/service_platform_ansible/blob/master/roles/jenkins_ci/tasks/main.yaml

N'hésitez pas à l'adapter à vos besoins.

7
SAM

Vous pouvez mettre à jour la liste des plugins avec cette ligne de commande

curl -s -L http://updates.jenkins-ci.org/update-center.json | sed '1d;$d' | curl -s -X POST -H 'Accept: application/json' -d @- http://localhost:8080/updateCenter/byId/default/postBack
3
IcanDivideBy0

Pour info - certains plugins (Mercurial en particulier) ne s'installent pas correctement depuis la ligne de commande sauf si vous utilisez leur nom abrégé. Je pense que cela a à voir avec les déclencheurs dans les données d'informations du package jenkins. Vous pouvez simuler la mise à jour du package de jenkins en visitant 127.0.0.1:8080/pluginManager/checkUpdates dans un navigateur compatible javascript.

Ou si vous vous sentez masochiste, vous pouvez exécuter ce code python:

import urllib2,requests

UPDATES_URL = 'https://updates.jenkins-ci.org/update-center.json?id=default&version=1.509.4'
PREFIX = 'http://127.0.0.1:8080'

def update_plugins():
    "look at the source for /pluginManager/checkUpdates and downloadManager in /static/<whatever>/scripts/hudson-behavior.js"
    raw = urllib2.urlopen(self.UPDATES_URL).read()
    jsontext = raw.split('\n')[1] # ugh, JSONP
    json.loads(jsontext) # i.e. error if not parseable
    print 'received updates json'

    # post
    postback = PREFIX+'/updateCenter/byId/default/postBack'
    reply = requests.post(postback,data=jsontext)
    if not reply.ok:
        raise RuntimeError(("updates upload not ok",reply.text))
    print 'applied updates json'

Et une fois que vous avez exécuté ceci, vous devriez pouvoir exécuter jenkins-cli -s http://127.0.0.1:8080 install-plugin Mercurial -deploy.

1
amwinter