GitHubのプルリクエストがマージされたら自動でリリースタグを設定するスクリプトを書いてみた

もくじ

【自称】ラーメンエバンジェリストのネモティです。

業務でGitHubを使用しているんですが、プルリクエストでmasterブランチにマージされた後は毎回手動でリリースタグを設定していました。

しかし「毎回行なう操作なんだから自動化した方が良くね?」ということで、masterブランチにマージされたら自動でリリースタグを設定するスクリプトをGoogle Apps Script(以下GAS)で書いてみました。

「プルリクマージ→Webhook→GAS→GitHub API(Release)→リリースタグ設定」という流れになっています。

1.GitHubのアクセストークンを取得する
GitHub「Personal access tokens」の設定方法を参照。

2.スクリプトをGASに設定する

function doPost(e) {    
  var payload = JSON.parse(e.postData.getDataAsString());     
  if (payload["ref"] === "refs/heads/master") {         
    postReleaseTag();     
 } 
} 
function postReleaseTag() {     
 var github_token ={GitHubのアクセストークン};     
 var github_api_url = "https://api.github.com/repos/{ユーザー名}/{リポジトリ名}/releases";     
 var now = new Date();     
 var year = now.getFullYear();     
 var month = now.getMonth() + 1;     
 var day = now.getDate();     
 var hour = now.getHours();     
 var minutes = now.getMinutes();     
 var tag_name = year + ("0" + month).slice(-2) + ("0" + day).slice(-2) + ("0" + hour).slice(-2) + ("0" + minutes).slice(-2);     
 var options =     
 {         
   "method" : "post",         
   "payload" : JSON.stringify({         
   "tag_name" : tag_name,         
   "name" : tag_name         
   }),         
   "headers" : {             
      "Content-type": "application/json",             
      "Authorization" : "token " + github_token         
   }     
 };     
 var response = UrlFetchApp.fetch(github_api_url, options); 
} 

3.スクリプトをウェブアプリケーションとして公開する
  Google Apps Scriptを使って簡易APIをサクッと作るを参照。

4.GitHubのリポジトリでWebhookを設定する
  リポジトリのSettings>Webhooks>add webhookから以下の様に設定する。
  Playload URLには3.で取得したウェブアプリケーションのURLを設定する。

WebhookとGAS、GitHub APIを使用するといろんなことが出来るので、これからもコードで出来るところはどんどん自動化していきます。

関連する記事

もっと見る