2017-10-18 6 views
1

Je suis nouveau dans AWS CodeCommit et je voudrais obtenir git diff sur mon email après chaque poussée sur le dépôt distant.Git diff après push sur AWS CodeCommit

J'ai mis en place un déclencheur pour recevoir des e-mails lors d'un push via SNS, mais est-il possible d'utiliser la fonction lambda pour obtenir un git diff pur de la dernière validation?

Répondre

0
  1. Avez CodeCommit déclencher une fonction Lambda.
  2. Paquet git avec la fonction Lambda. La façon la plus simple de le faire peut être avec this library, bien que cela vous obligera à écrire votre fonction dans NodeJS. Si vous souhaitez utiliser un autre langage comme Python, vous pouvez télécharger le fichier git tar depuis cette bibliothèque NodeJS et l'utiliser dans votre fonction Python.
  3. Demandez à votre fonction Lambda d'extraire l'ID de validation git du message qui l'a déclenchée.
  4. Demandez à votre fonction Lambda d'exécuter un git diff pour obtenir le diff pour ce commit.
  5. Demandez à votre fonction Lambda d'envoyer le diff par l'intermédiaire d'AWS SES.
+0

Merci, je vais essayer de faire mettre en œuvre une fonction lambda avec Node.js – user821738

0

Si vous configurez votre fonction Lambda pour utiliser CodeCommit comme déclencheur, vous obtiendrez l'ID de validation dans votre Lambda event.

Utilisation de l'engagement id, vous pouvez alors utiliser getCommit() de aws-sdk et/ou même getDifferences() pour récupérer la diff pour que commettras et l'envoyer à AWS SES.

+0

Mais si vous utilisez getDifferences() vous n'obtiendrez pas JSON comme réponse à certaines informations qui ne sont pas identiques à git diff ?? – user821738

+0

@ user821738 Que voulez-vous dire? Pouvez-vous poster ce que vous obtenez actuellement avec 'getCommit()' et 'getDifferences()'? – dashmug

0

Donc, je n'ai pas testé ce flux de travail, mais je suppose que vous pourriez le faire fonctionner pour votre cas d'utilisation.

Étapes:

  1. Configurer un déclencheur CodeCommit pour votre référentiel pour notifier une fonction Lambda. Cette charge inclura le nouvel identifiant de validation de la pointe de la branche chaque fois que vous faites un push.

  2. Dans votre fonction lambda, utilisez l'API GetCommit de CodeCommit pour obtenir la liste des ID de validation parente que vous souhaitez comparer. À moins que le commit soit une fusion, il ne devrait y avoir qu'un seul parent.

  3. Pour chaque validation parente, utilisez l'API GetDifferences de CodeCommit pour obtenir une liste de chaque fichier qui a été ajouté, modifié ou supprimé.

  4. Pour chaque ensemble de fichiers qui a été modifié, utilisez l'API GetBlob de CodeCommit pour renvoyer le contenu des fichiers en tant que chaînes codées en Base64. Passez ces chaînes à une bibliothèque diff pour rendre le diff en HTML. Je suspecte quelque chose comme viranch/Diffy pourrait fonctionner (bien que je n'ai pas essayé moi-même). Une fois que vous avez les charges utiles HTML, envoyez-les à SNS ou à SES pour les envoyer par courrier électronique.