capistranoを使用してRoRアプリケーションをデプロイしています。コードベースはgitリポジトリにあり、ブランチは開発で広く使用されています。Capistranoはdeploy.rb
その設定にファイルを使用し、そのうちの1つはデプロイ元のブランチです。
私の問題はこれです:masterから新しいブランチAを作成するとします。デプロイファイルはマスターブランチを参照します。これを編集して、Aをテスト環境にデプロイできるようにします。機能の作業を終了し、ブランチAをmasterにマージします。Aからのファイルはより新しいので、マージされ、マスターブランチ内でAを参照します。もう一度編集します。deploy.rb
deploy.rb
これは一見不要な手動編集の多くです-パラメータは常に現在のブランチ名と一致する必要があります。その上、毎回設定を編集することを忘れがちです。
このプロセスを自動化する最良の方法は何でしょうか?
編集:判明誰かがすでに私が必要な正確に何行っていました:
今朝、私はgitリポジトリのブランチをステージングサーバーにデプロイする機会がありましたが、その方法については最もわかりにくいものでした。capistranoソースコードをざっと検索したところ
:branch "branch_name"
、デプロイスクリプトでset を使用できることがわかりました 。試してみましたが、うまくいきました。次に、すべてのブランチで同様の変更を行う必要があると考えました。もちろん、私は怠惰な芝生なので、もっと良い方法がないのではないかと思いました。gitに慣れていない場合、gitブランチコマンドの出力は、ローカルマシンで現在チェックアウトされているブランチをアスタリスクでマークしたブランチのリストです。例えば:
> git branch * drupal_authentication fragment_caching master
そのため、出力を解析し、currentとしてマークされたブランチを検索した場合はどうなるかを考えました。
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
これで、ローカルマシン上の現在のブランチを単一の共有されたデプロイスクリプトからデプロイできるようになりました。