はじめに私は、まさにこれをサポートするサービスであるCodeship(https://codeship.io )の創設者の1人です。
しかし、トピックについては、基本的にこれを実装できると思う2つの異なる方法があります(私が使用するすべてのブランチ名は任意であり、まったく異なる名前を付けることができることに注意してください)。
ステージング/プロダクションを一度に
マスターまたは特定のデプロイブランチにプッシュするたびにテストを実行し、それらすべてが最初にステージングアプリにデプロイすることに合格した場合は、個別のテストを実行し(Seleniumまたはソースラボはそのために最適です)、移行を含めてうまくいく場合は、本番アプリにプッシュします。
最新バージョンは常に本番環境で利用可能であり、このサイクルを長い間使用しているため、これは素晴らしいことです。私たちにとって素晴らしい作品です。欠点は、ステージングherokuアプリへのプッシュに時間がかかることです。本番データのコピーに対して移行を実行する場合は、さらに時間がかかります。永遠ではありませんが、数分かかります。
個別のステップとしてのステージング/本番
それぞれのherokuアプリケーションにデプロイされる個別のステージング/本番ブランチを持つことができます。これには、より高速で、特定のパーツをいつリリースするかを制御できるという利点があります。特に、本番環境にデプロイする前に外部フィードバックが必要なアプリケーションの場合、これはうまく機能します。
Railsonfireではそのすべてをサポートしていますが、現在、はるかに優れた新しいバージョンのサービスに取り組んでいます。私たちはHerokuと非常によく統合されているので、それについて考える必要はありません(ただし、自分で好きな方法でそれを行うオプションがあります)