“アジャイル”でリリース/ブランチを管理するリズム? [閉まっている]

StackOverflow https://stackoverflow.com/questions/250752

質問

クライアントのニーズとより一般的なロードマップのリズムで進化するソフトウェア製品があります。

SCRUMプロジェクト環境にいるため、新しい機能が製品に導入されることが非常に頻繁に発生し、次の選択に直面します。

  • すでにリリースされているブランチにこの機能を実装する(実際にはブランチを持つという点ではない)
  • 新しいブランチを作成します-しかし、その後3週間ごとにブランチがあり、もはやメンテナンスできません

新しい機能をリリースしないことはオプションではありません。クライアントは、必要な機能を取得するための長期的なマイルストーンプランを待ちたくありません。製品のコアを変更する必要があります...

この種の制約が与えられた場合、グッドプラクティスに関するフィードバックはありますか?

役に立ちましたか?

解決

現在の環境で使用する次のものをお勧めします。予定外の機能をセキュリティ修正のように扱います。

  • 予定されている各リリース(3.0、3.1など)は、独自のバージョン番号とソースコード内の独自のタグを取得します。リリース後は、触れないでください。
  • 計画的リリース後の新機能は、次の計画的リリース(例:3.2)に入ります
  • リリースされたバージョンのコードを変更する必要がある場合、それは" unplanned release"です。パッチのバージョン番号を取得します(例:3.1.1、3.1.2)。すべての変更:
    • そのリリースの最新のパッチに基づいて新しいブランチに実装します(3.1.1は3.1.0から作成され、3.1.2は3.1.1から作成されます)
    • すぐにtrunkにマージされるため、次の計画リリースにも入ります
  • 計画外の機能を実装した後、ブランチをタグに変更し(もうタッチしないでください)、トランクでの作業に戻ります。

この方法では、計画外の各機能がブランチを取得しますが、新しいリリースを作成してトランクにマージするのに十分な長さです。ほぼすべての作業を1か所(トランク)で行い、マージする作業はあまりありません。

他のヒント

( 'new_feature_branch')のような新しいブランチがあり、現在と互換性のない開発努力を実現しますブランチ( 'release_branch'など)

したがって、現在のrelease_branchがあまりアクティブでない場合は、新しい機能に使用できます(その新しい機能を開発する前に、そのプロセスをキャンセルして実行する必要がある場合に、ラベルを定義する この新機能の前の状態に戻る)

新しいブランチを作成することは、リリースブランチで定期的に(3週間ごとに)マージされてから除外されるという条件で、良いソリューションになります。 release_branchでいくつかのアクティビティがある場合(ホットバグ修正など)、特にお勧めします。その後、2つの作業を分離する必要があります。

基本的には、すべてはマージワークフローの定義に基づいています。

十分に対処しなかったと思われるいくつかのオプションを詳細に説明してほしい場合はコメントを残してください。

私のオフィスでは、通常、任意の時点で3つの支店で働いています。

  • リリース:これは、現在デプロイされているコードにタグが付けられて保存される場所です。重大なバグ修正を行う必要がある場合は、ここで作業を行います。デプロイされると、通常、タグのホットフィックス部分を増やします(つまり、1.19.0-> 1.19.1)。
  • QA:これは、顧客の準備をしているコードにタグを付けて保存する場所です。このブランチは、新しい作業を開始するときに使用され、次の配信に備えてQAによって現在テストされているコードがあります。
  • メイン:ここですべての新しい作業が行われます。

まれに、4行目で開発する必要がある場合(非常に厳しいリリーススケジュールのため)、サンドボックスコード行をときどき開きます。より一般的には、1人の開発者が単独で作業し、メインラインがクリアされるまでチェックインしません。

上記の分岐戦略では、すべてのスプリントの終わりに配信することで、機能を大幅に変更することができました。

あなたが本当にスクラム環境に住んでいるようには思えません。スクラムは、すべてのスプリントの終わりにチームが完了していることを必要とします。したがって、数週間ごとに、完全にテストされ、実行されている、潜在的に展開可能なシステムが必要です。

これを行う唯一の方法は、顧客と開発者の両方のテストの包括的な完全自動化スイート(エクストリームプログラミングの処方箋など)を持つことです。

この場合、なぜブランチが必要なのかわかりませんが、なぜメンテナンスできないのか理解できません。私の経験では、ブランチの寿命が短いほど良いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top