Как я могу обновить плагины jenkins из терминала? - PullRequest
23 голосов
/ 10 октября 2011

Я пытаюсь создать bash-скрипт для настройки Jenkins.Есть ли способ обновить список плагинов из терминала Дженкинс?

При первой настройке в списке нет доступных плагинов

, т.е.:

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

won 'т работа

Ответы [ 5 ]

35 голосов
/ 03 сентября 2014

Простой, но работающий способ - сначала перечислить все установленные плагины, найти обновления и установить их.

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

Каждый плагин, у которого есть доступное обновление, имеет новую версиюв скобках в конце.Таким образом, вы можете использовать grep для таких:

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

Если вы вызываете install-plugin с именем плагина, он автоматически обновляется до последней версии.

Наконец вынужно перезапустить jenkins.

Собрать все вместе (можно поместить в скрипт оболочки):

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
31 голосов
/ 14 февраля 2012

На самом деле вы можете установить плагины с компьютерного терминала (а не с терминала Дженкинс).

  1. Скачать плагин с сайта плагина (http://updates.jenkins-ci.org/download/plugins)
  2. Скопируйте этот плагин в $JENKINS_HOME/plugins directory
  3. В этот момент либо запустите Jenkins, либо позвоните в службу настроек перезагрузки (http://yourservername:8080/jenkins/reload)

Это включит плагин в Jenkins и при условии, что Jenkins запущен.

cd $JENKINS_HOME/plugins
curl -O http://updates.jenkins-ci.org/download/plugins/cobertura.hpi
curl http://yourservername:8080/reload
7 голосов
/ 16 ноября 2014

Вот как вы можете развернуть плагины Jenkins CI с помощью Ansible, который, конечно, используется с терминала.Этот код является частью 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

Это часть более полного примера, который вы можете найти по адресу: https://github.com/sakaal/service_platform_ansible/blob/master/roles/jenkins_ci/tasks/main.yaml

Не стесняйтесь адаптировать его к вашемунеобходимо.

3 голосов
/ 13 октября 2014

Вы можете обновить список плагинов с помощью этой командной строки

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
1 голос
/ 17 октября 2013

К вашему сведению - некоторые плагины (в частности, Mercurial) не устанавливаются правильно из командной строки, если вы не используете их короткое имя.Я думаю, что это связано с триггерами в данных пакета jenkins.Вы можете смоделировать собственное обновление пакета Дженкинса, посетив 127.0.0.1:8080/pluginManager/checkUpdates в браузере с поддержкой javascript.

Или, если вы чувствуете себя мазохистом, вы можете запустить этот код 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'

Икак только вы запустите это, вы сможете запустить jenkins-cli -s http://127.0.0.1:8080 install-plugin mercurial -deploy.

...