ども、amo-kです。 先日デプロイ時に実況中継するIRCボットを作ったのでこれについて。 KLabでは通常、 テスト/本番環境に最新のプログラムソースコードを反映する際に 以下のような手順を踏む。 1.踏み台サーバにログイン 2.SVN Export 3.アーカイヴ作成 4.テスト/本番環境にアーカイヴをアップロード 5.テスト/本番環境のコマンドを実行し、アーカイヴ解凍、各Webサーバに同期 6.お掃除 通常はこれを1コマンドで実現するためにデプロイスクリプトを書いて そのスクリプトを実行する事でデプロイすることとなる。 その際に、デプロイした人はターミナルをチェックしていれば スクリプトの標準出力で進捗を把握できるが、たの案件メンバは解らない。 そこで、デプロイ実況中継をするIRCボットを作ってみた。 今回は特定のキーワードに反応したり、待機する必要がないので 各ステータス毎にIRCサーバに接続、チャンネルJOIN、レポート、切断ということをする 非常に単純なボットを作った。 以下、IRCクライアント画面サンプルとサンプルソースコード 工夫した点は特に無いが、ライブラリを使わずに TCPコネクションを張ってIRCサーバと通信している点が若干特徴的かもしれない。 IRCクライアント画面キャプチャサンプル
デプロイ時に実況中継するIRCボット


サンプルコード
#!/usr/bin/ruby

require 'socket'

chan = ARGV[0]
msg  = ARGV[1]

sock = TCPSocket.open("localhost", 6667)
sock.send("NICK DeployBot\r\n", 0);
sock.send("USER DeployBot localhost localhost :DeployBot\r\n", 0);
sock.send(sprintf("JOIN #%s\r\n", chan), 0);
sock.send(sprintf("NOTICE #%s :<-------------- %s -------------->\r\n", chan, msg), 0);
sock.send("QUIT\r\n", 0);
sock.readlines
sock.close

最初はphpで


を使って実装しようと思ったんだけど 実は踏み台サーバでsocket関数が有効になっていなかったので、設定するのが面倒でもうRubyで杜撰に書いちゃおうと思ってRubyで書きましたww