你如何为Jenkins管道提取git提交者信息

use*_*693 6 git jenkins jenkins-pipeline

我有一个在groovy中设置的管道,需要拉出在git中提交一些代码的人,这样我就可以发布破坏构建的人名.我在网上搜索过,似乎无法找到解决方案.我想通过使用jenkins的slack插件找出如何发布松弛的帖子.例:

slackSend color: 'warning', message: "${git.user_name} broke the build."
Run Code Online (Sandbox Code Playgroud)

Krz*_*soń 6

您必须为此使用 shell 并执行git命令来检索数据,将其存储在文件中,然后将文件读入变量,如下所示:

sh 'git log --format="%ae" | head -1 > commit-author.txt'                 
readFile('commit-author.txt').trim()                               
Run Code Online (Sandbox Code Playgroud)

以上将为您提供最后一个提交作者。

  • 无需将其存储在文件中,请参阅@AlinSoare 的回答 (2认同)

dux*_*ux2 5

我使用以下方法。

首先在 JenkinsFile 中添加一个阶段,以将提交作者(和消息)从 git log 检索到环境中。变量:

stage('get_commit_details') {
        steps {
            script {
                env.GIT_COMMIT_MSG = sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
                env.GIT_AUTHOR = sh (script: 'git log -1 --pretty=%cn ${GIT_COMMIT}', returnStdout: true).trim()
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后在构建后操作中发送 Slack 消息:(顺便说一句,我发送到两个不同的通道(成功/失败),以便可以将成功通道静音。

post {
    failure {
        slackSend (channel: 'xyz-build-failure', color: '#FF0000', message: """FAILED:
Job: ${env.JOB_NAME}
Build #${env.BUILD_NUMBER}
Build: ${env.BUILD_URL})
Comitted by: ${env.GIT_AUTHOR}
Last commit message: '${env.GIT_COMMIT_MSG}'""")
    }
    success {
        slackSend (channel: 'xyz-build-success', color: '#00FF00', message: """SUCCESS:
Job: ${env.JOB_NAME}
Build #${env.BUILD_NUMBER}
Build: ${env.BUILD_URL})
Comitted by: ${env.GIT_AUTHOR}
Last commit message: '${env.GIT_COMMIT_MSG}'""")
    }
  }
Run Code Online (Sandbox Code Playgroud)