2014-07-17 17 views
7

Vorrei creare un lavoro Jenkins in cui eseguo il backup e l'implementazione di determinati database in un'istanza MongoDB remota. Mi piacerebbe che questa build fosse parametrizzata in modo che al momento della compilazione l'utente scelga da un elenco di nomi host MongoDB validi e quindi, una volta che l'utente seleziona il nome host DB valido, una seconda casella di scelta del parametro elenco verrà popolata dinamicamente con tutti i nomi di database validi su quel nome di host. Quindi, una volta che l'utente ha selezionato il nome del DB, questo verrà memorizzato in un parametro "DB" che può essere passato a uno script "Execute Shell" del passo Build per eseguire il lavoro effettivo.Come eseguire un comando shell per compilare un plug-in Jenkins Dynamic Choice Parameter

Il mio problema è che ho bisogno di un modo per eseguire uno script nel plug-in Jenkins Dynamic Parameter (Cascading) che eseguirà uno script shell (o idealmente python) che restituirà un elenco di nomi DB validi su l'host selezionato. Non riesco ad ottenere una porzione di script groovy del plug-in per eseguire comandi di shell sul sistema operativo locale (come fa il passo di build "Execute Shell").

Idealmente mi piacerebbe correre qualcosa come questo dove "MONGOHOST" è il primo parametro scelto dall'utente:

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

avrei poi, come "listaScelte" per essere presentati in modo tale da vengono popolati come le scelte disponibili per un parametro "DB".

Come posso ottenere questo risultato, soprattutto perché il parametro Scelta dinamica accetta solo script groovy e non python nativo?

+0

So che questo è stato chiesto un anno fa, ma perché non eseguire lo script python dallo script groovy? –

+0

Ho la stessa domanda, sei riuscito a farlo? Come? – mmoossen

risposta

0

Generalmente il plug-in dei parametri dinamici carica solo le opzioni da semplici file ini. Quindi, se si desidera aggiornare l'elenco delle opzioni disponibili, è sufficiente aggiornare questi file sull'istanza di Jenkins.

BTW, Se si sta tentando di implementare un portale self-service, è possibile dare un'occhiata a RunDeck, che ho scoperto di recente e sembra molto più user-friendly di Jenkins.

Problemi correlati