Jenkins 更改“作者”电子邮件和“更改ID环境变量返回”;没有此类财产:……”;

Jenkins 更改“作者”电子邮件和“更改ID环境变量返回”;没有此类财产:……”;,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,鉴于以下管道: stages { stage ("Checkout SCM") { steps { checkout scm sh "echo ${CHANGE_AUTHOR_EMAIL}" sh "echo ${CHANGE_ID}" } } } 为什么这些变量无法解析并提供值 最后,我想使用这些环境变量发送电子邮件并合并请求: post { failure {

鉴于以下管道:

stages {
    stage ("Checkout SCM") {
        steps {
            checkout scm

            sh "echo ${CHANGE_AUTHOR_EMAIL}"
            sh "echo ${CHANGE_ID}"
        }
    }
}
为什么这些变量无法解析并提供值

最后,我想使用这些环境变量发送电子邮件并合并请求:

post {
    failure {
        emailext (
        attachLog: true,
        subject: '[Jenkins] $PROJECT_NAME :: Build #$BUILD_NUMBER :: build failure',
        to: '$CHANGE_AUTHOR_EMAIL',
        replyTo: 'iadar@...',
        body: '''<p>You are receiving this email because your pull request was involved in a failed build. Check the attached log file, or the console output at: $BUILD_URL to view the build results.</p>'''
     )
    }
}
post{
失败{
电子邮件文本(
附件:是的,
主题:“[Jenkins]$PROJECT_NAME::Build#$Build_NUMBER::Build failure”,
收件人:“$CHANGE\u AUTHOR\u EMAIL”,
答复:'iadar@...',
正文:“”“您收到此电子邮件是因为您的拉取请求涉及失败的生成。请检查附加的日志文件,或位于:$build\u URL的控制台输出以查看生成结果。

“” ) } }

sh“curl-X PUT-d'{'commit\u title\':\'Merge pull request\'}'/pulls/${CHANGE\u ID}/Merge?access\u token=”
奇怪的是,
$PROJECT\u NAME
$BUILD\u NUMBER
$BUILD\u URL
确实有效


更新:这可能是一个开放性错误…:-(

是否有任何解决方法来获取这些值?

对于可能遇到此问题的任何人,只有选中了生成原始PRs(与基本分支合并)的复选框(这是在多分支作业中),这些变量才可用


请参阅Jenkins另一期中的更多内容:

根据环境变量是shell还是Groovy代码以及引用方式,您需要注意如何引用环境变量

当您执行
sh“echo${CHANGE\u ID}
时,实际发生的情况是Groovy将首先插入字符串,用Groovy属性
CHANGE\u ID
替换
${CHANGE\u ID}
,这就是错误消息的来源。在Groovy中,环境变量包装在
env

如果要直接从shell脚本引用环境变量,则必须使用env进行插值、使用单引号或转义美元符号。以下所有操作都应有效:

sh 'echo $CHANGE_ID'
sh "echo \$CHANGE_ID"
sh "echo ${env.CHANGE_ID}"

如果使用不在sh脚本中的变量,例如内部emailext插件、slack插件等,该怎么办?我已经用emailext的一个示例更新了这个问题。在这种情况下,我得到“错误发送到以下无效地址:$CHANGE\u AUTHOR\u EMAIL”然后你需要使用Groovy风格。是的,我有时问问题太早,然后无论如何都会找到答案…再次感谢!实际上它似乎仍然失败…说发送电子邮件到:${env.CHANGE\u AUTHOR\u email}错误发送到以下无效地址:${env.CHANGE\u AUTHOR\u email}此复选框在哪里?我在我的多分支作业中找不到它插件已更新,此答案无效。需要更新我自己才能更新答案
sh 'echo $CHANGE_ID'
sh "echo \$CHANGE_ID"
sh "echo ${env.CHANGE_ID}"