読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

Travis CI と Slackを連携させてみた

Travis CI CI Slack

f:id:secret_hamuhamu:20151002053012j:plain
タイトル通りですが、Travis CI と Slackを連携させてみました。
連携させることで、何が嬉しいのかというとビルドの成功や失敗をレポーティングできます。
こんな感じに。
f:id:secret_hamuhamu:20151002052548p:plain

では何故、メールではなくSlackと連携するのかというとビルド失敗時に"早く気付ける"からです。
メールだと反応が遅れたりするかもしれませんが、チャットツールのSlackならいち早く気づくことができます。

環境構成

  • PHP >= 5.4
  • PHPUnit

Travis CIとは?

Travis CIは、GitHubにあるリポジトリに対してCIすることができるサービスです。
publicなリポジトリなら無料で使うことができるので、どんどん使いましょう!

あとは、現在のビルド結果ステータスやカバレッジ率のバッジを作れます。
こんなやつ↓
Build Status

見たことありますよね?
GitHub上で公開されているOSSなどは、必ずと言っていいほどついています。

OSSのプロダクトにおいて、結構コレは重要です。
現在のビルド結果ステータスがfailしているものを、あなたは使いませんよね?
また、カバレッジ率が異常に低いものも使いたくないです。

ちゃんと、ビルド結果ステータスがpassしててカバレッジ率もそこそこ高いのであれば安心できます。
もし、本格的にプロダクトを公開するのであれば、必要最低限の情報で、それがなければ見向きもされません。


OSSではなく、仕事で書いてあるコードであれば、バッジは必要なくとも現在のビルド結果ステータスやカバレッジ率を定常的にウォッチできる仕組みが必要というところは同じです。

Travis CIの設定

Travis CIのwebページに行って、CIしたいリポジトリを選択してください。
f:id:secret_hamuhamu:20151002052641p:plain


歯車を、押下するとこんな感じの画面になります。
f:id:secret_hamuhamu:20151002052657p:plain

設定は、よしなにしてください。
Push時にビルドを回したりPull Request時にビルドを回したり、環境変数の設定ができます。

Travis CI側の設定は、以上になります。

.travis.ymlの設定

TravisCiTest というTravis CIの練習用リポジトリを作りました。
Forkして使っていただいても構いません。

.travis.yml という、Travis CIをでビルドを実行するためのレシピを作ります。
.travis.yml がない場合は、Travis CI側のデフォルトのビルドが実行されます。

サンプルとして貼っておきます。
結構細かに、設定できるので詳しくはドキュメントを参照ください。

language: php
php:
- 5.4
- 5.5
- 5.6
- nightly
before_script:
  - composer install --dev
  script: phpunit --bootstrap bootstrap.php tests/

ちなみに、 .travis.yml の構文チェックを Travis WebLint というサービスで行うことができます。
結構、便利です。

Slackの設定

まず、通知を受けたいチャンネルを作成しておくこと。
次にTravisci CI と 連携するためにSlackの Integrations (https://ほげほげ.slack.com/services/new)からTravis CIを選択。

.travis.yml にSlackのトークンを記述する必要があるが、そのまま記述してしまうと漏洩するとトークンが漏洩します。
トークンが漏洩すると多分だけど、なりすましのビルド通知を受け取ってしまう恐れがある。

なので、トークンを暗号化するために travis コマンドを使う。
travisコマンドのインストールについては、割愛。


Encrypting your credentials に表示されている travis encrypt コマンドを実行してください。
.travis.yml にSlackの notifications の設定が追加されているはずです。

以上で、必要な設定が完了しました。

CIしてみる

では、リポジトリにPushしてみましょう!
Slackにこんな感じで、通知が来ます。
f:id:secret_hamuhamu:20151002052548p:plain


素敵やん。



Travis CI の BuildHistoryからビルドの実行履歴が見れたり、ビルドに失敗したjobを選択することで、失敗の原因を確認できます。
f:id:secret_hamuhamu:20151002052729p:plain


バッジが欲しい場合は、赤枠で囲っているところを選択するとMarkdownなどで扱えます。
f:id:secret_hamuhamu:20151002052818p:plain

おすすめの本

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

  • 作者: David Farley,Jez Humble,和智右桂,高木正弘
  • 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
  • 発売日: 2012/03/14
  • メディア: 大型本
  • 購入: 24人 クリック: 567回
  • この商品を含むブログ (53件) を見る

継続的インテグレーション入門

継続的インテグレーション入門

  • 作者: ポール・M・デュバル,スティーブ・M・マティアス,アンドリュー・グローバー,大塚庸史,丸山大輔,岡本裕二,亀村圭助
  • 出版社/メーカー: 日経BP社
  • 発売日: 2009/08/06
  • メディア: 単行本
  • 購入: 18人 クリック: 388回
  • この商品を含むブログ (37件) を見る

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール