2016-11-24 5 views
1

저는 Jenkins 호스트 6 대와 Jenkins 호스트 1 대를 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 형식의 플러그인 목록을 제공합니다.

나중에 다른 인스턴스와 비교하는 데 사용할 수 있으며 모든 단일 파이썬 스크립트에서이를 수행 할 수 있습니다.

0

우리는 쉘에서 다음과 같이 그것을 : 다른 호스트가 차이를 결정하는

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

그런 다음 우리는 출력과 함께 작동합니다.