Kōenji

とうきょうとすぎなみく

Capistrano でデプロイ時に ChatWork に通知する拡張書いた

Capistrano でデプロイ時にデプロイの開始/終了/失敗を ChatWork に通知する拡張書いた

mitukiii/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 を参考にした