我正在使用DevOps模型,我已经为代码构建和部署构建了一个管道。 在整个过程中,我想记录特定更改提交的Git提交ID和提交消息。
@shruthibhaskar
shruthibhaskar committed just now
1 parent 51132c4 commit aedd3dc56ab253419194762d72f2376aede66a19
并提交消息和说明,如下所示
test commit 3
test commit desc 3
如何在我的jenkins管道中访问这些提交值,我已经为SCM轮询配置了一个webhook?
答案 0 :(得分: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 :(得分:0)
git log --format=format:%s -1
(最新提交)
git log --format=format:%s -1 ${GIT_COMMIT}
(特定提交)
git --no-pager show -s --format='%s' ${GIT_COMMIT}
答案 2 :(得分:0)
您可以根据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
答案 3 :(得分:0)
您可以使用 gitlab scm 的个人令牌卷曲 api 以获取提交消息和许多其他信息。在这里,您需要创建个人令牌并通过秘密文本将其保存在 jenkins 中,然后在管道阶段使用它。
curl --header "Private-Token: asdfasdfasdf" https://gitlab.com/api/v4/projects/2445653/repository/commits/master
您可以查看文档以获取更多信息。 https://docs.gitlab.com/ee/api/commits.html