web-dev-qa-db-ja.com

このリリースが現在テストされている間、オープンリリースブランチを使用したホットフィックス

Gitflowを使用しており、現在オープンリリースブランチがあります。

Illustration

Aのリリースは現在、キーユーザーによるテストを受けるためのテストシステム上にあります。その間、緊急のホットフィックスをリリースする必要があります。通常、マスターのブランチ(つまり、最新のライブシステムリリース)を取り出して、開発とマスターにマージします。ここでこれを行うと、現在開いているリリースの修正プログラムはありません。

それで、「?」とマークされたポイントで何をしなければなりませんかイラストで?ホットフィックスがマージされる準備ができていると仮定します。

1
OddDev

はい、gitflowワークフローはこのシナリオを見逃しているようです。

修正プログラムブランチはマスターにマージされ、完了すると開発されます。しかしnotリリースブランチです!

リリースブランチが完了すると、マスターにマージされ、競合が発生したりバグが発生したりする可能性があるため、これは良いことではありません。

ホットフィックスの完了後に、マスターをリリースにマージすることをお勧めします。これにより、マスターで機能ブランチが最新になり、新しいリリースで修正プログラムをテストできます。

ただし、別の方法として、修正プログラムをマスター、開発、およびリリースブランチにマージすることもできます。リリースブランチ名は毎回変更されるため、これを自動化するのは難しいことがわかります。

(nb。多くの人はマージするよりリベースを好みますが、それには入りません)

**編集**

これが頻繁に発生していることに気付いた場合は、別の可能性があります。

  • ライブリリースを前のリリースにロールバックします。
  • 修正を次のリリースに追加する
  • 次のリリースで修正をデプロイする

当然、これにより古いバージョンがそのまま残りますが、常にホットフィックスを実行している場合は、テストおよびリリースプロセスに問題があることを示しています。

ホットフィックスではなくロールバックをプッシュすることは良いことです。バグやラッシュなしでホットフィックスリリースを完了するためのリリースがスムーズに行われると、誰もが幸せになりますが、ホットフィックスは本質的に問題をビジネスから隠します。ロールバックが必要な場合、これにより、テストと機能の完了により多くの時間を残すことにビジネスを集中させることができます。長期的には、これにより開発のスピードが上がる可能性があります。

3
Ewan

それを見つけた!実際、Atlassianは tutorial のブログ投稿 Vincent Driessen at nvie を参照しています。そして、何を推測しますか?彼が答えです!

ここでのルールの1つの例外は、リリースブランチが現在存在する場合、修正プログラムの変更を開発するのではなく、そのリリースブランチにマージする必要があることです。バグ修正をリリースブランチにバックマージすると、リリースブランチが終了したときに、最終的にバグ修正がマージされて開発にもなります。 (開発中の作業ですぐにこのバグ修正が必要であり、リリースブランチが終了するのを待つことができない場合は、バグ修正を開発に安全にマージすることもできます。)

章から ホットフィックスブランチの作成

2
OddDev

上記の@ewanの2番目の提案に沿って、この問題の解決は、「マスターには本番環境でisが含まれ、開発には本番環境に*デプロイできるものが含まれる」というnvieの当初のマントラには当てはまりません。

したがって、ホットフィックスは、Prodの実行を維持するために必須本番環境にデプロイする更新を反映します。

ホットフィックスが完了し、マージされ、デプロイされると、それはDevelopにマージされて戻されるため、Developには、実際にデプロイできるものが再び含まれます。

そして、修正プログラムはリリースにマージされます。

リリースブランチは長生きするべきではありません。

0
Rob Wells