2017-05-13 5 views
3

Mit Jenkins-Pipeline können Sie jede Umgebungsvariable über Globale Variable namens - env.Zugriff auf benutzerdefinierte Umgebungsvariablen in Jelly-Vorlage

Jelly Vorlage in es an der Reihe gibt Ihnen Fähigkeit Jenkins API zugreifen, einschließlich hudson.model.AbstractBuild und hudson.model.AbstractProject Objekte.

Hier sind die Schnipsel, die ich benutze:

Jenkinsfile:

node { 
     env.MYVAR = 'My variable' 
     emailext body: ${JELLY_SCRIPT, template="myTemplate"}, subject: 'MySubject', to: 'me' 
} 

Jelly-Vorlage (myTemplate):

<?jelly escape-by-default='true'?> 
<!DOCTYPE html [ 
    <!ENTITY nbsp "&#38;#38;nbsp&#59;"> 
]> 
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"> 
<head> 
    <style> 
     body table, td, th, p, h1, h2 { 
     margin:0; 
     font:normal normal 100% Georgia, Serif; 
     background-color: #ffffff; 
     } 
    </style> 
</head> 
<body> 
<j:set var="buildEnv" value="${build.getEnvironment(listener)}" /> 
<j:set var="myVar" value="${buildEnv.get('MYVAR')}" /> 
    <table> 
    <tr> 
     <td>Variable</td> 
     <td> 
     <p>${myVar}</p> 
     </td> 
    </tr> 
    </table> 
</div> 
</body> 
</j:jelly> 

Das Problem ist, dass ich konnte nicht Erhalte Zugriff auf meine benutzerdefinierte Variable von der Jelly-Vorlage.

ich viel möglich ana unmöglich Optionen (withEnv Pipeline Schritt versucht haben, mehrere andere Methoden aus AbstractBuild Klasse aufrufen (getEnvironments, getBuildVariables), aber nichts

Antwort

2

Die einzige Lösung, die ich gefunden ist.

<j:set var="myvar" value="${it.getAction('org.jenkinsci.plugins.workflow.cps.EnvActionImpl').getOverriddenEnvironment()}"/> 
<p>My var: ${myvar}</p> 
Verwandte Themen