我是AWS CodeCommit的新手,我希望在每次推送远程存储库后都能在我的电子邮件中获取git diff。
我已设置触发器通过SNS推送接收电子邮件,但有可能使用lambda函数从上次提交获得纯git diff吗?
答案 0 :(得分:0)
git
。最简单的方法可能是使用this library,但这需要您在NodeJS中编写函数。如果你想使用像Python这样的另一种语言,你可以从那个NodeJS库下载git tar文件,并在你的Python函数中使用它。git diff
以获取该提交的差异。答案 1 :(得分:0)
如果您将Lambda函数配置为使用CodeCommit作为触发器,您将在Lambda event
中获取提交ID。
使用提交ID,您可以使用aws-sdk
的{{3}}和/或getCommit()
来检索该提交的差异并将其发送到AWS SES。
答案 2 :(得分:0)
所以我没有测试过这个工作流程,但我怀疑你可以让它适用于你的用例。
步骤:
为存储库配置CodeCommit触发器以通知Lambda函数。每次进行推送时,此有效负载将包括分支提示的新提交ID。
在lambda函数中,使用CodeCommit的GetCommit API获取您希望对其进行区分的父提交ID。除非提交是合并,否则应该只有1个父级。
对于每个父提交,使用CodeCommit的GetDifferences API获取已添加,修改或删除的每个文件的列表。
对于已更改的每组文件,使用CodeCommit的GetBlob API将文件内容作为Base64编码的字符串返回。将这些字符串传递给diff库以将diff呈现为HTML。我怀疑viranch/Diffy之类的东西可以起作用(虽然我没有尝试过)。
获得HTML diff有效负载后,将其发送给SNS或SES以便发送电子邮件。