Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较跨实例安装的Jenkins插件_Python_Jenkins_Jenkins Plugins_Jenkins Cli - Fatal编程技术网

Python 比较跨实例安装的Jenkins插件

Python 比较跨实例安装的Jenkins插件,python,jenkins,jenkins-plugins,jenkins-cli,Python,Jenkins,Jenkins Plugins,Jenkins Cli,我有6个Jenkins主机和一个生产Jenkins主机,我们使用了近100个插件。我们希望确保所有实例都有相同的插件及其各自的版本 我们尝试使用下面的curl命令来检索特定主机使用的插件列表。我们正在尝试开发该实用程序,以比较所有主机上的插件版本,并报告生产主机上是否缺少任何插件 curl 'https://<Jenkins url>/pluginManager/api/xml?depth=1&x‌​path=/*/*/shortName|‌​/*/*/version&

我有6个Jenkins主机和一个生产Jenkins主机,我们使用了近100个插件。我们希望确保所有实例都有相同的插件及其各自的版本

我们尝试使用下面的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'

curl'https:///pluginManager/api/xml?depth=1&x‌​路径=/*/*/shortName|‌​/*/*/版本和包装器‌​=插件| perl-pe的/*?([\w-]+)*?([^我们在shell中这样做:

java -jar jenkins-cli.jar -s <jenkins-url> list-plugins > <outputfile>
java-jar-jenkins-cli.jar-s列表插件>

然后,我们使用不同主机的输出来确定差异。

这不是一个完整的解决方案,但您肯定可以利用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脚本中实现