You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline中emailext模板无法访问变量的报错问题

我之前也碰到过这个问题,其实是因为emailext的Groovy模板上下文默认不包含env对象,而且自定义变量也需要显式传递才能在模板里访问。给你几个可行的解决办法:

1. 修复模板中的变量访问逻辑

你看到的No such property: env错误,是因为模板里直接用了env.PROJNAME,但模板脚本的默认上下文里没有env这个对象。替换成通过build对象获取环境变量就可以解决:

<!-- 你的模板文件内容 -->
<h2>Build Update for ${build.environment.get('PROJNAME')}</h2>
<p>Build Status: ${currentBuild.result}</p>
<p>Build Number: ${build.number}</p>

build是Jenkins模板脚本中默认提供的对象,可以通过它访问构建的所有环境变量、编号、结果等信息。

2. 显式传递自定义变量到模板

如果需要在模板里使用更多自定义变量(不是环境变量),可以在Pipeline的emailext调用中通过parameters参数传递:

// Pipeline代码示例
pipeline {
    agent any
    environment {
        PROJNAME = "MyAwesomeProject" // 先确保环境变量已设置
    }
    stages {
        // ... 你的构建步骤 ...
    }
    post {
        always {
            def buildSummary = "Build ${currentBuild.number} finished at ${new Date()}"
            
            emailext(
                to: 'dev-team@example.com',
                subject: "[${env.PROJNAME}] Build ${currentBuild.number} ${currentBuild.result}",
                body: '''${SCRIPT, template="build-report-template.groovy.template"}''',
                // 传递自定义变量到模板
                parameters: [
                    [$class: 'StringParameterValue', name: 'PROJNAME', value: env.PROJNAME],
                    [$class: 'StringParameterValue', name: 'BUILD_SUMMARY', value: buildSummary]
                ]
            )
        }
    }
}

之后在模板里就可以直接用变量名访问:

<p>${BUILD_SUMMARY}</p>
<p>Project Name: ${PROJNAME}</p>

3. 确认环境变量已正确初始化

别忘了在Pipeline开头确保PROJNAME已经被设置到环境变量中——可以直接在environment块里定义,或者从构建参数、Git仓库名等动态获取:

environment {
    // 静态定义
    PROJNAME = "MyProject"
    // 或者动态获取(比如从Git仓库名提取)
    // PROJNAME = sh(script: 'basename `git rev-parse --show-toplevel`', returnStdout: true).trim()
}

补充说明

Jenkins的emailext插件在渲染Groovy模板时,默认只提供build、currentBuild等有限的内置对象,env并不在其中——这就是为什么直接用env.PROJNAME会抛出找不到属性的异常。通过上述两种方式(用build.environment获取,或者显式传递变量)就能完美解决这个问题。

内容的提问来源于stack exchange,提问作者helloworld9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:28