次の方法で共有


DevOps マインドセットを使用して分岐戦略を選択する

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure DevOps で Team Foundation バージョン管理 (TFVC) を使用した DevOps を採用する予定ですか? 次のような疑問を抱くことでしょう。

  • 適切な分岐戦略をどのように判断するか?
  • DevOps に効果的な戦略があるのか?
  • 単一または複数のバージョンのアプリケーションをどのようにサポートするか?

TFVC は、コードを維持し、チームをより効果的にするための一元的なバージョン コントロール システムです。 コラボレーションと一貫性のあるコード共有、発行、レビュー機能を備えています。

シンプルな状態を保つ!

効果的な分岐戦略を採用することで、以下が可能になります。

  • "DevOpsd カルチャ" を育てる
  • コラボレーション フローを促進し、生産性を向上させる
  • チームがコードの開発に費やす時間を増やし、管理にかかる時間を短縮できるようにする

DevOps を採用する際は、ブランチ戦略をシンプルに保ち、高品質を目指すことが重要です。 以下に推奨事項をいくつか示します。

  • シンプルな戦略から始め、必要に応じて発展させる
  • ブランチに一貫性のある命名規則を使用する
    • 個人が実行する作業に対しては features/ユーザー名/説明 (例: features/sandra/sdk-java)
    • エンジニアリング バグに固有の作業に対しては bugfix/ユーザー名/バグ ID (例: bugfix/takashi/707)
    • 計画したリリースに対しては releases/バージョン (例: releases/V1.00)
  • 多くの場合、逆方向の統合 (RI) を使用して メイン ブランチにマージする
  • 一貫したコード レビュー (ガベージ イン、ガベージ アウト) を実施する
  • 以下を使用して、CI/CD パイプラインを実装します。
    • ゲート チェックイン
    • 自動テスト

シンプルな分岐戦略から始める

"出荷可能な" リリース ユニットを識別するソース管理構造を作成します。 "リリース可能なユニット" の概念は、この戦略の基本的な部分であり、Steve St Jean は次のように説明します。

  • バージョン管理と出荷の物理単位。
  • 分岐モデルとリリース モデルをサポートするプライマリ ユニット。
  • スイート レベル、アプリケーション レベル、または コンポーネント レベルを指定可能。
  • スイートの場合、すべてのアプリケーションで一緒にバージョンとパッチを適用する必要がある。 たとえば、Microsoft Word と Excel は Microsoft Office Suite の一部です。 Visio は、Microsoft Office Suite のその他の部分とは無関係にリリースまたはパッチを適用する場合があるため、これには含まれません。
  • TFVC では、チーム プロジェクト ノードの下のルート ノードとなる。
  • Git のリポジトリと同等に扱うことが可能

通常は、1 つの運用バージョンのみをサポートすることから始め、不具合の修正や新機能の開発を並行して行うことになります。 一般的な例としては、Web サイト、企業の基幹業務アプリケーション、中間ツールなどがあります。

シンプルなメインのみの分岐戦略から始めます。

最初のブランチ図

ビルドを自動化して、メイン ブランチへのすべてのチェックインでトリガーし、自動テストを実行し、成功した場合は、開発 (dev) 環境にリリースをデプロイします。

[Branch]\(ブランチ) Build 環境 Notes
メイン CI_Bld Dev メインへのすべてのチェックインでトリガーされます

リリース サイクルを完了したら、リリース ブランチを作成します。 リリース ブランチを使用してリリースを安定させ、メインで次のバージョンの開発を続行します。 検証済みのバグ修正を逆向きに統合 (RI) し、メイン ブランチと頻繁にマージして、技術的負債全体を最小限に抑えます。

バージョン 1.0 がリリースされました

ビルドとリリースを自動化して、以下を実行します。

  • リリース ブランチへのすべてのチェックインを使用してトリガーする
  • 自動テストを実行する
  • 開発環境やその他の環境にデプロイする
[Branch]\(ブランチ) Build Pipelines Notes
メイン CI_Bld Dev メインへのすべてのチェックインでトリガーされます
V1.00 RC_Bld Dev -> QA -> UAT -> Staging -> Prod リリースへのすべてのチェックインでトリガーされます

バージョン 2 がリリース候補になると、V2.00 ブランチを指す既存の RC ビルド パイプラインを更新できます。 V1.00 が現在のバージョンのときと同じようにビルドおよびリリースされるようになりました。

[Branch]\(ブランチ) Build Pipelines Notes
メイン CI_Bld Dev メインへのすべてのチェックインでトリガーされます
V2.00 RC_Bld Dev -> QA -> UAT -> Staging -> Prod リリースへのすべてのチェックインでトリガーされます
V1.00 Hotfix_Bld Hotfix -> Staging -> Prod 修正プログラムへのすべてのチェックインでトリガーされます

必要に応じて分岐戦略を拡張する

Word などの商用ソリューションなど、複数の運用バージョンをサポートする必要が生じた場合は、分岐戦略を拡張できます。

サポートする必要がある完了したリリース サイクルごとに、機能分離を使用して、新しいリリース ブランチを作成し、メインにある次のバージョン開発を続行します。 逆方向の統合 (RI) により v1.0 と v2.0 からメインにマージされることにご注意ください。 これらは、運用環境にリリースされるバグの修正プログラムを表しています。

バージョン 2.0 がリリースされました

シンプルな分岐戦略を使用し、一貫した名前付け規則を採用することで、次のことがサポートされます。

  • 1 つ以上のリリースがサポートされているアプリケーション
  • 新機能の継続的な開発
  • ユーザーへの価値の継続的デリバリー

チェックリストとフィールドからのレッスン

チェック リスト

  • シンプルな状態を保ち、必要に応じて分岐の複雑さを拡張する
  • コードを出荷可能な単位に整理する
  • ブランチに一貫した名前付け戦略を使用する
  • すべてのチェックインを使用してビルドする
  • ゲート チェックインと自動テストを使用して CI/CD パイプラインを作成する

フィールドからのレッスン - 避けるべきこと

  • ブランチが多くなりすぎないようにする!
    • 変更をマージすると、複雑さが増し、コストがかかる
    • 環境ごとの個別のブランチは不要
  • チェリーピックを使用してコードを運用環境に移行しないようにする
  • を解決したり、ツールで問題を処理したりしない