Google Apps Script で Github のコミットログを精査する

Github にソースコードを PUSH したタイミングで、ソースコードの差分をチェックして、定義した条件にマッチしたらメール通知を行うスクリプトです。

例えば、

・危険なコードが含まれている。

・デバッグコードが含まれている。

・ダミーデータが含まれている。

などをチェックすることができるようになります。

var recipient = "";
var subject = "ALARM";
var rules = /console\.log|debug/i;
var target = "refs/heads/master";

function doGet(e) {
}


function doPost(e) {
  var body = "";
  var hasAlart = false;
  try {
    var jsonString = e.postData.getDataAsString();
    var jsonData = JSON.parse(jsonString);
    var url = jsonData['compare'] + ".diff";
    if(jsonData['ref'] == target) {
      var response = UrlFetchApp.fetch(url);
      var data = response.getContentText();
      var lines = data.split('\n');
      var row = 1;
      body = jsonData['compare'] + "\n";
      for(var line in lines){
        var reg = /^\+\s(.*)|^\-\s(.*)/;
        var match = reg.exec(lines[line]);
        if(match) {
          var result = rules.exec(lines[line]);
          if(result) {
            body += lines[line] + "\n";
            row++;
            hasAlart = true;
          }
        }
      }
      if(hasAlart) {
        MailApp.sendEmail(recipient, subject, body);
      }
    }
  } catch(error) {
    body = error;
    hasAlart = true;
    MailApp.sendEmail(recipient, subject, body);
  }
}

こちらのスクリプトをGoogle Apps Script で簡単にウェブAPIをつくるの手順で公開し、 ウェブアプリケーションURLをGithubのWebhookに設定すれば稼動します。