Переменные среды, добавленные в конвейер, недоступны в плагине email-ext

В свой сценарий конвейера я добавил несколько переменных среды, но не смог получить к ним доступ в плагине email-ext.

env.MYVAR = 'HELLO'

emailext body: '${ENV,var="MYVAR"}', subject: 'subject', to: '[email protected]'

Поскольку я читаю тело письма из файла, я также попытался заменить строку, но получил исключение java.lang.NullPointerException в org.codehaus.groovy.runtime.StringGroovyMethods.replaceAll

def myvariable = 'HELLO WORLD'
def content = readFile 'template.html'
content = content.replaceAll('MYVAR',myvariable)
...

Любая идея? Спасибо!


person qmo    schedule 21.04.2017    source источник


Ответы (3)


Попробуйте использовать двойные кавычки, например:

emailext body: "${env.MYVAR}", subject: 'subject', to: '[email protected]'
person ianmiell    schedule 22.04.2017

После нескольких часов попыток я сделал это, используя конкатенацию строк:

  pipeline {
    agent any
    stages {
       ....
  }
  post {
    always {
      script {
        env.LAST_COMMIT = sh (
            script: 'git log -n 3',
            returnStdout:true
        ).trim()
      }
      echo "Last 3 commits: $LAST_COMMIT"
      emailext (
          attachLog: true,
          body: '''$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
                   Build Url: $BUILD_URL
                   Last 3 commits: '''
                   + env.LAST_COMMIT,
          postsendScript: '$DEFAULT_POSTSEND_SCRIPT',
          presendScript: '$DEFAULT_PRESEND_SCRIPT', 
          replyTo: '$DEFAULT_REPLYTO', 
          subject: '*$BRANCH_NAME - $BUILD_STATUS* - $DEFAULT_SUBJECT', 
          to: '''
            [email protected], [email protected]
            ''',
          from: '[email protected]'
      )
    }
  }
}
person Henrique N. do Nascimento    schedule 30.01.2020

Вы можете указать отдельный файл сценария Groovy для тела письма следующим образом:

emailext body: '${SCRIPT, template="build-result.groovy"}', subject 'subject', to: '[email protected]'

Файл шаблона должен находиться в папке шаблонов электронной почты вашей установки Jenkins.

Затем вы можете использовать в своем скрипте Groovy следующее для доступа к переменным среды, установленным в вашем конвейере:

<% 
def envOverrides = it.getAction("org.jenkinsci.plugins.workflow.cps.EnvActionImpl").getOverriddenEnvironment()
if (envOverrides.containsKey("MYVAR"))
{
    println "myvar = " + envOverrides["MYVAR"]
}
%>
person Bill Brooks    schedule 15.04.2018