2014-07-17 32 views
7

Uzak MongoDB örneğine belirli veritabanlarının bir yedeğini ve dağıtımını yaptığım bir Jenkins işi oluşturmak istiyorum. Bu yapının parametrelendirilmesini isterim, böylece kullanıcı geçerli bir MongoDB anasistem listesi listesinden seçim yaptıktan sonra kullanıcı geçerli DB ana bilgisayar adını seçtiğinde, ikinci bir liste parametresi seçim kutusu tüm geçerli veritabanı isimleri ile dinamik olarak doldurulur. bu ana bilgisayar adlarında. Sonra bir kez Kullanıcı DB adını seçti, bu gerçek işi yapmak için bir Build Step "Execute Shell" betiğine geçirilebilecek bir "DB" parametresinde saklanacak.Bir Jenkins Dinamik Seçim Parametre Eklentisi doldurmak için bir kabuk komutu yürütme

Sorunum, geçerli DB adlarının listesini döndürecek bir kabuk (veya ideal olarak, python) komut dosyası çalıştıracak olan Jenkins Dinamik Parametresi (Basamaklı) Eklentisinde bir komut dosyasını yürütmenin bir yolunu kullanmam gerektiğidir. seçilen ana bilgisayar. Yerel işletim sistemindeki kabuk komutlarını çalıştırmak için eklentinin groovy komut dosyası kısmını alamıyorum ("Execute Shell" yapı adımı gibi). "MONGOHOST" kullanıcı tarafından seçilen ilk parametredir

İdeal Böyle bir şey çalıştırmak istiyorum:

#!/usr/bin/env python 
from pymongo import MongoClient 
client = MongoClient('mongodb://${MONGOHOST}:27017/') 
choicelist = client.database_names() 
client.close() 

Sonra "choicelist" gibi böyle bir yolu olarak sunulacak ediyorum "DB" parametresi için kullanılabilir seçenekler olarak doldurulurlar.

Özellikle Dinamik Seçim parametresi yalnızca mükemmel komut dosyasını kabul ettiğinden ve yerel python'u kabul etmediğinden bunu nasıl sağlayabilirim?

+0

Bunun bir yıl önce sorulduğunu, ancak neden python betiğini groovy komut dosyasından çalıştırmıyoruz? –

+0

Aynı sorularım var, bunu yapmayı başardınız mı? Nasıl? – mmoossen

cevap

0

Genellikle dinamik parametre eklentisi, seçenekleri basit ini dosyalarından yükler. Dolayısıyla, kullanılabilir seçeneklerin listesini güncellemek isterseniz, bu dosyaları Jenkins örneğinde güncellemeniz yeterlidir.

BTW, Bir self servis portalı uygulamaya çalışıyorsanız, yakın zamanda keşfettiğim RunDeck'e bir göz atmak isteyebilirsiniz ve Jenkins'den çok daha kullanıcı dostu görünüyor.

İlgili konular