2016-11-24 41 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> 

然後我們與輸出工作在不同的主機,以確定差異。