Minaでデプロイした際にIRCへ通知する
minaでデプロイした際にIRCへ通知を行う様にしたのでその際の対応のメモ。ゴールとしては、IRCの任意のチャンネルにデプロイ開始時等にメッセージを流したいと思います。
そういえばIRCで流す文字に色を付けたい
上の様に貼った画像の様な形でIRC上に色つき文字で表示されると可視性も高くて良いのでStringIrc という便利GemをGemfile
に追加しておきます。
# Gemfile gem 'string-irc'
追加したら bundle install
します。
config/deploy.rb にIRC通知用のtaskを追加
minaの設定中に、IRC通知用の定義を追加します。今回、自分は下の様な形で書いてみました。
require 'string-irc' namespace :util do desc "#hoge IRC notice. (start)" task :irc_notice_for_start do messages = [ StringIrc.new('[hoge Deploy] Start!').white('orange').bold.to_s, "---> #{Time.now.to_s}", "---> Deploy to: #{domain} / Git: #{repository} / Branch: #{branch}" ] messages.each do |message| irc_notice '#hoge', message end end end
このタスク中にある、irc_notice
というメソッドは別途定義していますが省略します。役割的には任意のチャンネルに任意の文字列を通知できる様にしています。*1
試しにこのタスクだけ動作を確認したければ、
$ bundle exec mina util:irc_notice_for_start
で確認できます。
deployタスク中にIRC通知用タスク追加
上まで準備できたら実際にMinaの deploy
タスク中に上で新設したIRC通知用のタスクを追加します。
# config/deploy.rb # (中略) desc "Deploys the current version to the server." task :deploy => :environment do deploy do # Put things that will set up an empty directory into a fully set-up # instance of your project. invoke :'util:irc_notice_for_start' # ここを追加した invoke :'git:clone' invoke :'deploy:link_shared_paths' invoke :'bundle:install'
以上で準備が完了です。実際にMinaで
$ bundle exec mina deploy
とすれば、設定したIRCのチャンネルへデプロイ通知された上でデプロイが行われます。
*1:Ikachan環境があればそのホストに向けてPOSTする形