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

求助:Jenkins中通过Groovy脚本获取Commit Author ID的可行方案

在Jenkins中通过Groovy脚本获取Commit Author ID的可行方案

场景1:Pipeline项目(推荐)

Pipeline原生支持Groovy,以下两种方式可可靠获取提交作者ID:

方法1:直接读取Git插件注入的环境变量

Git插件会自动将提交相关信息注入环境变量,直接调用即可:

pipeline {
    agent any
    stages {
        stage('Get Commit Author Info') {
            steps {
                script {
                    // 以作者用户名作为ID
                    def authorName = env.GIT_AUTHOR_NAME
                    // 以作者邮箱作为ID(唯一性更强)
                    def authorEmail = env.GIT_AUTHOR_EMAIL
                    
                    echo "Commit Author ID (Name): ${authorName}"
                    echo "Commit Author ID (Email): ${authorEmail}"
                }
            }
        }
    }
}

注:需确保Git插件版本≥4.0,旧版本可能未注入上述变量

方法2:执行Git命令手动解析提交信息

若环境变量未生效,可直接执行Git命令提取作者信息:

pipeline {
    agent any
    stages {
        stage('Fetch Author via Git Command') {
            steps {
                script {
                    // 获取当前提交哈希(兼容未自动注入变量的场景)
                    def commitHash = env.GIT_COMMIT ?: sh(script: 'git rev-parse HEAD', returnStdout: true).trim()
                    
                    // 提取作者用户名
                    def authorId = sh(
                        script: "git log -1 --pretty=format:'%an' ${commitHash}",
                        returnStdout: true
                    ).trim()
                    
                    // 提取作者邮箱(可选)
                    def authorEmail = sh(
                        script: "git log -1 --pretty=format:'%ae' ${commitHash}",
                        returnStdout: true
                    ).trim()
                    
                    echo "Commit Author ID: ${authorId}"
                    echo "Commit Author Email: ${authorEmail}"
                }
            }
        }
    }
}

场景2:Freestyle项目

在Freestyle项目中通过Groovy脚本步骤实现:

  1. 确保项目已配置Git源码拉取
  2. 添加「Execute system Groovy script」步骤,使用以下代码:
// 获取构建工作区路径
def workspace = build.getWorkspace()
def gitRepoDir = new File(workspace, ".git")

// 执行Git命令获取作者用户名
def cmd = "git --git-dir=${gitRepoDir} log -1 --pretty=format:'%an'"
def process = cmd.execute()
process.waitFor()
def authorId = process.in.text.trim()

// 输出到构建日志
println "Commit Author ID: ${authorId}"

// 可选:将作者ID设为环境变量,供后续步骤调用
env.COMMIT_AUTHOR_ID = authorId

常见问题排查

  • 确认Jenkins运行用户具备Git命令执行权限,可在服务器终端执行git --version验证
  • 多分支项目需确保GIT_COMMIT变量已绑定当前分支的最新提交
  • 旧版本Git插件可能存在环境变量注入问题,建议升级至最新稳定版

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:25:09