Ho un lavoro Maven in Jenkins. Prima della fase di costruzione effettiva ho un passo di pre-build "Execute shell". In quel guscio ho impostato una variabile:Jenkins: Come utilizzare una variabile da una shell pre-build nel Maven "Obiettivi e opzioni"
REVISION=$(cat .build_revision)
Vorrei utilizzare tale variabile nel Maven costruire lavoro in "Obiettivi e opzioni":
clean install -Drevision=${REVISION}
Ma che non funziona! "Drevision" è impostato su "$ {REVISIONE}" e non sul valore effettivo di $ {REVISION}. Uscita:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Drevision=${REVISION}
Funziona con variabili d'ambiente Jenkins:
clean install -Dbuild=${BUILD_NUMBER}
Esso definisce "Dbuild" per il numero di build attuale. Uscita:
Executing Maven: -B -f /home/gerrit/.jenkins/jobs/<job_name>/workspace/pom.xml clean install -Dbuild=54
La mia domanda: Come utilizzare una variabile di shell in Maven "Obiettivi e opzioni" ??
EDIT:
Ho provato ad utilizzare Jenkins EnvInject Plugin a "Iniettare variabili d'ambiente", dopo il guscio pre-build, e la mia variabile è ora accessibile da esempio shell post-build, ma non è ancora disponibile in Maven "Obiettivi e opzioni".
Quindi è possibile impostare "Inject variables variables to the build process" utilizzando il plugin EnvInject, che rende effettivamente disponibili tali variabili in Maven "Obiettivi e opzioni", ma queste vengono impostate subito dopo il checkout SCM, cioè prima del pre -build passi e non supportano le valutazioni di espressione.
Sei sicuro che il tuo metodo renda le variabili disponibili a Maven "Obiettivi e opzioni" ?? Perché ho provato "Inject environment variables" e rende le variabili accessibili ad es. shell post-build, ma non sono disponibili in Maven "Obiettivi e opzioni". –
Sì, è esattamente come lo stiamo facendo - che db.url viene passato a mvn ... -Ddb.url = $ db.url – jjungnickel
@JonasBang - Qual è stata la tua correzione per rendere le tue variabili disponibili per "obiettivi e opzioni " campo? Al momento sto riscontrando lo stesso problema con il fatto che sono disponibili per i passaggi post-generazione, ma non per il passaggio di esperti. –