2015-05-07 27 views
24

Attivo uno script di shell da Jenkins, questo script ottiene la data ed esporta come variabile di ambiente (Linux) $ DATE. Ho bisogno di usare questo $ DATE nello stesso lavoro di Jenkins. Ho fatto un lavoro come configurazione dei parametri. Creato un parametro stringa come valore DATE come DATE = $ DATE. Ma non sta funzionando.Passare la variabile dallo script di shell a jenkins

Si prega di suggerire !!

+0

Non è chiaro cosa stai dicendo - stai impostando 'DATE' come parametro, o stai esportando' DATE' da un passo di build "Execute shell"? –

+0

Ciao, sto cercando di esportarlo da uno script che è in esecuzione nel lavoro di Jenkins per lo stesso lavoro di Jenkins. – user3232823

risposta

55

Si dice che si sta esportando una variabile di ambiente DATE in uno script di shell, che presumibilmente viene avviato tramite un passaggio "Esegui shell".

Il problema è che, una volta completata la fase di shell, quell'ambiente è scomparso - le variabili non verranno trasferite ai passaggi di generazione successivi.
Quindi, quando in seguito si tenta di utilizzare il valore $DATE - in un altro passaggio di build o come parametro in un altro lavoro - quella particolare variabile di ambiente non esisterà più.

È possibile invece utilizzare EnvInject plugin per esportare le variabili di ambiente durante una compilazione. Le variabili impostate utilizzando questo plug-in saranno disponibili per tutte le fasi di generazione successive.

Ad esempio, si potrebbe scrivere il DATE ad un campo di immobili a passo uno di compilazione:

echo DATE=$(date +%Y-%m-%d) > env.properties 

Quindi è possibile aggiungere un "Iniettare variabili d'ambiente per il lavoro di" costruire passo, e immettere env.properties nel " Campo "Percorso file proprietà dell'ambiente".

In questo modo, la variabile DATE (e qualsiasi altra cosa nel file delle proprietà) verrà esportata e sarà visibile per il resto dei passaggi di generazione.

+0

Ottima soluzione. Grazie – user55926

+0

Grazie. È un peccato che Jenkins non supporti questa funzionalità di default. Quello che stavo cercando di trovare è un modo migliore per generare automaticamente tutte le variabili impostate all'interno di uno script di shell nel file delle proprietà in un singolo comando. Uno dei miei compiti deve creare circa 15 variabili basate su directory, nomi di file, timestamp, ecc. Avrei quindi bisogno di 15 comandi echo per l'output nel file delle proprietà. E se dovessi aggiungere ulteriori variabili, avrei anche bisogno di assicurarmi che venissero emessi. Sarebbe bello poter eseguire un comando simile a "env" che restituisce tutte le variabili definite. – leeman24

+0

E 'davvero un peccato che Jenkins non lo supporti fuori dagli schemi. Grazie per questa risposta. –

Problemi correlati