Capistrano でデプロイ時に ChatWork に通知する拡張書いた
Capistrano でデプロイ時にデプロイの開始/終了/失敗を ChatWork に通知する拡張書いた
使用しているイメージ
使い方
Gemfile
にライブラリを追加
group :development do gem 'capistrano-chatwork', require: false end
config/deploy.rb
でライブラリを読み込み
require 'capistrano-chatwork'
ChatWork の API トークンと通知先の room_id を設定
set :chatwork_api_token, 'YOUR_API_TOKEN' set :chatwork_room_id, 'YOUR_ROOM_ID'
設定
以下の変数が使える
設定が必須の変数
chatwork_api_token
- ChatWork の API トークン
デフォルトはENV['CHATWORK_API_TOKEN']
chatwork_room_id
- 通知先の room_id
メッセージをカスタマイズするための変数
chatwork_deploy_started_message
- デプロイ開始時のメッセージ
デフォルトは"#{user} is deploying #{deployment_name} to #{rails_env}"
chatwork_deploy_finished_message
- デプロイ終了時のメッセージ
デフォルトは"#{user} finished deploying #{deployment_name} to #{rails_env}"
chatwork_deploy_failed_message
- デプロイ失敗時のメッセージ
デフォルトは"#{user} failed deployment of #{deployment_name} to #{rails_env}"
メッセージ内で使えるメソッド
メッセージをブロック(Capistrano 3.x 系の場合は Lambda)で設定すれば以下のメソッドをメッセージ内で使うことが出来る
user
- git の設定または環境変数から取得deployment_name
- capistrano の branch 変数と/あるいは application 変数から取得rails_env
- capistrano の rails_env 変数から取得
メッセージの設定例
Capistrano 2.x 系
set(:chatwork_deploy_started_message) { "#{user} が #{deployment_name} を #{rails_env} にデプロイ開始しました" } set(:chatwork_deploy_finished_message) { "#{user} が #{deployment_name} を #{rails_env} にデプロイ完了しました" } set(:chatwork_deploy_failed_message) { "#{user} が #{deployment_name} を #{rails_env} にデプロイ失敗しました" }
Capistrano 3.x 系
set :chatwork_deploy_started_message, ->{ "#{user} が #{deployment_name} を #{rails_env} にデプロイ開始しました" } set :chatwork_deploy_finished_message, ->{ "#{user} が #{deployment_name} を #{rails_env} にデプロイ完了しました" } set :chatwork_deploy_failed_message, ->{ "#{user} が #{deployment_name} を #{rails_env} にデプロイ失敗しました" }
その他
Capistrano 2.x 系でも 3.x 系でも動くようにするのに少し苦労した
capistrano-resque を参考にした