如何修改Jenkins中GitLab触发构建的默认描述语句
修改Jenkins构建描述为GitLab提交/MR信息的实现方法
方法一:在Jenkins流水线中自定义修改(推荐)
直接在Jenkinsfile里添加脚本,利用GitLab WebHook传递的环境变量或Git命令获取信息,覆盖默认构建描述:
pipeline { agent any stages { stage('初始化构建描述') { steps { script { // 获取Git提交信息的第一行作为基础描述 def commitShortMsg = sh( script: 'git log --format=%B -n 1 ${GIT_COMMIT}', returnStdout: true ).trim() // 区分推送和MR触发场景,优先用MR标题 def customDesc = env.GITLAB_MERGE_REQUEST_TITLE ? "MR: ${env.GITLAB_MERGE_REQUEST_TITLE}" : "Commit: ${commitShortMsg}" // 附加提交人信息(可选) customDesc += " (by ${env.GITLAB_USER_NAME ?: env.GIT_COMMTER_NAME})" // 设置构建描述 currentBuild.description = customDesc } } } // 后续构建阶段... } }
注意:需确保Jenkins已安装GitLab插件,它会自动注入GITLAB_MERGE_REQUEST_TITLE、GITLAB_USER_NAME等环境变量;若为普通推送触发,GIT_COMMIT、GIT_COMMTER_NAME是Git插件默认提供的变量。
方法二:全局监听构建事件(批量生效)
如果要让所有GitLab触发的构建统一修改描述,可通过Jenkins脚本控制台添加全局监听:
- 进入Jenkins后台「系统管理」→「脚本控制台」
- 执行以下Groovy脚本(需管理员权限):
import jenkins.model.Jenkins import hudson.model.Run import hudson.model.listeners.RunListener def gitlabListener = new RunListener<Run>() { @Override void onStarted(Run run, TaskListener listener) { // 处理GitLab推送触发的构建 def pushCause = run.getCause(hudson.plugins.gitlab.GitLabPushCause) if (pushCause) { def commitMsg = run.getScm().getBranches()[0].getRevision().getCommitMessage() def shortMsg = commitMsg.split('\n')[0] run.setDescription("GitLab推送: ${shortMsg} (by ${pushCause.getUserName()})") } // 处理GitLab Merge Request触发的构建 def mrCause = run.getCause(hudson.plugins.gitlab.GitLabMergeRequestCause) if (mrCause) { run.setDescription("GitLab合并请求: ${mrCause.getTitle()} (by ${mrCause.getUserName()})") } } } Jenkins.instance.addRunListener(gitlabListener)
该脚本会自动监听所有构建启动事件,判断触发源是GitLab推送还是MR,然后替换默认描述。
注意事项
- 若使用方法一,可根据分支规则(如仅修改
main/develop分支的描述)增加条件判断,进一步自定义逻辑。 - 测试时可推送分支或提交MR到GitLab,查看Jenkins构建列表中的描述是否更新。
内容的提问来源于stack exchange,提问作者Young Jun Lee
相关产品推荐
相关产品推荐

