自宅でできる「一人DevOps」その4

docker-logo

こんにちは、伊藤忠テクノソリューションズの金子です。

この記事は自宅でできる「一人DevOps」その3の続きとなっています。

開発フローの見える化

前回までで、アプリケーションを継続的に開発、テストおよびリリースする環境が構築できました。開発者は新しい機能を実装したら、それをGithubにプッシュすることで、あとのテスト、リリースは自動で行われます。

しかし、テスト・リリースが正常に完了したということを知るにはどうすればよいでしょうか?あるいは、テストが途中で失敗してしまう可能性もあります。もちろん、テスト結果の確認のためにTravisCIにアクセスしたり、リリースの完了を確認するためにDocker Cloudのコントロールパネルや本番環境のアプリケーションそのものにアクセスするということはできますが、効率的ではありません。一人で開発している分には問題になりませんが、複数人で開発するときはテストやリリースの状況をリアルタイムに知ることは非常に重要です。

そこで今回は、Github、TravisCIおよびDocker Cloud上で発生する各種イベントを、チャットサービスのSlackにリアルタイムに通知する仕組みを作りたいと思います。

事前準備

Slackにアクセスして、新しいチームを作成しておいてください。チーム名は任意です。

Githubと連携させる

作成したチームの設定画面にアクセスします。以下のリンクにアクセスしてしてください。Slackチーム名の箇所はご自身のチーム名に置き換えてください。

https://Slackチーム名.slack.com/home

画面下部の「Add Applications」ボタンをクリックします。

slack-add-applications

連携するサービスを検索する画面に飛ぶので、検索ボックスに「Github」と入力し、Githubのボタンをクリックしてください。

Githubサービスの設定ページに来たら、以下の「Install」ボタンをクリックしてください。

slack-github-install

通知メッセージをSlackのどのチャンネルに送信するかを選択します。ここではデフォルトで作成されている「#general」を選択してください。チャンネルを選択後、「Add Github Integration」ボタンをクリックしてください。

slack-github-channel

Githubアカウントの認証を求められるので、「Authenticate your GitHub account」ボタンをクリックして認証情報を入力してください。

slack-github-authentication

Githubアカウントの認証が完了したら、「Integration Settings」の画面に飛びます。ここでは「Repositories」の項目だけ変更します。「angular-phonecat」を選択し、「Save Integration」ボタンをクリックして設定を完了してください。

slack-github-repositories

TravisCIと連携させる

基本的な手順はGithubと同じです。最後の「Integration Settings」まで来たら、「Token」の値をメモして「Save Settings」ボタンをクリックしてください。

slack-travisci-token

続いて、TravisCIの設定ファイルである「.travis.yml」を編集します。前回までの手順でローカル環境にangular-phonecatリポジトリがあると思いますので、そのリポジトリ内のファイルを編集してください。

編集内容は以下の通りです。ファイル末尾に追加してください。Slackチーム名の箇所はご自身のチーム名、Tokenの値の箇所は先ほどメモした値に置き換えてください。

編集内容をコミットします。以下のコマンドを実行してください。Githubへのプッシュはまだしないでください。

なお、上記のようにTokenの値をパブリックに公開するのは非常に危険です。Slackチーム名とTokenの値がわかると、誰でもそのSlackチームに対してメッセージを送ることができてしまうからです。TravisCIでは、こういった値を暗号化する仕組みを用意していますので、会社などで利用される場合にはこの仕組を利用してください。暗号化に関するドキュメントはこちらです。

Docker Cloudと連携させる

GithubとTravisCIはSlackとの連携の仕組みが標準で提供されていますが、Docker Cloudにはありません。連携が用意されていない場合は「Incoming WebHooks」を利用します。

これまでと同じ手順で、連携サービスの検索画面まで移動してください。検索ボックスに「incoming」と入れると、「Incoming WebHooks」というサービスが見つかりますのでこれをクリックします。

「Integration Settings」のページまで来たら、「Webhook URL」の値をメモして「Save Settings」ボタンをクリックしてください。

続いて、Docker Cloudにログインし、以下のアカウント情報ページにアクセスしてください。

Account info

画面左の「Notifications」をクリックしてNotification設定画面に移動し、「Slack」の横の「Add integration」ボタンをクリックします。

slack-dockercloud-notification

Webhook URLのところに先ほどメモした値を入力してください。これで連携完了です。

slack-dockercloud-webhook

Slackに通知が届くか確認する

ここまでの手順により、各種サービスからのイベント通知がSlackに送信されるようになりました。実際に通知が来るか試してみましょう。

Slackはブラウザだけでなく、iOS、Android用のスマホアプリ、Windows、Mac用のデスクトップアプリを提供していますので、これらの専用アプリをインストールしておくと良いと思います。とりあえず試すだけであれば、ブラウザから自身のSlackチームにログインしておいてください。

それでは、先ほどコミットした内容をGithubにプッシュしましょう。アプリケーション自体に変更は加えていませんが、前回までで構築したDevOps環境ではプッシュイベントをトリガーにテスト、リリースまで行うようになっているので、これで一通りの通知が確認できます。

以下の図はMacアプリで通知を受け取った場合の例です。

slack-messages

まとめ

Slackは開発者同士が気軽にコミュニケーションを取ることができるチャットサービスですが、こうしてDevOps環境に組み込むことで、開発フローの見える化をするツールとしても利用できます。日々改善を繰り返していくアジャイル開発において、今何が起きているかをチーム全員がリアルタイムに把握できる仕組みを用意することは非常に重要です。是非Slackの導入を検討してみてください。

Pocket

コメント

「DevOps」のイベント・セミナー

開催
DevOps時代のテクノロジー