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

如何修改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脚本控制台添加全局监听:

  1. 进入Jenkins后台「系统管理」→「脚本控制台」
  2. 执行以下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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:42:40