如何使用 jenkins git 插件确定在 git 中推送到远程仓库的用户?
How to determine the user who pushed to a remote repo in git using jenkins git plugin?
我需要找到一个人的 git username/email,他正在将更改(由不同用户的不同提交组成)推送到远程存储库。
推送通过 gitblit 触发了一个 Post-Receive 挂钩,它触发了一个 jenkins 作业,并且正在使用非用户特定的 SSH 身份验证。
Jenkins 没有提供实现此目的的简单方法。我遇到了类似的问题,我花了一些时间才找到合适的解决方案。
我最终使用了 Git Plugin and git log 的环境变量组合。
Git 插件提供两个环境变量:
GIT_COMMIT - SHA of the current
GIT_PREVIOUS_COMMIT - SHA of the previous built commit from the same
branch (the current SHA on first build in branch)
每次 git Web Hook 触发 Jenkins 作业时都会得到。
另一方面,git log
提供了使用 format
命令选项获取作者姓名和作者电子邮件的方法。
因此,结合这两个选项,您可以获得触发 Jenkins 作业的上一次提交之间的每个提交的作者姓名和电子邮件:GIT_PREVIOUS_COMMIT 和当前提交:GIT_COMMIT 使用下面的 git log
命令:
git log $GIT_PREVIOUS_COMMIT..$GIT_COMMIT --pretty=format:%an/%ae
在您的 Jenkins 作业中执行 Shell。请确保您位于 git 项目的根目录下。
我不得不
- 定义一个 gitblit 用户并用它来推送更改。
- 将我的 jenkins 作业更改为参数化作业并为用户名 (myuser) 定义一个参数。
- 在我的挂钩中添加用户名
.
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>
我需要找到一个人的 git username/email,他正在将更改(由不同用户的不同提交组成)推送到远程存储库。
推送通过 gitblit 触发了一个 Post-Receive 挂钩,它触发了一个 jenkins 作业,并且正在使用非用户特定的 SSH 身份验证。
Jenkins 没有提供实现此目的的简单方法。我遇到了类似的问题,我花了一些时间才找到合适的解决方案。
我最终使用了 Git Plugin and git log 的环境变量组合。
Git 插件提供两个环境变量:
GIT_COMMIT - SHA of the current
GIT_PREVIOUS_COMMIT - SHA of the previous built commit from the same branch (the current SHA on first build in branch)
每次 git Web Hook 触发 Jenkins 作业时都会得到。
另一方面,git log
提供了使用 format
命令选项获取作者姓名和作者电子邮件的方法。
因此,结合这两个选项,您可以获得触发 Jenkins 作业的上一次提交之间的每个提交的作者姓名和电子邮件:GIT_PREVIOUS_COMMIT 和当前提交:GIT_COMMIT 使用下面的 git log
命令:
git log $GIT_PREVIOUS_COMMIT..$GIT_COMMIT --pretty=format:%an/%ae
在您的 Jenkins 作业中执行 Shell。请确保您位于 git 项目的根目录下。
我不得不
- 定义一个 gitblit 用户并用它来推送更改。
- 将我的 jenkins 作业更改为参数化作业并为用户名 (myuser) 定义一个参数。
- 在我的挂钩中添加用户名
.
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>