如何以Java代码以编程方式获取最后一次提交?詹金斯/ SBT

时间:2018-11-08 04:50:21

标签: scala jenkins sbt devops sbt-0.13

我开始编写一个基本上可以完成某些工作(例如编译或测试代码)的小工具,然后在失败时发送电子邮件。

https://github.com/JohnReedLOL/EmailTestingBot

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

例如,我希望它执行以下操作:Git: See my last commit

该电子邮件的基本内容为:

主题:测试结果

消息:开发人员通过了所有针对提交0e39756383662573的测试。

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

还有,我是否可以通过编程方式(例如,使用http://www.eclipse.org/jgit/http://javagit.sourceforge.net)来获取最近提交的作者的电子邮件?

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

1 个答案:

答案 0 :(得分:1)

我将尝试部分解决方案。

第1部分: 是的,您可以从 Jenkins Link运行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

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

仅供参考::我尚未测试此代码,但就我在詹金斯(Jenkins)的工作而言,我们曾经通过这种方式发送电子邮件。

#HappyCoding