紹介
バージョン管理 は、ソフトウェア開発とパッケージ管理の重要な側面です。 ソフトウェアの進化に伴い、適切なバージョン管理により、依存関係が正確に追跡され、変更が効果的に伝達され、システムは安定した状態が維持されます。
バージョン管理が重要な理由
時間の経過と伴うソフトウェアの変更。 ソフトウェアの 要件 は同じとは言えません。
ソフトウェアの進化:
- 機能の拡張: 提供する機能とその使用は、フィードバックに基づいて拡大、変更、適応されます。
- プラットフォームの進化: 新しいオペレーティング システム、新しいフレームワーク、およびバージョンによって、アプリケーションのホスティングも進化する可能性があります。
- バグ修正: 元の実装には、欠陥やバグが含まれている可能性があります。
- 継続的な変更: 変更の理由が何であれ、ソフトウェアが安定していて、変更する必要がない可能性は低いです。
依存関係への影響:
ビルドするソフトウェアは他のコンポーネントに 依存 するため、ソフトウェアのビルド中にビルドまたは使用するコンポーネントとパッケージも同じ状態になります。
現在使用されているソフトウェアを追跡するために、コードベースを維持するには、正しい バージョン管理 が不可欠になります。
バージョン管理と依存関係の管理
バージョン管理 は、パッケージのバージョンとパッケージ内のコンポーネントに関連するため、 依存関係管理にも関連します。
依存関係の追跡:
各 依存関係 は、 その名前 と バージョンによって識別されます。 これにより、使用されている正確なパッケージを追跡できます。
- 一意の識別: 名前 + バージョンは、パッケージを一意に識別します。
- 独立したライフサイクル: 各パッケージには、そのライフサイクルと変化率があります。
- バージョン 管理: 使用するパッケージ バージョンを正確に制御できます。
適切なバージョン管理の利点:
- 再現可能なビルド: ビルドで一貫した結果が得られるようにします。
- 依存関係の解決: パッケージ マネージャーは、正しいバージョンを解決できます。
- 影響評価: 新しいバージョンでの変更の範囲について説明します。
- ロールバック機能: 問題が発生した場合は、以前のバージョンに戻します。
変更できないパッケージ
パッケージが新しい バージョンを取得すると、コードベースは、使用するパッケージの新しいバージョンを使用するタイミングを選択できます。
バージョンの仕様
そのためには、必要なパッケージの 特定のバージョン を指定します。 これは、パッケージ自体が変更されたときに常に新しいバージョンを持つ必要があることを意味します。
不変性が重要な理由:
パッケージがフィードに 発行 されるたびに、変更を許可しないようにする必要があります。 変更された場合、コードに 破壊的変更 が発生する可能性があります。
基本原則:
本質的に、発行されたパッケージは 不変です。
パッケージの不変性ルール
パッケージの既存のバージョンを置き換えたり更新したりすることはできません。 ほとんどのパッケージ フィードでは、現在のバージョンを変更する操作は許可されません。
不変性の影響:
- 確実: コンシューマーは、バージョンが予期せず変更されないと信頼できます。
- 一貫性: すべてのコンシューマーは、特定のバージョンに対して同じパッケージを取得します。
- 安全: 既存のバージョンの悪意のある変更を防止します。
- 監査可能性: バージョン履歴はそのまま残り、追跡可能です。
バージョンの進行状況
変更のサイズに関係なく、パッケージは 新しいバージョンを導入することによってのみ更新できます。
新しいバージョンは、変更の種類と影響を示す必要があります。
バージョン番号は次の情報を伝えます。
- 変更の範囲: メジャー、マイナー、またはパッチの更新。
- 互換性: 破壊的変更と非破壊的変更。
- 品質レベル: プレリリースと安定リリース。
- 意: 更新プログラムの目的。
モジュールの概要
このモジュールでは、パッケージングに関連するバージョン管理戦略、バージョン管理のベストプラクティス、およびパッケージのプロモーションについて説明します。
取り上げたトピック:
- 成果物のバージョン管理の基礎: バージョンの種類とスキームについて。
- セマンティック バージョン管理: 一貫性のある通信のために SemVer 2.0 を採用しています。
- Azure Artifacts ビュー:@Local、@Prerelease、および@Release のビューを使用。
- パッケージのプロモーション: 品質レベル間でのパッケージの移動。
- 自動バージョン管理: CI/CD パイプラインからのパッケージのプッシュ。
- ベスト プラクティス: 効果的なバージョン管理戦略の実装。
学習目標
このモジュールを完了すると、学生と専門家は次のことができます。
- バージョン管理の重要性を理解する: 依存関係の管理とソフトウェアの安定性のために適切なバージョン管理が重要である理由を認識します。
- バージョン管理戦略を実装する: パッケージの有効なバージョン番号付けスキームを設計して適用します。
- セマンティック バージョン管理を使用する: 一貫性のあるバージョン通信のためにセマンティック バージョン管理 (SemVer 2.0) 原則を適用します。
- パッケージの品質を管理する: Azure Artifacts ビューを使用して、品質レベルでパッケージを分離します。
- パッケージの昇格: プレリリースから運用環境に品質ゲートを介してパッケージを移動します。
- バージョン管理を自動化する: 適切なバージョン番号を使用してビルド パイプラインからパッケージをプッシュします。
- ベスト プラクティスを適用する: バージョン管理とパッケージ管理の業界標準に従います。
前提 条件
- DevOps の理解: DevOps とは何かとその概念の基本的な理解。
- バージョン管理の知識: バージョン管理の原則に関する知識は役に立ちますが、必要ありません。
- ソフトウェア配信エクスペリエンス: ソフトウェアを提供する組織で経験を積むのに役立ちます。
- Azure DevOps アクセス: いくつかの演習のために、Azure DevOps 組織とチーム プロジェクトを作成する必要があります。 まだお持ちでない場合は、次を参照してください。
- パッケージ管理の基本: 前のモジュールからのパッケージ、フィード、および依存関係の管理について説明します。