AWS CodeCommitで新しく、リモートリポジトリを押すたびにメールにgit diffを取得したいと思います。AWS CodeCommitを押した後のGit diff
私はSNS経由でプッシュしてメールを受け取るように設定しましたが、最後のコミットから純粋なgit diffを得るためにラムダ関数を使用する可能性はありますか?
AWS CodeCommitで新しく、リモートリポジトリを押すたびにメールにgit diffを取得したいと思います。AWS CodeCommitを押した後のGit diff
私はSNS経由でプッシュしてメールを受け取るように設定しましたが、最後のコミットから純粋なgit diffを得るためにラムダ関数を使用する可能性はありますか?
git
。これを行う最も簡単な方法はthis libraryであるかもしれませんが、NodeJSに関数を書く必要があります。 Pythonのような別の言語を使いたければ、そのNodeJSライブラリからgit tarファイルをダウンロードし、Python関数で使用することができます。git diff
を実行して、そのコミットのdiffを取得してください。CodeCommitをトリガーとして使用するようにラムダ関数を設定すると、ラムダevent
にコミットIDが得られます。
コミットIDを使用すると、aws-sdk
のgetCommit()
および/またはgetDifferences()
を使用して、そのコミットのdiffを取得してAWS SESに送信できます。
とラムダ関数を実装する実行しようとします。しかし、あなたがgetDifferencesを()を使用する場合はgit diffのと同じではありませんいくつかの情報を含む応答のようなJSONを取得することはできません? – user821738
@ user821738どういう意味ですか?あなたは 'getCommit()'と 'getDifferences()'で現在取得しているものを投稿できますか? – dashmug
私はこのワークフローをテストしていませんが、あなたのユースケースでうまくいくと思っています。
ステップ:
ラムダ関数を通知するリポジトリのためのCodeCommitトリガーを設定します。このペイロードには、プッシュするたびにブランチの先端の新しいコミットIDが含まれます。
ラムダ関数では、CodeCommitのGetCommit APIを使用して、相違したい親コミットIDのリストを取得します。コミットがマージでない限り、1つの親しか存在しません。
それぞれのコミットについて、CodeCommitのGetDifferences APIを使用して、追加、変更、または削除された各ファイルのリストを取得します。
変更されたファイルのそれぞれについて、CodeCommitのGetBlob APIを使用して、ファイルの内容をBase64エンコードされた文字列として返します。これらの文字列をdiffライブラリに渡して、diffをHTMLとしてレンダリングします。私はviranch/Diffyのようなものが(私は自分自身を試していないが)うまくいくと思う。
HTML差分ペイロードを取得したら、電子メールでSNSまたはSESに送信してください。
おかげで、私はNode.jsの – user821738