2015-02-16 19 views
9

Hangi jenkins eklentilerinin kullanılmadığını kontrol etmek için bir yöntem arıyorum. Şu ana kadar config.xml dosyasında eklentisi uzantılı etiketleri arayabilir ve bunları eklentileri klasöründe listelenmiş olanlarla karşılaştırabildiğimi öğrendim. Ama bu bana tam bir liste vermez. Hala bazıları rol-strateji gibi yok. Eğer eklenti yöneticisinde yüklü sekmesini kontrol edebilirsiniz yüklenip devre dışı eklentilerin listesini kontrol gerekiyorsaKullanılmayan tüm jenkins eklentileri nasıl listelenir?

Ben

altına
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
import glob 
from lxml import etree as ET 
from collections import defaultdict 

def find(name, path): 
    return glob.glob(path+'/jobs/*/'+name) 


def get_plugin_list(path): 
    return [x[:-4].split('/')[-1] for x in glob.glob(path+'/plugins/*.jpi')] 


if __name__ == "__main__": 
    jobs_dict = defaultdict(list) 
    plugins_all = set(get_plugin_list('/home/user/.jenkins') 
    for config in find('config.xml', '/home/user/.jenkins'): 
     with open(config) as f: 
      tree = ET.XML(f.read()) 
      plugins = tree.xpath("/project//@plugin") 
     job = config.split('/')[-2] 
     for p in plugins: 
      jobs_dict[p].append(job) 
    with open('/home/user/.jenkins/config.xml') as f: 
     tree = ET.XML(f.read()) 
     plugins_config = tree.xpath("/hudson//@plugin") 
    plugins_used = set([x.split('@')[0] for x in jobs_dict.keys()+plugins_config]) 
    print "######## All plugins\n", '\n'.join(plugins_all) 
    print "######## Used plugins\n", '\n'.join(plugins_used) 
    print "######## Unused plugins\n", '\n'.join(plugins_all - plugins_used) 

cevap

0

gibi piton kodu kullanabilirsiniz.

Denetlenmeyenler devre dışı bırakılmışlardır.

+0

Teşekkür ama ben tüm eklentileri listelemek istiyorum, ne arıyorum değil işlerde kullanılmaz. Bazılarının dünya çapında kullanıldığını biliyorum, bunu ayırt etmek için bir yol var mı? Bu sorun. – mastier

+0

Aşağıdaki url 'http: //10.157.137.17: 8010/view/viewName/jobNm/config.xml' kullanarak iş yapılandırma dosyasını okumaya çalışabilirsiniz Görünüm adını ve iş adını sizinkiyle değiştirin. Bir regex kullanarak eklentileri filtreleyin. 'Plugin =' –

+0

için bir fikir arayın. Http üzerinden xml'ye erişebileceğimi bilmiyordum. Ama başlangıçta verdiğim ilk çözüm. – mastier

0

Bazı eklentileri sadece ziyade bireysel işlerde daha Jenkins sistem yapılandırmasını etkiler; /home/user/.jenkins/config.xml dosyasını eklemek için kodunuzdaki bulma yöntemini değiştirerek bunları bulabilmeniz gerekir. Birçok eklentinin kendi konfigürasyon dosyaları $ JENKINS_HOME, örn., Http://www.microsoft.com/downloads/index.php?hl=tr adresinde bulunabilir. $ JENKINS_HOME/org.jenkinsci.plugins.p4.PerforceScm.xml. Buna bakmadım, ancak eklenti adı (eklenti) yerine eklenti adı (örn. PerforceSCM) için config.xml dosyalarını arayarak fazladan bir eklenti bulabilirdiniz.

Ayrıca, yalnızca etkin olan işleri aramak istiyorsanız, işlerini config.xml dosyasında "<disabled>true</disabled>" ile filtreleyebilirsiniz.

10

bu konuda kesin eklentisi bir Jenkins var: Birçok gereksiz eklentileri Eklenti Yöneticisi kaldırmak için bulunan bu harika eklenti Plugin Usage

Teşekkürler (hiçbir bağımlılıkları vardır eklentileri kaldırmak mümkün olacaktır).

İşte nasıl göründüğü - eklenti arabiriminin Jenkins kenar çubuğunda bir bağlantısı var. Tüm varolan iş kullanımların herhangi biri (iş adlarını görmek için genişletme düğmesini basarak) eklentileri listeler:

enter image description here

+1

whoa! harika, gerçekten güzel eklenti :-) çok teşekkürler bu – mastier

+1

@master bu gönderme için harika. Eğer sorunuza cevap verirse, lütfen V işareti ile işaretleyin, teşekkürler;) –

+0

@mastier^Yani –

İlgili konular