2013-03-15 27 views
6

Ho un lavoro Jenkins che ha una parte shell in esecuzione nella quale ho una variabile BUILD che è popolata dinamicamente.Passaggio da shell a email-ext in Jenkins

Dopo l'esecuzione di build, voglio passare questa variabile al plug-in email-ext Contenuto predefinito in grado di mostrare il suo valore.

Ho provato paio di modi, senza un successo:

  1. Passando questo valore $ {} BUILD in predefinito al contenuto non è riconosciuto (Solo le variabili d'ambiente Jenkins sono visibili in questo contesto)
  2. definito nuovi Variabile di ambiente globale Jenkins e ha cercato di sovrascrivere il suo valore iniziale nel contesto della shell che apparentemente non è possibile

Qualche idea su come fare questo?

risposta

1

Utilizzare EnvInject Plugin per leggere la variabile da un file, dopo averlo scritto nella "parte shell".


In generale, le variabili d'ambiente non vanno dal processo figlio di nuovo al processo padre, questa è la caratteristica fondamentale di famiglie di sistemi operativi Windows e Unix. Child ottiene sempre una copia dell'ambiente del genitore e, se lo modifica, modifica la propria copia (che viene poi copiata in qualsiasi processo figlio se ne avvia uno qualsiasi, ecc.). Ma per ottenere le modifiche, è necessario utilizzare un altro metodo, ad esempio la scrittura del bambino, le modifiche desiderate in un file, che viene poi analizzato dal genitore, che può quindi modificare il proprio ambiente basato su di esso.

+4

Non ce n'è bisogno. Ho trovato un modo più semplice per farlo. Il plugin Email-ext supporta lo script pre-email in cui è possibile scrivere il codice Groovy. Quindi nella parte shell sto scrivendo i dati nel file e con lo script Groovy, sto leggendo quei dati e passando alla variabile MimeMessage: String fileContents = nuovo File ("file.txt"). Testo msg .setText (FileContents, "UTF-8"); –

+1

Puoi condividere lo script groovy completo, per caricare la variabile dal file – user2400564

1

È possibile passare costruire parametri di e-mail plug-ext utilizzando:

$ {ENV, var = "maiuscola: nome_var"}

In questo modo di vedere il valore della variabile nella mail ricevuta.

+2

Puoi espandere un po 'questo includendo un esempio concreto per favore? – Taegost

+1

Un esempio sarebbe davvero utile per capire come funziona. –

+0

In questo caso specifico, '$ {ENV, var =" BUILD "}' dovrebbe fare il lavoro. – toppur