バックグラウンド
そのため、先月の大部分を、MSDeploy、SSDT、およびTeamCityを使用してWebとDBの展開を自動化することに費やしました。唯一の問題は、デモンストレーションの目的で、私はトランクブランチからしか作業していないということです。言うまでもなく、このアプローチは、並行して開発作業を行う必要があると考えるとすぐに失敗します(SVNのブランチによって分離されます)。これは私が立ち往生していて、いくつかの助けを見つけることを望んでいるところです。
私たちの状況
- ソフトウェアの複数の同時バージョンをサポートする必要はありません
- 顧客は常に現在のバージョンを使用しています
私が思いついたもの(これまでのところ)
私が見ているように、ソース管理には実際には2つのブランチしか必要ありません。
- 現在:トランク-展開元
- 次へ:現在のイテレーションの開発ブランチ
新しい反復の開始時に、Currentは分岐します(その分岐をNextと呼びます)。そのイテレーションのすべての開発はNextにコミットされ、同時に、現在のバージョンに必要なバグ修正はCurrentにコミットされます。ある時点で、Nextは「完了」し、したがってCurrentにマージされます。
展開
デプロイメントに関する限り、Nextはどの環境にもデプロイされません。ただし、 Currentは、定期的な間隔(コミットごと、夜間など)でTeamCityによって内部環境に自動的にパッケージ化/デプロイされます。ある時点で、これらのパッケージの1つは「十分に優れている」と見なされ、したがって、(ステージング、本番環境を通じて)デプロイメントストリームをプッシュダウンします。
警告
前述のプロセスを考えると、NextをCurrentにマージすると、 Currentでの「コードのフリーズ」が保証されます。その間、新しいバグ修正をクライアントにリリースすることはできません。このバグフリーズは、 Currentがクライアントにリリースするのに「十分」であると見なされるまで続き、その時点でCurrentにタグが付けられ、プロセス全体が最初からやり直されます。
質問
- このアプローチ/考え方は合理的ですか?
- このアプローチはどこに当てはまりますか?
- これについてもっと良い方法はありますか?
洞察/文書化は大歓迎です。