まとめ
このモジュールでは、パッケージ 化のバージョン管理戦略 、バージョン管理のベスト プラクティス、 パッケージの昇格 ワークフローについて説明しました。 ソフトウェア開発ライフサイクル全体でパッケージ バージョンを管理するための基本的な概念について学習しました。
学習した内容
また、次の機能の利点と使い方を説明する方法も学習しました。
バージョン管理戦略の実装
- バージョンの重要度: 依存関係の管理とソフトウェアの安定性のために適切なバージョン管理が重要である理由を認識します。
- 不変パッケージ: 発行されたパッケージは変更できないことを理解します。新しいバージョンのみをリリースできます。
- バージョンの種類: メジャー バージョン、マイナー バージョン、パッチ バージョンの増分、および各バージョンを使用するタイミングについて説明します。
- パッケージ固有のバージョン管理: さまざまなパッケージの種類 (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 リポジトリのバージョン パッケージ。
- 破壊的変更管理: 機能の非推奨化と削除に関する戦略。
- バージョンのピン留め: コンシューマーが新しいバージョンを採用するタイミングを制御します。
- 変更ログの自動化: コミットから変更ログを自動的に生成します。
実用化
実装を開始します。
- 戦略を文書化します。 チームのバージョン管理ガイドラインを記述します。
- SemVer 2.0 を採用する: セマンティック バージョン管理を標準化します。
- フィードとビューを構成する:@Local、@Prerelease、および@Releaseビューを設定します。
- バージョン管理を自動化する: ビルド パイプラインに自動バージョン生成を実装します。
- プロモーション ワークフローを設定します。 パッケージの昇格を定義して自動化します。
- チームをトレーニングする: すべてのユーザーがバージョン管理戦略を理解し、従っていることを確認します。
DevOps プラクティスとの統合
DevOps ワークフローでのバージョン管理:
- 継続的インテグレーション: パッケージのビルドと発行を自動化します。
- 継続的デリバリー: 制御されたリリースには昇格ワークフローを使用します。
- コードとしてのインフラストラクチャ: アプリケーション パッケージと共にインフラストラクチャ パッケージをバージョン管理します。
- 機能フラグ: 段階的なロールアウトのために、バージョン管理と機能フラグを組み合わせます。
詳細情報
公式ドキュメント
- Azure Artifacts の主要な概念 - パッケージの不変性を含む Azure Artifacts の概念に関する包括的なガイド。
- ユニバーサル パッケージの発行とダウンロード - Azure Artifacts |Microsoft Learn - Azure Artifacts のユニバーサル パッケージのクイック スタート ガイド。
- NuGet パッケージの概要 - Azure Artifacts |Microsoft Learn - Azure Artifacts での NuGet パッケージ管理の完全なガイド。
その他のリソース
- セマンティック バージョン 2.0.0 - 公式セマンティック バージョン管理仕様。
- Azure Artifacts ビュー - フィード ビューとプロモーションの詳細な説明。
- Azure Artifacts の使用に関するベスト プラクティス - Azure Artifacts の包括的なベスト プラクティス。
- Azure Pipelines でのパッケージのバージョン管理 - CI/CD パイプラインでのパッケージのバージョン管理ガイド。
- パッケージプロモーションのフィードビュー - ビューとパッケージの品質を伝える方法。
パッケージ種類別ガイド
- NuGet パッケージのバージョン管理 - NuGet 固有のバージョン管理ガイドライン。
- npm セマンティック バージョン管理 - npm とセマンティック バージョン管理。
- Maven のバージョン管理 - Maven プロジェクトのバージョン管理。
- Python パッケージバージョン指定子 - PEP 440 バージョン指定子。
ツールと自動化
- GitVersion - Git 履歴からの自動バージョン管理。
- semantic-release - 完全に自動化されたバージョン管理とパッケージの発行。
- Azure DevOps CLI - Azure Artifacts オートメーション用のコマンド ライン ツール。
コミュニティとサポート
- Azure DevOps のドキュメント: 包括的なガイドとチュートリアルについて説明します。
- Microsoft Q&A: 質問をしたり、コミュニティから回答を得ることができます。
- Azure DevOps ブログ: 最新の機能とベスト プラクティスを最新の状態に保つ。
- GitHub サンプル: パイプラインと構成の例を確認します。