[ReverseHTTP][sinatra][github] ReverseHTTPを使って、githubにPushしたら自動的にデプロイする仕組みを作った

とても簡単ですが、ReverseHTTPとgithubのwebhookの機能を利用して、githubにPUSHしたら自動的にpullしてデプロイする仕組みを作ってみました。

ReverseHTTPとは、簡単に言うとインターネットにポートを公開できないような環境の端末からでも、HTTPの待受をできるようにする仕組みです。これで社内のFWに隠されたPCから、インターネットにHTTPサーバを公開できるぜ!!ということです。

今回作ったものは、一般ユーザの権限しかなくてHTTPを公開できない環境で、githubのwebhookをキックに利用してデプロイするということを目的としています。

スクリプトは、以下です。

HOOKURL_APPNAME を適切なものに置きかえてもらって、githubの管理画面から、そのURLを設定してもらえればOKです。例えば、スクリプト通りに "reverse-http-app-name" と設定している場合は、

http://reverse-http-app-name.www.reversehttp.net/

を、githubの Admin-ServiceHooks-PostReceive URLs に設定すれば、有効になります。

あとは、RAILS_ROOTで、そのコマンドを実行するだけです。

hookoutとsinatraで、作れました。

hookout [ http://github.com/paulj/hookout ] は、ReverseHTTPを簡単に利用できるようにしてくれるgemです。とってもよくできていて、簡単にReverseHTTPを利用することができました。
sinatraは、ご存知でしょう。シンプルなWebアプリケーションフレームワークです。

ご覧の通り20行足らずのコードで、githubを利用した自動デプロイの仕組みができました。

しかし、残念ながら、ReverseHTTPが不安定なのか、よくダウンしてしまうので、あまり使い物になりません。