2017-10-18 5 views
1

AWS CodeCommit에서 새로운 기능입니다. 원격 저장소를 사용할 때마다 내 이메일에 git diff를 보내고 싶습니다.AWS 코드 커밋 후 Git diff

SNS를 통해 푸시 할 때 이메일을 수신하도록 트리거를 설정했지만 람다 함수를 사용하여 마지막 커밋에서 순수한 자식 diff를 얻을 가능성이 있습니까?

답변

0
  1. CodeCommit이 람다 함수를 트리거하도록하십시오.
  2. 람다 기능이있는 git 패키지. 이를 수행하는 가장 쉬운 방법은 this library 일 수 있지만 NodeJS에 함수를 작성해야합니다. 파이썬 같은 다른 언어를 사용하고 싶다면 그 NodeJS 라이브러리에서 git tar 파일을 다운로드하여 파이썬 함수에서 사용할 수 있습니다.
  3. 당신의 람다 함수가 그것을 발동 한 메시지에서 git commit ID를 추출하도록하십시오.
  4. 람다 함수가 git diff을 실행하여 해당 커밋에 대한 diff를 얻었습니까?
  5. 람다 함수가 AWS SES를 통해 diff에 이메일을 보내도록하십시오.
+0

감사합니다, 나는 Node.js를 – user821738

0

CodeCommit을 트리거로 사용하도록 람다 함수를 구성하면 람다 event에 커밋 ID가 제공됩니다.

커밋 ID를 사용하면 aws-sdkgetCommit() 및/또는 심지어 getDifferences()을 사용하여 해당 커밋에 대한 diff를 검색하고 AWS SES로 보낼 수 있습니다.

+0

와 람다 함수를 구현 할 것을 시도 할 것이다 그러나 당신이 getDifferences()를 사용하는 경우는 자식은 diff로 동일하지 않은 몇 가지 정보와 응답과 같은 JSON을받지 않습니다? – user821738

+0

@ user821738 무엇을 의미합니까? 'getCommit()'과'getDifferences()'를 사용하여 현재 얻고있는 것을 게시 할 수 있습니까? – dashmug

0

이 워크 플로를 테스트하지는 않았지만 사용 사례에 맞게 작동시킬 수 있다고 생각됩니다.

단계 :

  1. 구성 람다 기능을 통지하는 저장소에 대한 CodeCommit 트리거. 이 페이로드에는 푸시 할 때마다 분기 팁의 새 커밋 ID가 포함됩니다.

  2. 람다 함수에서 CodeCommit의 GetCommit API를 사용하여 비교하려는 상위 커밋 ID 목록을 가져옵니다. 커밋이 병합 (merge)이 아닌 한, 오직 하나의 부모 만 있어야합니다.

  3. 각 상위 커밋에 대해 CodeCommit의 GetDifferences API를 사용하여 추가, 수정 또는 삭제 된 각 파일의 목록을 가져옵니다.

  4. 변경된 파일 집합마다 CodeCommit의 GetBlob API를 사용하여 파일 내용을 Base64 인코딩 문자열로 반환하십시오. 이 문자열을 diff 라이브러리에 전달하여 diff를 HTML로 렌더링합니다. 나는 viranch/Diffy 같은 일이 (나 자신을 시도하지는 못했지만) 용의자라고 생각한다.

  5. 일단 HTML diff 페이로드가 있으면 이메일로 SNS 또는 SES로 보냅니다.