如何在Java代码中以编程方式获得最后一次提交?詹金斯/sbt



我开始写一个小工具,它基本上可以做一些事情(例如编译或测试代码(,如果失败,就会发送电子邮件。

https://github.com/JohnReedLOL/EmailTestingBot

我想添加一个功能,该工具可以通过编程查看工作目录中的最后一次提交,查看提交的作者,提取他们的电子邮件,然后向此人发送电子邮件,无论他们的提交是否导致通过。

例如,我希望它做一些类似的事情:Git:查看我最后一次提交的

电子邮件基本上说:

主题:测试结果

消息:您的所有测试都通过了提交0e39756383662573的dev。

Jenkins是否已经提供了此功能?我想让我的设置电子邮件给最近提交的人。

此外,有没有一种方法可以通过编程获得最近提交的作者的电子邮件(例如http://www.eclipse.org/jgit/或http://javagit.sourceforge.net(?

我真的不在乎我是如何收到电子邮件通知的——我只是想要它们,但我不能使用TravisCI。

我将尝试逐个给出解决方案。

第1部分:是的,您可以从Jenkins链接运行ShellScript(Shell命令(。

第2部分如何从GitCommit中获取电子邮件Id和其他内容。为此,Jenkins服务器应该在构建服务器中安装git命令。创建一个conf文件,例如具有的/conf/reference

app {
git {
commit = "CURRENT_COMMIT"
repo = "CURRENT_REPO"
timestamp = "CURRENT_TIMESTAMP"
emailId = "EMAIL_ID"
}
}

当你的构建运行命令

sed -i'' "s/CURRENT_COMMIT/$(git rev-parse HEAD)/g" conf/reference.conf
sed -i'' "s^CURRENT_REPO^$(git config --get remote.origin.url)^g" conf/reference.conf
sed -i'' "s/CURRENT_TIMESTAMP/$(git show -s --format=%ci HEAD)/g" conf/reference.conf
sed -i'' "s/EMAIL_ID/git --no-pager show -s --format='%an <%ae>' CURRENT_COMMIT/g" conf/reference.conf

上面的代码将把值放在CCD_ 2中。现在,您可以使用获取信息并发送邮件。据我所知,詹金斯提供了发送电子邮件的能力。Jenkins处理环境变量,而不是将其放入reference.conf中。您可以将其放入environment变量中,并使用环境变量发送邮件。

仅供参考:我还没有测试过这个代码,但据我记忆中在詹金斯工作时,我们曾经通过这种方式发送电子邮件。

#HappyCoding

最新更新