続いて、GitHubとSNSの連携を行います。
GitHubで通知を行うリポジトリの設定画面を開き「Integrations & services」を選択します。今回は「sample」というリポジトリを用意しました。
「Add service」から「Amazon SNS」を選択します。
先ほど作成したSNS Topicの「Arn」、および、IAMユーザーのセキュリティ認証情報を入力します。
これでGitHubとSNSの連携は完了です。
GitHub API Hooksを見れば分かりますが、GitHubからSNSへ通知可能なデフォルトイベントは「Push」のみとなっていて、必要に応じてGitHub APIをコールしイベントを追加する必要があります。今回は「Issue Comment」を追加してみます。
{ "name": "amazonsns", "events": [ "push" ], "supported_events": [ "commit_comment", "create", "delete", "deployment", "deployment_status", "download", "follow", "fork", "fork_apply", "gist", "gollum", "issue_comment", "issues", "member", "public", "pull_request", "pull_request_review_comment", "push", "release", "status", "team_add", "watch" ], "title": "AmazonSNS", "schema": [ [ "string", "aws_key" ], [ "string", "sns_topic" ], [ "string", "sns_region" ], [ "password", "aws_secret" ] ] }
まずはWebHook APIをコールするためのトークンを取得します。「Personal Access Tokens」にアクセスし「Generate new token」を選択します。
トークンを識別する文言とトークンのスコープを選択します。今回は私個人のリポジトリが対象であるためスコープは「admin:repo_hook」としましたが、必要に応じて適切な権限を選択してください。
トークンが表示されるので控えておきます。
続いて、通知を行うGitHubリポジトリのHook IDを確認します。
ターミナルなどから下記のコマンドを実行します。「YOUR_TOKEN」には1つ前の手順で確認したトークンを入力し、「OWNER」と「REPOSITORY_NAME」は適宜GitHubの情報で置き換えてください。
curl -X GET -s -H "Authorization: token YOUR_TOKEN" \ https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks
実行結果の「id」がHook IDです。
[ { "type": "Repository", "id": ********, "name": "amazonsns", "active": true, "events": [ "push" ], "config": { "aws_key": "********", "aws_secret": "********", "sns_region": "ap-northeast-1", "sns_topic": "arn:aws:sns:ap-northeast-1:************:github" }, "updated_at": "2017-08-19T06:53:53Z", "created_at": "2017-08-19T06:53:53Z", "url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID", "test_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/test", "ping_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/pings", "last_response": { "code": 0, "status": "unused", "message": "Unused" } } ]
最後に、Integrations Eventの設定を行います。HOOK_IDは取得したものに置き換えてください。
curl -X PATCH -s -H "Authorization: token YOUR_TOKEN" \ https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID \ -d '{"active": true, "events": ["push", "issue_comment"]}'
実行結果の「events」に「issue_comment」が追加されていたら完了です。
{ "type": "Repository", "id": ********, "name": "amazonsns", "active": true, "events": [ "issue_comment", "push" ], "config": { "aws_key": "AKIAIXD6KKDO5LYIT2GA", "aws_secret": "********", "sns_region": "ap-northeast-1", "sns_topic": "arn:aws:sns:ap-northeast-1:************:github" }, "updated_at": "2017-08-19T08:28:06Z", "created_at": "2017-08-19T06:53:53Z", "url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID", "test_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/test", "ping_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/pings", "last_response": { "code": 0, "status": "unused", "message": "Unused" } }
Copyright © ITmedia, Inc. All Rights Reserved.