[英]How to determine the user who pushed to a remote repo in git using jenkins git plugin?
我需要找到一个将更改(由不同用户的不同提交组成)推送到远程存储库的人员的git用户名/电子邮件。
推送通过gitblit触发了Post-Receive挂钩,该挂钩触发了jenkins作业,并且正在使用非用户特定的SSH身份验证。
詹金斯(Jenkins)没有提供一种简单的方法来实现这一目标。 我遇到了类似的问题,花了一些时间才找到合适的解决方案。
我最终使用了Git插件的环境变量和git log的组合 。
Git插件提供了两个环境变量:
GIT_COMMIT-当前的SHA
GIT_PREVIOUS_COMMIT-来自同一分支的先前构建提交的SHA(当前在第一个构建分支中的SHA)
每当您的git Web Hook触发Jenkins作业时,您都会获得此信息。
另一方面, git log
提供了使用format
命令选项获取作者姓名和作者电子邮件的方法。
因此,结合使用这两个选项,您可以使用下面的git log
命令获取触发Jenkins作业的先前提交: GIT_PREVIOUS_COMMIT和当前提交: GIT_COMMIT之间的每次提交的作者名称和电子邮件:
git log $GIT_PREVIOUS_COMMIT..$GIT_COMMIT --pretty=format:%an/%ae
在您的詹金斯工作中的执行壳中。 请确保您在git项目的根目录下。
我不得不
。
def triggerUrl = jenkinsUrl + "/job/" + jenkinsJob + "/buildWithParameters?token=" + jenkinsToken + "&myuser=" + user.getName()
new URL(triggerUrl).getText()
myuser现在是一个环境变量,这里以ant脚本为例:
<property environment="env" />
<target name="xx" description="xx">
<echo message="${env.myuser}" />
</target>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.