パイプラインがトリガーとしてSubversionがコミットされるようになってから、継続的な統合と継続的な配信を行ってきました。最近、いくつかのプロジェクトで git-flow を使用してgitの使用を開始し、git-flowのどのブランチを使用して継続的な統合と継続的な配信パイプラインをトリガーするかを決定しようとしています。
以下に2つのアプローチを示します。
1。開発ブランチを使用
問題:git-flowでは、リリース(またはマスター)ブランチを実稼働環境にデプロイすることになっているため、2つの異なるパイプラインを構築する必要があります。1つは継続的統合(ブランチ開発)と1つは継続的配信(ブランチマスター)です。本番環境のバージョンは他の環境(統合、テスト、ステージング)のものと同じではないため、これにより本番環境にバグが発生する可能性があります。
2。マスターブランチを使用:
問題:この方法では、これらのブランチへの変更があまり頻繁にプッシュされないため、真に継続的な統合ができません。
パイプラインで使用する適切なブランチはどれですか?
Gitフローと継続的な統合は、定義上、互換性がありません。ブランチはdelaying integration:のメカニズムです。マスター(またはSubversionから来た場合はトランク)以外のブランチにコミットするとき、継続的な統合を避けています。継続的な統合は簡単ですが、簡単ではありません。
真実は2つの間にあります。厳密なCDパイプラインでgit-flowを採用する場合は、CIのリリースブランチを使用する必要があります。
基本的なアイデアは、Java MavenプロジェクトでのCI/CDに関するJohn Ferguson Smartのスライド(BDD in Action、Jenkins Definite Guide)に基づいています。
私の見解では、連続配信でgit-flowを適用する場合、最初のアプローチで述べたように2つの異なるパイプラインが必要です。
このアプローチをお勧めします:
1。ブランチの開発
2。マスターブランチ