図解: Travis CIの結果をSlack通知する方法


とても参考になる記事

いい記事がすでにあるのになぜ書くのか?

個人的に、Slackの設定画面やメニューを選択するときに、いつもどこにあるか迷ってしまって時間がかかるので、
そうならないように、画像多めでやり方をメモします。

あと、破壊的な.travis.ymlの変更をせずにする方法の紹介です。

本題

まずは、ブラウザで https://<slack-team-name>.slack.com/apps を開きます

(僕の場合はぼっちチームなので<slack-team-name>が「nwtgck」というチーム名になので、https://nwtgck.slack.com/apps です)

「travis」と打ち込ので、出てきた「Travis CI」をクリックします

クリックすると、以下の画面になるので、緑色のボタン[Add Configuration]をクリックします

チャンネル選択画面になります

(任意)新しいチャンネルを作りたい場合は、
青字のリンク「or create a new channel」をクリックします。すると以下の画面になるので、今回は#ciチャンネルと言う名前でチャンネルを作りました

通知先のチャンネルを選択して、[Add Travis CI integration]をクリックします

クリックすると、以下のような画面になります

この画面にをスクロールするとTokenがあるのでどこかにコピーします
あとで使います


(Tokenが丸見えで心配な方もいらっしゃるかもしれませんが、Regenrateしたので大丈夫なはずです)

今度はターミナルを開いて

$ gem install travis
$ travis login # ユーザー名とパスワードを入力してください
$ travis encrypt -r <github-username>/<repo-name> "<slack-team-name>:<token>"

そして、以下のtravis encryptの出力結果のsecure: "R2ZgE3wUsc..の箇所を使って、

Please add the following to your .travis.yml file:

  secure: "R2ZgE3wUsc...(省略)....

.travis.yml`に下記を追記します

.travis.yml
...(略)...
notifications:
  slack:
    secure: "R2ZgE3wUsc...(省略)....

notificationsキーは.yamlの直下に配置する感じです)

具体的にはtravis encryptのところは、以下ような感じです。
travis encrypt -r nwtgck/hspec-prac-haskell "nwtgck:XXXXXXXXXXXX"
(僕の場合はGitHubのユーザー名とSlackのチーム名が一緒なので注意してください)

これで完了です。次pushした時に、Slackに通知が来てたら成功です。

おまけ

メール通知無効化設定

.travis.ymlemail: falseを追加すればメール通知をオフにできます。

.travis.yml
...(略)...
notifications:
  email: false
  slack:
    secure: "R2ZgE3wUsc...(省略)....

破壊的な.travis.ymlの更新について

travis encrypt--add notifications.slackオプションを付けて、プロジェクトルートで実行すると、自動的にnotification.slack.secure項目を追加しくれるのですが、.travis.ymlのコメント等が消えてしまうので、避けています。

Tokenが後から欲しい時

Tokenの画面を閉じってしまったときに、どうやって辿ればいいかです。
作ったときと最初だけ同じ感じです。

まず、ブラウザで https://<slack-team-name>.slack.com/app を開きます。
「travis」と打ち込んで、出てきた「Travis CI」をクリックします

クリック後にこの画面になったら、スクロールして、

(レスポンシブデザインなので、画面サイズによっては、スクロールせずに下のえんぴつボタンが押せます)

以下のえんぴつボタンを押せば、Tokenの手に入る画面に行きます。