2017-10-18 12 views
1

AWS CodeCommitで新しく、リモートリポジトリを押すたびにメールにgit diffを取得したいと思います。AWS CodeCommitを押した後のGit diff

私はSNS経由でプッシュしてメールを受け取るように設定しましたが、最後のコミットから純粋なgit diffを得るためにラムダ関数を使用する可能性はありますか?

答えて

0
  1. CodeCommitは、ラムダ関数をトリガーしますか?
  2. ラムダ機能付きパッケージgit。これを行う最も簡単な方法はthis libraryであるかもしれませんが、NodeJSに関数を書く必要があります。 Pythonのような別の言語を使いたければ、そのNodeJSライブラリからgit tarファイルをダウンロードし、Python関数で使用することができます。
  3. ラムダ関数は、それをトリガしたメッセージからgit commit IDを抽出します。
  4. ラムダ関数でgit diffを実行して、そのコミットのdiffを取得してください。
  5. ラムダ関数にAWS SES経由で差分をメールで送信させますか?
+0

おかげで、私はNode.jsの – user821738

0

CodeCommitをトリガーとして使用するようにラムダ関数を設定すると、ラムダeventにコミットIDが得られます。

コミットIDを使用すると、aws-sdkgetCommit()および/またはgetDifferences()を使用して、そのコミットのdiffを取得してAWS SESに送信できます。

+0

とラムダ関数を実装する実行しようとします。しかし、あなたがgetDifferencesを()を使用する場合はgit diffのと同じではありませんいくつかの情報を含む応答のようなJSONを取得することはできません? – user821738

+0

@ user821738どういう意味ですか?あなたは 'getCommit()'と 'getDifferences()'で現在取得しているものを投稿できますか? – dashmug

0

私はこのワークフローをテストしていませんが、あなたのユースケースでうまくいくと思っています。

ステップ:

  1. ラムダ関数を通知するリポジトリのためのCodeCommitトリガーを設定します。このペイロードには、プッシュするたびにブランチの先端の新しいコミットIDが含まれます。

  2. ラムダ関数では、CodeCommitのGetCommit APIを使用して、相違したい親コミットIDのリストを取得します。コミットがマージでない限り、1つの親しか存在しません。

  3. それぞれのコミットについて、CodeCommitのGetDifferences APIを使用して、追加、変更、または削除された各ファイルのリストを取得します。

  4. 変更されたファイルのそれぞれについて、CodeCommitのGetBlob APIを使用して、ファイルの内容をBase64エンコードされた文字列として返します。これらの文字列をdiffライブラリに渡して、diffをHTMLとしてレンダリングします。私はviranch/Diffyのようなものが(私は自分自身を試していないが)うまくいくと思う。

  5. HTML差分ペイロードを取得したら、電子メールでSNSまたはSESに送信してください。

関連する問題