鳩舎

レースしない

リリース先輩というIRCボットを作った

こんにちは、皆さんgit使いこなしてますか?僕は全然です。

ところでgit個人的に使う分にはいいですけど、会社の許可取るのとかは大変ですよね。できる限りSVNで管理したい。

ということでとあるチームではgitで基本的にソースコードを管理して、デプロイ時はsvnに置く、というようなことをしています。なんだか二度手間な感じもしますが、まぁやっておけばいいのであればやっておきましょう。

ところがどっこいgit-svnはとてもめんどくさい。めんどくさいしgitに慣れきった人間はsvnでコミットすることができない。できないなら機械に任せよう。

ということでどうせ毎回同じ事をするので「リリース先輩」というIRCボットを作って、先輩によろしくやってもらうことにしました。

リリース先輩

IRC

rosylilly: release_senpai: 先輩、リリースの準備お願いします!
release_senpai: ちょいまち
... 処理中 ...
release_senpai: 用意できた。投入内容をここに書け んでdiffはこっち

というような、簡単なやりとりでgitのmasterブランチからリリースタグを切ったりsvnに同期したりといろんなことをしてリリースの下準備をしてくれるのが、このリリース先輩です。

本番同期がIRCで出来るのはさすがに危険なので、そんな機能は積んでいません。

わざわざIRCボットにする理由

誰かがリリースタグを切ったという事実を認識するのも大事ですが、それ以上に僕は「リリースはなんとなく楽しいものでなくてはならない」と思っています。

だからこそ自動化して達成感への到達を最短にするのだし、わざわざ話しかけるような書き方でも反応するようなボットにしました。

リリース先輩は簡単なキーワードに反応して動いているだけなので、実際のところキーワードの単語だけ投げてもいいのですが、あえて口語にして、反応もそれとなく砕けた感じにして、わざわざ「先輩」なんて名前をつけることで、ちょっぴり楽しくしてしまおうということです。

リリース権限の付与ももちろんIRC上から出来るようになっており、このやりとりも機械的なものではないようにしました。

member: release_senpai: 新しく加入した新人です!今後よろしくお願いします!
release_senpai: こいつ誰? > rosylilly
rosylilly: release_senpai: あ、そいつは後輩のmemberッス。面倒みてやってください!
release_senpai: そうなん?じゃあよろしく

というような流れで先輩にmemberくんを覚えてもらうことで、memberくんのリリースコマンドが今後実行されるようになります。ぶっちゃけちょっぴりめんどくさい手続きですが、なんとなく面通しっぽくて楽しいので、これでいいのです。

なかでやってること

  • git clone repo_uri --depth 1
  • git ls-files | xargs cp svn_dir
  • svn commit
  • svn cp trunk branche
  • git tag release

みたいなことやってます。

ということで

RubyやNode.jsを使えば簡単にIRCボットが作れるので、ぜひチャレンジしてみてくださいね!