Sådan indlæser du variabler fra fil til Windows-miljøvariabler i Jenkins pipeline?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har følgende Jenkinsfile


node  {
    stage 'checkout'
    deleteDir()
    checkout scm

    load 'LoadTheseVariables.txt'  

    echo "MYKEY: ${MYKEY}"
    echo "REPO: ${REPO}"

    bat 'echo MYKEY is \%MYKEY\%'
    bat 'echo REPO is \%REPO\%'        
}


Filen LoadTheseVariables.txt indeholder:


MYKEY="ThisIsTheKey"
REPO="ThisIsTheRepo"


Udgangen af ​​Jenkins build er:


<..snip..>
[Pipeline] load
[Pipeline] { (LoadTheseVariables.txt)
[Pipeline] }
[Pipeline] // load
[Pipeline] echo
MYKEY: ThisIsTheKey
[Pipeline] echo
REPO: ThisIsTheRepo
[Pipeline] bat
[test] Running batch script

D:Jenkinsworkspace	est>echo MYKEY is  
MYKEY is 
[Pipeline] bat
[test] Running batch script

D:Jenkinsworkspace	est>echo REPO is  
REPO is 
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS


Jenkins pipeline kan se variablerne, men hvorfor kan ikke mit Windows CMD-miljø se variablerne? Jeg har endda forsøgt dette trin før bat kommandoer i slutningen: bat 'refreshenv', men det genoplod ikke miljøet med disse variabler.


Hvordan kan jeg indlæse variabler fra en fil i et Windows-job og få dem indlæst i miljøet ved kørselstid?

Bedste reference


Løsningen er at bruge dobbelt citater i stedet for single omkring kommandoen bat. Synes at fungere fint.