Alligator Swamp

技術メモ

HerokuにHubotをデプロイしてSlackと連携&Travis CIで自動デプロイ

やること

  • Heroku上でHubotを動かす
  • SlackとHubotを連携する
  • Hubotリポジトリに変更があればTravis CIに検知させて自動デプロイ
  • デプロイ完了したらSlackに通知

以上を無料枠で

前提

  • Mac OSX
    • 開発環境として使用
  • 以下のアカウントは作成済み
  • HerokuのBillingは設定済み
    • Add-onsを使用するために必要
  • GitHub上にHubot用のリポジトリを作成済み

Hubotを作成

必要なアプリケーションをインストール

brew install node redis
npm install -g hubot coffee-script

Hubotの雛形を作成 (名前はお好みで)

hubot --create foobar-hubot
cd foobar-hubot

Slack用のアダプターを追加

npm install hubot-slack --save

Slack用のアダプターを使うようにProcfileを書き換え

vim Procfile
web: bin/hubot --adapter slack

GitHubにpush

git init
git add .
git commit -m "create"
git remote add origin (リポジトリURL)
git push -u origin master

Herokuにデプロイ

HerokuのCLIツールをインストール

brew install heroku

CLIツールの初期設定

heroku login

Herokuアプリの作成

heroku create --stack cedar (アプリ名)

ワーカプロセス数の設定とアドオンの追加

heroku ps:scale web=1
heroku addons:add redistogo:nano

HerokuアプリのURLを設定

heroku config:add HEROKU_URL=*****

SlackのIntegrationsでHubotを追加

f:id:waniji:20140826003419p:plain:w150

Setup Instructionsに表示された設定をHerokuに追加

heroku config:add HUBOT_SLACK_TOKEN=*****
heroku config:add HUBOT_SLACK_TEAM=*****
heroku config:add HUBOT_SLACK_BOTNAME=(ここは任意)

HerokuにHubotをデプロイ

git push heroku master

SlackにHubotのURLを追加して完了

f:id:waniji:20140826003808p:plain

Travis CIを使って自動デプロイ

Travis CIのProfileでHubotのリポジトリを有効化

f:id:waniji:20140826003927p:plain

Travis CIのCLIツールをインストール

gem install travis

リポジトリにHeroku用の設定

travis setup heroku

.travis.ymlの先頭にnode.js用の設定を追記

vim .travis.yml
language: node_js
node_js:
    - '0.10'

.travis.ymlをGitHubにpush

git add .
git commit -m "add .travis.yml"
git push origin master 

HubotがデプロイされたらSlackに通知

SlackのIntegrationsでHerokuを追加

f:id:waniji:20140826004052p:plain:w150

通知させるチャンネルを指定

f:id:waniji:20140826004120p:plain

Setup Instructionsに表示されているコマンドを実行する

heroku addons:add deployhooks:http --url=*****

参考にさせていただいた記事