如何在Jenkins管道中使用GitHub提交消息和提交id?

问题描述 投票:0回答:2

我正在使用DevOps模型,我已经为代码构建和部署构建了一个管道。在整个过程中,我想记录特定更改提交的Git提交ID和提交消息。

@shruthibhaskar
shruthibhaskar committed just now 
1 parent 51132c4 commit aedd3dc56ab253419194762d72f2376aede66a19

并提交如下消息和描述

test commit 3

test commit desc 3

我如何在我的jenkins管道中访问这些提交值,我已经为SCM轮询配置了一个webhook?

git jenkins github jenkins-pipeline
2个回答
1
投票

Jenkins git插件为每个构建设置了一些环境变量。你可以在git plugin site找到它们的列表。其中它在$ {GIT_COMMIT}环境变量中提供当前提交的SHA。

您可以使用SHA和git log来打印提交消息以及--pretty选项所需的任何其他详细信息。

git log --oneline -1 ${GIT_COMMIT} # prints SHA and title line
git log --format="medium" -1 ${GIT_COMMIT} # print commit, author, date, title & commit message

1
投票

您可以根据currentBuild.changeSets发送消息,例如:

@NonCPS
def sendChangeLogs() {
    def commitMessages = ""
    def formatter = new SimpleDateFormat('yyyy-MM-dd HH:mm')
    def changeLogSets = currentBuild.changeSets
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            commitMessages = commitMessages + "${entry.author} ${entry.commitId}:\n${formatter.format(new Date(entry.timestamp))}: *${entry.msg}*\n" 
        }
    }
    slackSend color: "good", message: "Job: `${env.JOB_NAME}`. Starting build with changes:\n${commitMessages}"
}

并称之为:

stage('Clone repository') {
    steps {
        checkout scm

        script {
            sendChangeLogs()
        }
    }
}

PS @NonCPS需要除序列化错误。我发现它here


0
投票

git log --format=format:%s -1(最新提交)

git log --format=format:%s -1 ${GIT_COMMIT}(具体提交)

git --no-pager show -s --format='%s' ${GIT_COMMIT}

© www.soinside.com 2019 - 2024. All rights reserved.