Auth0の更新情報を自動的に取得し、Slackに通知するための簡単な方法として、Google Apps Script(GAS)を使用してみます。この方法では、GitHubのAPIを使用してAuth0のリポジトリから最新のリリース情報を取得し、その情報をSlackに送信します。
手順概要
- GitHub APIを使用してリリース情報を取得
- 取得した情報をSlackに送信
- 定期的にスクリプトを実行するためのトリガー設定
1. GitHub APIを使用してリリース情報を取得
GitHubのAPIを利用して、Auth0のリポジトリから最新のリリース情報を取得します。以下は、GASでGitHub APIを呼び出すためのサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 |
<button class="z-0 group inline-flex items-center justify-center box-border appearance-none select-none whitespace-nowrap font-normal subpixel-antialiased overflow-hidden tap-highlight-transparent data-[pressed=true]:scale-[0.97] outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 text-tiny gap-2 rounded-small px-0 !gap-0 transition-transform-colors-opacity motion-reduce:transition-none bg-transparent data-[hover=true]:bg-default/40 min-w-8 w-8 h-8 absolute top-2 right-2 text-white" type="button"></button><code class="hljs language-javascript"><span class="hljs-keyword">function</span> <span class="hljs-title function_">fetchAuth0Releases</span>() { <span class="hljs-keyword">const</span> url = <span class="hljs-string">'https://api.github.com/repos/auth0/auth0.js/releases/latest'</span>; <span class="hljs-comment">// Auth0のリポジトリURL</span> <span class="hljs-keyword">const</span> response = <span class="hljs-title class_">UrlFetchApp</span>.<span class="hljs-title function_">fetch</span>(url, { <span class="hljs-attr">headers</span>: { <span class="hljs-string">'Accept'</span>: <span class="hljs-string">'application/vnd.github.v3+json'</span> } }); <span class="hljs-keyword">const</span> json = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(response.<span class="hljs-title function_">getContentText</span>()); <span class="hljs-keyword">return</span> json; } |
2. 取得した情報をSlackに送信
次に、取得したリリース情報をSlackに送信するための関数を作成します。SlackのIncoming Webhookを使用してメッセージを送信します。
1 2 3 4 5 6 7 8 9 10 11 |
<button class="z-0 group inline-flex items-center justify-center box-border appearance-none select-none whitespace-nowrap font-normal subpixel-antialiased overflow-hidden tap-highlight-transparent data-[pressed=true]:scale-[0.97] outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 text-tiny gap-2 rounded-small px-0 !gap-0 transition-transform-colors-opacity motion-reduce:transition-none bg-transparent data-[hover=true]:bg-default/40 min-w-8 w-8 h-8 absolute top-2 right-2 text-white" type="button"></button><code class="hljs language-javascript"><span class="hljs-keyword">function</span> <span class="hljs-title function_">sendToSlack</span>(<span class="hljs-params">message</span>) { <span class="hljs-keyword">const</span> webhookUrl = <span class="hljs-string">'YOUR_SLACK_WEBHOOK_URL'</span>; <span class="hljs-comment">// SlackのWebhook URLを設定</span> <span class="hljs-keyword">const</span> payload = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>({ <span class="hljs-attr">text</span>: message }); <span class="hljs-title class_">UrlFetchApp</span>.<span class="hljs-title function_">fetch</span>(webhookUrl, { <span class="hljs-attr">method</span>: <span class="hljs-string">'post'</span>, <span class="hljs-attr">contentType</span>: <span class="hljs-string">'application/json'</span>, <span class="hljs-attr">payload</span>: payload }); } |
3. 定期的にスクリプトを実行するためのトリガー設定
GASのトリガー機能を使用して、定期的にリリース情報を取得し、Slackに通知するように設定します。
- Google Apps Scriptのエディタで「トリガー」メニューを開き、「トリガーを追加」を選択します。
fetchAuth0Releases
関数を選択し、実行頻度を設定します(例:毎日、毎時間など)。
4. 完全なスクリプト例
以下は、上記のすべての機能を統合した完全なスクリプトの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<button class="z-0 group inline-flex items-center justify-center box-border appearance-none select-none whitespace-nowrap font-normal subpixel-antialiased overflow-hidden tap-highlight-transparent data-[pressed=true]:scale-[0.97] outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 text-tiny gap-2 rounded-small px-0 !gap-0 transition-transform-colors-opacity motion-reduce:transition-none bg-transparent data-[hover=true]:bg-default/40 min-w-8 w-8 h-8 absolute top-2 right-2 text-white" type="button"></button><code class="hljs language-javascript"><span class="hljs-keyword">function</span> <span class="hljs-title function_">checkForUpdates</span>() { <span class="hljs-keyword">const</span> release = <span class="hljs-title function_">fetchAuth0Releases</span>(); <span class="hljs-keyword">const</span> message = <span class="hljs-string">`New Release: <span class="hljs-subst">${release.name}</span>\n<span class="hljs-subst">${release.html_url}</span>`</span>; <span class="hljs-title function_">sendToSlack</span>(message); } <span class="hljs-keyword">function</span> <span class="hljs-title function_">fetchAuth0Releases</span>() { <span class="hljs-keyword">const</span> url = <span class="hljs-string">'https://api.github.com/repos/auth0/auth0.js/releases/latest'</span>; <span class="hljs-keyword">const</span> response = <span class="hljs-title class_">UrlFetchApp</span>.<span class="hljs-title function_">fetch</span>(url, { <span class="hljs-attr">headers</span>: { <span class="hljs-string">'Accept'</span>: <span class="hljs-string">'application/vnd.github.v3+json'</span> } }); <span class="hljs-keyword">const</span> json = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(response.<span class="hljs-title function_">getContentText</span>()); <span class="hljs-keyword">return</span> json; } <span class="hljs-keyword">function</span> <span class="hljs-title function_">sendToSlack</span>(<span class="hljs-params">message</span>) { <span class="hljs-keyword">const</span> webhookUrl = <span class="hljs-string">'YOUR_SLACK_WEBHOOK_URL'</span>; <span class="hljs-keyword">const</span> payload = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>({ <span class="hljs-attr">text</span>: message }); <span class="hljs-title class_">UrlFetchApp</span>.<span class="hljs-title function_">fetch</span>(webhookUrl, { <span class="hljs-attr">method</span>: <span class="hljs-string">'post'</span>, <span class="hljs-attr">contentType</span>: <span class="hljs-string">'application/json'</span>, <span class="hljs-attr">payload</span>: payload }); } |
結論
この方法を使用することで、Auth0のリリース情報を自動的に取得し、Slackに通知する仕組みを簡単に構築できます。GASを利用することで、特別なサーバーを用意することなく、手軽に実装できるのが大きな利点です。Webhook URLを適切に設定し、トリガーを設定することで、定期的に最新情報を受け取ることが可能になります。
補足メモ
取得してきた履歴は追いたいので、スプレッドシートに自動的に出力するような機能を併せて実装しても良いかもしれません。