推动AWS CodeCommit后的Git diff
我是AWS CodeCommit中的新成员,我想在每次推送远程存储库后在我的电子邮件中获得git diff。推动AWS CodeCommit后的Git diff
我已经设置触发器接收通过SNS推送电子邮件,但是有没有可能使用lambda函数从上次提交得到纯粹的git diff?
- 让CodeCommit触发一个Lambda函数。
- 包装
git
与Lambda函数。最简单的方法可能是使用this library,但这需要您在NodeJS中编写函数。如果您想使用Python等其他语言,您可以从该NodeJS库下载git tar文件,并将其用于Python函数中。 - 您的Lambda函数是否从触发它的消息中提取了git commit ID。
- 让您的Lambda函数执行
git diff
以获取该提交的差异。 - 让您的Lambda函数通过AWS SES向diff发送电子邮件。
如果您将Lambda函数配置为使用CodeCommit作为触发器,您将在您的Lambda event
中获得提交ID。
使用提交ID,然后可以使用aws-sdk
的getCommit()
和/或甚至getDifferences()
检索该提交的差异并将其发送到AWS SES。
拉姆达的功能,但如果你使用getDifferences()是你不会响应某些信息是不一样的git的差异得到JSON? – user821738
@ user821738你是什么意思?你可以发表你正在用'getCommit()'和'getDifferences()'获得什么吗? – dashmug
所以我没有测试过这个工作流程,但我怀疑你可以让它为你的用例工作。
步骤:
配置一个CodeCommit触发你的资料库通知lambda函数。这个有效负载将包含每次推送时分支尖端的新提交ID。
在您的lambda函数中,使用CodeCommit的GetCommit API来获取您希望与之区分的父承诺ID的列表。除非提交是合并,否则应该只有一个父代。
对于每个父提交,使用CodeCommit的GetDifferences API来获取其中添加,修改或删除每个文件的列表。
对于每一组已更改的文件,请使用CodeCommit的GetBlob API将文件的内容作为Base64编码的字符串返回。将这些字符串传递给diff库以将diff显示为HTML。我怀疑像viranch/Diffy可以工作(虽然我还没有尝试过自己)。
一旦你有HTML差异有效载荷,将它们发送到SNS或SES发送电子邮件。
谢谢,我会努力做到实现与Node.js的 – user821738