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

如何从Jenkins Pipeline获取Git Build Data并邮件发送构建详情

Jenkins Pipeline获取Git构建数据+邮件发送实现方案

一、获取Git Build Data的可用方式

不需要额外对接第三方接口,Jenkins官方Git插件会在代码拉取完成后自动注入对应变量,同时提供可直接在Pipeline中调用的内置方法拿到全量构建数据:

  • 自动注入的内置环境变量(可直接通过env.xxx调用)
    • env.GIT_COMMIT:当前构建拉取的Git提交完整哈希值
    • env.GIT_BRANCH:当前构建对应的Git分支名,默认格式为origin/分支名
    • env.GIT_PREVIOUS_SUCCESSFUL_COMMIT:上一次同分支构建成功时对应的Git提交哈希值
    • env.GIT_URL:当前构建拉取的Git仓库地址
    • env.GIT_COMMITTER_NAME/env.GIT_COMMITTER_EMAIL:当前拉取的最新提交对应的提交人姓名、邮箱
  • 未直接注入的字段可通过内置方法/原生Git命令获取
    比如获取最新提交的提交说明:
    // 注意执行该命令时工作目录必须是拉取下来的代码仓库根目录
    def commitMessage = sh(returnStdout: true, script: 'git log -1 --pretty=%B').trim()
    
    如果需要获取Jenkins Git Build Data面板展示的全量数据(包括本次构建包含的所有提交变更列表、版本关联关系),可直接调用构建对象的内置API:
    // 拿到全量Git构建元数据
    def gitBuildMeta = currentBuild.getBuildDataForGit()
    // 拿到本次构建关联的所有提交变更集
    def changeSets = currentBuild.changeSets
    
    // 遍历拼接变更日志
    def changeLogContent = []
    changeSets.each { changeSet ->
        changeSet.items.each { commitItem ->
            changeLogContent << "提交ID: ${commitItem.commitId.take(7)} | 提交人: ${commitItem.author} | 提交说明: ${commitItem.msg}"
        }
    }
    
    注意:所有Git相关的变量、数据必须在执行完checkout/git拉取代码的步骤之后才能读取,拉取前调用会返回空值。如果是多分支流水线项目,还可以直接使用env.BRANCH_NAME变量获取不带远程前缀的短分支名。

二、构建详情邮件发送实现

直接使用Email Extension插件提供的emailext步骤即可,把前面拿到的Git数据、构建信息拼接进邮件内容即可,示例代码片段:

post {
    always {
        emailext (
            to: 'recipient@example.com',
            subject: "构建通知: ${env.JOB_NAME} #${env.BUILD_NUMBER} 状态: ${currentBuild.currentResult}",
            body: """
            构建基本信息:
            任务名称: ${env.JOB_NAME}
            构建编号: ${env.BUILD_NUMBER}
            构建地址: ${env.BUILD_URL}
            构建状态: ${currentBuild.currentResult}

            Git相关信息:
            分支: ${env.GIT_BRANCH}
            对应Commit: ${env.GIT_COMMIT.take(7)}
            最新提交人: ${env.GIT_COMMITTER_NAME}
            最新提交说明: ${commitMessage}

            本次构建包含的变更:
            ${changeLogContent.join('\n')}
            """,
            attachLog: false // 可根据需要配置是否将构建日志作为附件发送
        )
    }
}

注意:使用emailext步骤前需要确保Jenkins已经安装Email Extension插件,同时在系统配置中完成发件邮箱的SMTP参数配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:48:17