紹介

完了

バージョン管理 は、ソフトウェア開発とパッケージ管理の重要な側面です。 ソフトウェアの進化に伴い、適切なバージョン管理により、依存関係が正確に追跡され、変更が効果的に伝達され、システムは安定した状態が維持されます。

バージョン管理が重要な理由

時間の経過と伴うソフトウェアの変更。 ソフトウェアの 要件 は同じとは言えません。

ソフトウェアの進化:

  • 機能の拡張: 提供する機能とその使用は、フィードバックに基づいて拡大、変更、適応されます。
  • プラットフォームの進化: 新しいオペレーティング システム、新しいフレームワーク、およびバージョンによって、アプリケーションのホスティングも進化する可能性があります。
  • バグ修正: 元の実装には、欠陥やバグが含まれている可能性があります。
  • 継続的な変更: 変更の理由が何であれ、ソフトウェアが安定していて、変更する必要がない可能性は低いです。

依存関係への影響:

ビルドするソフトウェアは他のコンポーネントに 依存 するため、ソフトウェアのビルド中にビルドまたは使用するコンポーネントとパッケージも同じ状態になります。

現在使用されているソフトウェアを追跡するために、コードベースを維持するには、正しい バージョン管理 が不可欠になります。

バージョン管理と依存関係の管理

バージョン管理 は、パッケージのバージョンとパッケージ内のコンポーネントに関連するため、 依存関係管理にも関連します。

依存関係の追跡:

依存関係 は、 その名前バージョンによって識別されます。 これにより、使用されている正確なパッケージを追跡できます。

  • 一意の識別: 名前 + バージョンは、パッケージを一意に識別します。
  • 独立したライフサイクル: 各パッケージには、そのライフサイクルと変化率があります。
  • バージョン 管理: 使用するパッケージ バージョンを正確に制御できます。

適切なバージョン管理の利点:

  • 再現可能なビルド: ビルドで一貫した結果が得られるようにします。
  • 依存関係の解決: パッケージ マネージャーは、正しいバージョンを解決できます。
  • 影響評価: 新しいバージョンでの変更の範囲について説明します。
  • ロールバック機能: 問題が発生した場合は、以前のバージョンに戻します。

変更できないパッケージ

パッケージが新しい バージョンを取得すると、コードベースは、使用するパッケージの新しいバージョンを使用するタイミングを選択できます。

バージョンの仕様

そのためには、必要なパッケージの 特定のバージョン を指定します。 これは、パッケージ自体が変更されたときに常に新しいバージョンを持つ必要があることを意味します。

不変性が重要な理由:

パッケージがフィードに 発行 されるたびに、変更を許可しないようにする必要があります。 変更された場合、コードに 破壊的変更 が発生する可能性があります。

基本原則:

本質的に、発行されたパッケージは 不変です

パッケージの不変性ルール

パッケージの既存のバージョンを置き換えたり更新したりすることはできません。 ほとんどのパッケージ フィードでは、現在のバージョンを変更する操作は許可されません。

不変性の影響:

  • 確実: コンシューマーは、バージョンが予期せず変更されないと信頼できます。
  • 一貫性: すべてのコンシューマーは、特定のバージョンに対して同じパッケージを取得します。
  • 安全: 既存のバージョンの悪意のある変更を防止します。
  • 監査可能性: バージョン履歴はそのまま残り、追跡可能です。

バージョンの進行状況

変更のサイズに関係なく、パッケージは 新しいバージョンを導入することによってのみ更新できます。

新しいバージョンは、変更の種類と影響を示す必要があります。

バージョン番号は次の情報を伝えます。

  • 変更の範囲: メジャー、マイナー、またはパッチの更新。
  • 互換性: 破壊的変更と非破壊的変更。
  • 品質レベル: プレリリースと安定リリース。
  • 意: 更新プログラムの目的。

モジュールの概要

このモジュールでは、パッケージングに関連するバージョン管理戦略、バージョン管理のベストプラクティス、およびパッケージのプロモーションについて説明します。

取り上げたトピック:

  • 成果物のバージョン管理の基礎: バージョンの種類とスキームについて。
  • セマンティック バージョン管理: 一貫性のある通信のために SemVer 2.0 を採用しています。
  • Azure Artifacts ビュー:@Local、@Prerelease、および@Release のビューを使用。
  • パッケージのプロモーション: 品質レベル間でのパッケージの移動。
  • 自動バージョン管理: CI/CD パイプラインからのパッケージのプッシュ。
  • ベスト プラクティス: 効果的なバージョン管理戦略の実装。

学習目標

このモジュールを完了すると、学生と専門家は次のことができます。

  • バージョン管理の重要性を理解する: 依存関係の管理とソフトウェアの安定性のために適切なバージョン管理が重要である理由を認識します。
  • バージョン管理戦略を実装する: パッケージの有効なバージョン番号付けスキームを設計して適用します。
  • セマンティック バージョン管理を使用する: 一貫性のあるバージョン通信のためにセマンティック バージョン管理 (SemVer 2.0) 原則を適用します。
  • パッケージの品質を管理する: Azure Artifacts ビューを使用して、品質レベルでパッケージを分離します。
  • パッケージの昇格: プレリリースから運用環境に品質ゲートを介してパッケージを移動します。
  • バージョン管理を自動化する: 適切なバージョン番号を使用してビルド パイプラインからパッケージをプッシュします。
  • ベスト プラクティスを適用する: バージョン管理とパッケージ管理の業界標準に従います。

前提 条件

  • DevOps の理解: DevOps とは何かとその概念の基本的な理解。
  • バージョン管理の知識: バージョン管理の原則に関する知識は役に立ちますが、必要ありません。
  • ソフトウェア配信エクスペリエンス: ソフトウェアを提供する組織で経験を積むのに役立ちます。
  • Azure DevOps アクセス: いくつかの演習のために、Azure DevOps 組織とチーム プロジェクトを作成する必要があります。 まだお持ちでない場合は、次を参照してください。
  • パッケージ管理の基本: 前のモジュールからのパッケージ、フィード、および依存関係の管理について説明します。