2014-07-17 8 views
7

Chciałbym utworzyć zadanie Jenkins, w którym wykonuję kopię zapasową i wdrażanie niektórych baz danych do zdalnej instancji MongoDB. Chciałbym, żeby ta kompilacja była sparametryzowana, tak aby w czasie kompilacji użytkownik wybierał z listy poprawnych nazw hostów MongoDB, a następnie, gdy użytkownik wybierze prawidłową nazwę hosta DB, pole wyboru drugiego parametru listy będzie dynamicznie wypełniane wszystkimi poprawnymi nazwami bazy danych na tych nazwach hostów. Następnie raz Użytkownik wybrał nazwę bazy danych, która będzie przechowywana w parametrze "DB", który może zostać przekazany do skryptu Wykonaj krok "Wykonaj powłokę", aby wykonać rzeczywistą pracę.Jak wykonać polecenie powłoki, aby wypełnić opcję Jenkins Dynamic Choice Parameter Plugin

Mój problem polega na tym, że potrzebuję sposobu na wykonanie skryptu w wtyczce Dynamic Parameter (Cascading) Jenkinsa, która uruchomi skrypt powłoki (lub idealnie pytona), który zwróci listę poprawnych nazw DB na wybrany host. Nie jestem w stanie uzyskać świetnej części skryptu wtyczki do wykonywania poleceń powłoki na lokalnym systemie operacyjnym (jak robi krok budowania "Wykonaj powłokę").

Idealnie chciałabym uruchomić coś takiego, gdzie „MONGOHOST” to pierwszy parametr wybrany przez użytkownika:

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

bym wtedy jak „listy wyboru” należy przedstawić w taki sposób, zostają zapełnione jako dostępne opcje parametru "DB".

Jak mogę to osiągnąć, zwłaszcza, że ​​parametr Wybór dynamiczny akceptuje tylko groovy skrypt, a nie rodzimy python?

+0

Wiem, że zostało to zadane rok temu, ale dlaczego nie uruchomić skryptu Pythona ze skryptu groovy? –

+0

Mam to samo pytanie, udało ci się to zrobić? w jaki sposób? – mmoossen

Odpowiedz

0

Zwykle wtyczka parametru dynamicznego ładuje opcje tylko z prostych plików ini. Tak więc, jeśli chcesz zaktualizować listę dostępnych opcji, wystarczy zaktualizować te pliki w instancji Jenkins.

BTW, jeśli próbujesz wdrożyć portal samoobsługowy, możesz rzucić okiem na RunDeck, który odkryłem niedawno i który wydaje się być znacznie bardziej przyjazny dla użytkownika niż Jenkins.

Powiązane problemy