[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が不安定なのか、よくダウンしてしまうので、あまり使い物になりません。