2016-11-24 9 views
1

У меня есть 6 хостов Jenkins и одна компания Jenkins, где мы используем около 100 плагинов. Мы хотим убедиться, что все экземпляры имеют одинаковые плагины и их соответствующие версии.Сравнение плагинов Jenkins, установленных во всех экземплярах

Мы попытались выполнить команду curl для получения списка плагинов, используемых конкретным хостом. Мы пытаемся разработать утилиту для сравнения версий плагинов на всех хостах и ​​предоставить нам отчет, если на рабочем хосте отсутствует какой-либо плагин.

curl 'https://<Jenkins url>/pluginManager/api/xml?depth=1&x‌​path=/*/*/shortName|‌​/*/*/version&wrapper‌​=plugins' | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g' 

ответ

1

Это не полное решение, но вы можете определенно использовать библиотеки Python для сравнения несовместимости версии или отсутствующих плагинов.

import xml.etree.ElementTree as ET 
import requests 
import sys 
from itertools import zip_longest 
import itertools 
from collections import OrderedDict 
import collections 
import csv 

url = sys.argv[1].strip() 
filename = sys.argv[2].strip() 

response = requests.get(url+'/pluginManager/api/xml?depth=1',stream=True) 
response.raw.decode_content = True 
tree = ET.parse(response.raw) 
root = tree.getroot() 
data = {} 
for plugin in root.findall('plugin'): 
    longName = plugin.find('longName').text 
    shortName = plugin.find('shortName').text 
    version = plugin.find('version').text 
    data[longName] = version 
    with open(filename, 'w') as f: 
     [f.write('{0},{1}\n'.format(key, value)) for key, value in data.items()] 

Дает вам список плагинов в формате csv!

Который позже может быть использован для сравнения с другим экземпляром, и все это может быть достигнуто в одном скрипте python.

0

Мы делаем это, как это в оболочке:

java -jar jenkins-cli.jar -s <jenkins-url> list-plugins > <outputfile> 

Затем мы работаем с этим выходом для различных хостов, чтобы определить различия.

 Смежные вопросы

  • Нет связанных вопросов^_^