サーバ・Gitブランチ管理ツールつくりました
最近プロジェクトの開発環境を徐々に変えていまして、いままでは複数の案件の変更をstagingブランチにまとめたうえで1台の動作確認用サーバにデプロイしていたんですが、やっぱり案件ごとに確認したいだろうということで案件の数だけサーバを用意してそれぞれに案件のブランチをデプロイする環境に移行しています。
しかし、こういう体制に移行しようという話が出た時からの懸案事項がありました。
つまり、どのサーバにどのブランチがデプロイされているのか混乱しないのかと
うっかり他の人が使っているサーバにデプロイしてしまっては、殴り合いが起きかねません。大変です。
これを解決するために、現在各サーバにデプロイされているブランチを一覧できるツール Pigeonholeをつくりました(真の目的はScalaの練習だったりするんですが)
このツールでは下の図のような表形式でサーバとブランチの対応関係を表示します
Pigeonholeのポイントはこの対応関係の登録方法です
PigeonholeではHTTPのPOSTリクエストを受け付ける口を持っていて、そこにJSON形式でホスト名とブランチ名の対応関係を投げることによって登録が行われます
これによって、CIでデプロイしたあとにPigeonholeにリクエストを投げることによって自動的に登録、更新を行うことができます
HTTPリクエストは以下のような感じ
curl -X POST -d Payloads={\"host\":\"${HOST_NAME}\"\,\"branch\":\"${BRANCH_NAME}\"} http://<Pigeionholeのホスト>:<ポート>/hook/deploy
今はプロジェクトで試験稼働中です