まとめ

完了

このモジュールでは、パッケージ 化のバージョン管理戦略 、バージョン管理のベスト プラクティス、 パッケージの昇格 ワークフローについて説明しました。 ソフトウェア開発ライフサイクル全体でパッケージ バージョンを管理するための基本的な概念について学習しました。

学習した内容

また、次の機能の利点と使い方を説明する方法も学習しました。

バージョン管理戦略の実装

  • バージョンの重要度: 依存関係の管理とソフトウェアの安定性のために適切なバージョン管理が重要である理由を認識します。
  • 不変パッケージ: 発行されたパッケージは変更できないことを理解します。新しいバージョンのみをリリースできます。
  • バージョンの種類: メジャー バージョン、マイナー バージョン、パッチ バージョンの増分、および各バージョンを使用するタイミングについて説明します。
  • パッケージ固有のバージョン管理: さまざまなパッケージの種類 (NuGet、npm、Maven、Python、ユニバーサル パッケージ) のバージョン管理を実装します。

セマンティック バージョン管理について

  • SemVer 2.0 形式: 一貫性のある通信のために Major.Minor.Patch のバージョン管理を適用します。
  • 破壊的変更: メジャー バージョンを使用して、互換性のない API の変更を通知します。
  • 新機能: 下位互換性のある追加にはマイナー バージョンを使用します。
  • バグ修正: 下位互換性のある修正プログラムにはパッチ バージョンを使用します。
  • プレリリース ラベル: プレリリースの品質を示すには、ラベル (アルファ、ベータ、rc) を使用します。
  • バージョンの優先順位: バージョンの比較と順序付け方法について説明します。

Azure Artifacts ビューの使用

  • 3 つの既定のビュー:@Local、@Prerelease、および@Releaseビューを活用します。
  • @Local ビュー: アップストリーム ソースのものを含むすべてのパッケージを含んでいます。
  • @Prerelease ビュー: プレリリース ラベルを含むパッケージにフィルターを適用します。
  • @Release ビュー: 運用可能なパッケージのみを表示します。
  • ビュー固有の URI: 特定のビューを使用するようにパッケージ コンシューマーを構成します。
  • カスタム ビュー: より細かい品質レベルのための追加のビューを作成します。

パッケージの推進

  • 品質ゲート: プロモーションを利用して、品質レベルごとにパッケージを進めます。
  • 昇格ワークフロー:@Local → @Prerelease → @Release進行を実装します。
  • 自動プロモーション: Azure Pipelines タスクを使用して、テスト結果に基づいて昇格を自動化します。
  • 手動昇格: 重要なパッケージに手動承認ゲートを適用します。
  • 保持保護: 昇格されたパッケージが削除から保護されていることを理解します。
  • アップストリーム パッケージ: キャッシュされたアップストリーム パッケージの昇格を管理します。

パイプラインからのパッケージ送信

  • 自動発行: フィードにパッケージを自動的に発行するようにビルド パイプラインを構成します。
  • バージョンの生成: CI/CD で自動バージョン番号生成を実装します。
  • パッケージ メタデータ: パッケージに包括的なメタデータを含めます。
  • ソースのタグ付け: ソース コードにパッケージ バージョンをタグ付けして追跡可能にします。

ベスト プラクティスの適用

  • 文書化された戦略: 書かれたバージョン管理戦略のドキュメントを保持します。
  • SemVer の導入: セマンティック バージョン 2.0 で標準化します。
  • リポジトリごとに 1 つのフィード: 1 つのフィードのみを参照するように各リポジトリを構成します。
  • 自動発行: 作成時にパッケージを自動的に発行します。
  • 昇格する前にテストする: より高いビューに昇格する前に、常にパッケージをテストしてください。
  • チームの配置: バージョン管理を完了の定義に統合します。

主な概念の概要

バージョンの不変性

  • 公開されたバージョンを変更しないでください。 発行されたパッケージは変更できません。
  • 常に新しいバージョンを作成します。 すべての変更には、新しいバージョン番号が必要です。
  • 信頼と信頼性: コンシューマーは、バージョンが変更されないと信頼します。

セマンティック バージョン管理の原則

  • Major.Minor.Patch: 3 部構成のバージョン番号。
  • 通信をクリアする: バージョン番号は、変更の範囲を示します。
  • 下位互換性: マイナーバージョンとパッチバージョンは互換性を維持します。
  • プレリリース ラベル: ラベルを使用して品質レベルを示します。

Azure Artifacts ビュー

  • 品質インジケーター: ビューは、品質レベルによってパッケージを分離します。
  • 昇格ワークフロー: 明示的な昇格は、ビューを通じてパッケージを移動します。
  • コンシューマーの選択: コンシューマーは、リスク許容度に基づいてビューを選択します。
  • 保持保護: 削除から保護された昇格されたパッケージ。

自動化の利点

  • 一貫性: 自動化されたプロセスにより、ヒューマン エラーが軽減されます。
  • 速度: 自動化によるリリース サイクルの高速化。
  • 品質ゲート: 昇格前の自動テスト。
  • トレーサビリティ: すべてのビルドで追跡可能な成果物が生成されます。

次のステップ

学習を続行する

バージョン管理スキルを強化する:

  • 高度な昇格ワークフロー: 承認ゲートを使用して複数ステージの昇格を実装します。
  • バージョン範囲の管理: 依存関係バージョンの範囲と制約について理解します。
  • 分岐戦略: バージョン管理をブランチ戦略 (Gitflow、トランクベース) に合わせます。
  • 修正プログラムのバージョン管理: 修正プログラムとバックポートを正しく処理します。

高度なシナリオを調べる:

  • Monorepo のバージョン管理: monorepo リポジトリのバージョン パッケージ。
  • 破壊的変更管理: 機能の非推奨化と削除に関する戦略。
  • バージョンのピン留め: コンシューマーが新しいバージョンを採用するタイミングを制御します。
  • 変更ログの自動化: コミットから変更ログを自動的に生成します。

実用化

実装を開始します。

  1. 戦略を文書化します。 チームのバージョン管理ガイドラインを記述します。
  2. SemVer 2.0 を採用する: セマンティック バージョン管理を標準化します。
  3. フィードとビューを構成する:@Local、@Prerelease、および@Releaseビューを設定します。
  4. バージョン管理を自動化する: ビルド パイプラインに自動バージョン生成を実装します。
  5. プロモーション ワークフローを設定します。 パッケージの昇格を定義して自動化します。
  6. チームをトレーニングする: すべてのユーザーがバージョン管理戦略を理解し、従っていることを確認します。

DevOps プラクティスとの統合

DevOps ワークフローでのバージョン管理:

  • 継続的インテグレーション: パッケージのビルドと発行を自動化します。
  • 継続的デリバリー: 制御されたリリースには昇格ワークフローを使用します。
  • コードとしてのインフラストラクチャ: アプリケーション パッケージと共にインフラストラクチャ パッケージをバージョン管理します。
  • 機能フラグ: 段階的なロールアウトのために、バージョン管理と機能フラグを組み合わせます。

詳細情報

公式ドキュメント

その他のリソース

パッケージ種類別ガイド

ツールと自動化

  • GitVersion - Git 履歴からの自動バージョン管理。
  • semantic-release - 完全に自動化されたバージョン管理とパッケージの発行。
  • Azure DevOps CLI - Azure Artifacts オートメーション用のコマンド ライン ツール。

コミュニティとサポート

  • Azure DevOps のドキュメント: 包括的なガイドとチュートリアルについて説明します。
  • Microsoft Q&A: 質問をしたり、コミュニティから回答を得ることができます。
  • Azure DevOps ブログ: 最新の機能とベスト プラクティスを最新の状態に保つ。
  • GitHub サンプル: パイプラインと構成の例を確認します。