CapistranoのデプロイをSlackに通知する
CapistranoとSlackを連携して、CapistranoのデプロイをSlackに通知させてみました。
RubyGemsであるcapistrano-slackifyを利用して、通知を行います。
Capistranoが導入されていることを前提に今回の記事を書いています。
まだ導入していない方は、以下の記事を参考に導入までを行ってみてください。
開発環境
・capistrano 3.10.0
・デプロイ元: ローカルのMac
・デプロイ先: Vagrant(CentOS7)
capistrano-slackify導入
Gemfileにcapistrano-slackifyを記述。
group :development do gem "capistrano", "~> 3.10" gem "capistrano-slackify" end
capistrano-slackifyをインストール。
$ bundle install
capistrano-slackifyの導入確認。
$ bundle list Gems included by the bundle: * capistrano (3.10.0) * capistrano-slackify (2.9.0)
Capfileに以下を追加。
require "capistrano/slackify"
Slack設定
Slackでワークスペースを作成。
https://slack.com/
デプロイ通知を送るチャンネルを作成。今回は#リリースを作成しました。
以下サイトにアクセスして通知に必要なWebhook URLを取得します。
https://slack.com/services/new/incoming-webhook
チャンネルを指定して、「Add Incoming WebHooks integration」を押下するとWebhook URLが表示されます。 後で利用するため、コピーしておいてください。
config/deploy.rbに以下を記述。
Webhook URL作成時にチャンネルを指定したのですが、#generalに通知されてしまい、明示的に#リリースを指定することで解決。
set :slack_url, "[Webhook URL]" set :slack_channel, "#リリース"
デプロイをSlackに通知
Capistranoでデプロイ。
$ bundle exec cap develop deploy
デプロイ開始と結果が#リリースに通知されます。
この画像では、開始と成功の通知が表示されてします。
失敗した場合はこのように通知されます。
通知をカスタマイズ
デフォルトの通知内容だと少し味気ないので、 絵文字とテキストをカスタマイズしてみます。
config/deploy.rbに以下を追記。
# デプロイ開始時 set :slack_emoji, ":pray:" set :slack_username, "Capistrano < お願いします!!いっけー!!" # デプロイ成功時 before 'slack:notify_finished', :deploy_success do set :slack_emoji, ':dancers:' set :slack_username, "Capistrano < すごいー!!やったねー!!" end # デプロイ失敗時 before 'slack:notify_failed', :deploy_failure do set :slack_emoji, ':imp:' set :slack_username, 'Capistrano < あかんやつやっ!!' end
カスタマイズ結果。
先程と違い、デプロイが少し楽しくなりますね。デプロイ開始の成功してくれー!と祈ってるアイコンがお気に入りですw
まとめ
Slackで作成したWebhookURLをCapistrano側に渡すだけなので、比較的簡単に連携ができました。 デプロイ結果をslackに通知することで、チーム内の生産性も上がりそうですね。
参考
Capistrano の Slack 通知で、デプロイ開始・成功・失敗時の emoji を変える | blog: takahiro okumura