如何从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命令获取
比如获取最新提交的提交说明:
如果需要获取Jenkins Git Build Data面板展示的全量数据(包括本次构建包含的所有提交变更列表、版本关联关系),可直接调用构建对象的内置API:// 注意执行该命令时工作目录必须是拉取下来的代码仓库根目录 def commitMessage = sh(returnStdout: true, script: 'git log -1 --pretty=%B').trim()
注意:所有Git相关的变量、数据必须在执行完// 拿到全量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}" } }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
相关产品推荐
相关产品推荐

