【自称】ラーメンエバンジェリストのネモティです。
業務でGitHubを使用しているんですが、プルリクエストでmasterブランチにマージされた後は毎回手動でリリースタグを設定していました。
しかし「毎回行なう操作なんだから自動化した方が良くね?」ということで、masterブランチにマージされたら自動でリリースタグを設定するスクリプトをGoogle Apps Script(以下GAS)で書いてみました。
「プルリクマージ→Webhook→GAS→GitHub API(Release)→リリースタグ設定」という流れになっています。
- GitHubのアクセストークンを取得する
GitHub「Personal access tokens」の設定方法を参照。 - スクリプトをGASに設定する
1234567891011121314151617181920212223242526272829303132function 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);} - スクリプトをウェブアプリケーションとして公開する
Google Apps Scriptを使って簡易APIをサクッと作るを参照。 - GitHubのリポジトリでWebhookを設定する
リポジトリのSettings>Webhooks>add webhookから以下の様に設定する。
Playload URLには3.で取得したウェブアプリケーションのURLを設定する。
WebhookとGAS、GitHub APIを使用するといろんなことが出来るので、これからもコードで出来るところはどんどん自動化していきます。
ABOUT ME
