演習 - パッケージに変更をプッシュする
この時点で、2 つのパイプラインがあります。 モデル パッケージが Azure Artifacts に発行されます。 もう 1 つは Space Game Web アプリ用です。 Web アプリのビルド構成は、モデル クラスにアクセスできるように Models パッケージを参照します。
ここでは、Models パッケージを更新し、その変更を Web アプリから使用する方法を示します。
そのためには、まずいずれかのモデル クラスにプロパティを追加してから、パッケージのバージョンをバンプします。 次に、パイプラインがパッケージをビルドして Azure Artifacts に発行できるように、変更を GitHub に送信します。
次に、追加されたプロパティを使用できるように、Models パッケージの新しいバージョン番号を参照するように Web アプリを更新します。
分岐を作成する
まず、作業内容を保持するためのブランチを作成します。
add-game-style
ブランチに基づいて、main
という名前のブランチを作成します。
この時点で、Visual Studio Code の 2 つのコピーが開いています。1 つは Tailspin.SpaceGame.Web.Models プロジェクト用で、1 つは Space Game Web アプリ プロジェクト Tailspin.SpaceGame.Web 用です。 Tailspin.SpaceGame.Web.Models プロジェクトのコピーから作業します。
Visual Studio Code から、統合ターミナルを開きます。
add-game-style
という名前のブランチを作成するには、ターミナルで次のgit checkout
コマンドを実行します。git checkout -B add-game-style
Models パッケージにプロパティを追加する
Score
という名前のプロパティをいずれかのモデル クラスに追加します。このクラスは、スコアが関連付けられているゲーム スタイルまたは難易度を提供します。
Tailspin.SpaceGame.Web.Models プロジェクトの Visual Studio Code のコピーから作業します。
Visual Studio Code から Tailspin.SpaceGame.Web.Models/Models/Score.cs を開きます。 次の強調表示されたプロパティを、既に存在するプロパティの一覧に追加します。
using System.Text.Json.Serialization; namespace TailSpin.SpaceGame.Web.Models { public class Score : Model { // The ID of the player profile associated with this score. [JsonPropertyName("profileId")] public string ProfileId { get; set; } // The score value. [JsonPropertyName("score")] public int HighScore { get; set; } // The game mode the score is associated with. [JsonPropertyName("gameMode")] public string GameMode { get; set; } // The game region (map) the score is associated with. [JsonPropertyName("gameRegion")] public string GameRegion { get; set; } // The game style (difficulty) the score is associated with. [JsonPropertyName("gameStyle")] public string GameStyle { get; set; } } }
注
バージョン番号を上げる場所を示すために、プロジェクト内のファイルに変更を加えます。 ただし、新しいプロパティを使用するように Web アプリを更新しないでください。
ファイルを保存します。
作業内容を確認するには、プロジェクトをビルドします。
dotnet build --configuration Release
実際には、テストの実行や、それを使用するアプリを使用した新しいパッケージのテストなど、より多くの検証手順を実行できます。
パッケージをビルドして発行する
Score
クラスに新しいプロパティを追加し、プロジェクトのビルドが正常に完了したことを確認したら、パッケージのバージョンを更新できます。 その後、変更を GitHub にプッシュして、Azure Pipelines が更新されたパッケージをビルドして発行できるようにします。
azure-pipelines.ymlを開き、
minorVersion
を0
から1
に変更して、ファイルを保存します。minorVersion: '1'
ここでは、バージョンを 1.0.0 から 1.1.0 に変更を明確にします。 実際には、使用しているパッケージの種類のバージョン管理スキームに従います。
たとえば、セマンティック バージョン管理によると、マイナー バージョンを 1 (1.1.0) に変更すると、パッケージがそのパッケージのバージョン 1.0.0 を使用するアプリと下位互換性があることを他のユーザーに通知します。 パッケージを使用するユーザーは、新しい機能を利用するようにアプリを変更する場合があります。
一般的なオープンソース プロジェクトでは、各バージョンで行われた変更と、メジャー バージョンから次のメジャー バージョンへの移行方法を説明する 変更ログ の形式でドキュメントが提供されます。
変更をステージングし、コミットし、プッシュすることを行います。
git add . git commit -m "Add GameStyle property" git push origin add-game-style
Microsoft Azure Pipelines から Tailspin.SpaceGame.Web.Models プロジェクトに移動し、ビルドの実行を確認します。
[成果物] タブ を 開き、新しいバージョンをメモします。 ご安心ください;古いバージョンは、まだそれを参照しているプロジェクト用に残っています。
前に行ったように、次のユニットの新しいバージョンを書き留めておきます。
Models パッケージの新しいバージョンを参照する
次に、 Tailspin.SpaceGame.Web プロジェクトを変更して 、Tailspin.SpaceGame.Web.Models パッケージの新しいバージョンを使用します。
ここでは、 Space Game Web アプリ プロジェクト Tailspin.SpaceGame.Web の Visual Studio Code のコピーから作業します。
Visual Studio Code から Tailspin.SpaceGame.Web.csproj を開き、
PackageReference
を Azure Artifacts で作成した Tailspin.SpaceGame.Web.Models パッケージのバージョン番号に変更します。 その後、ファイルを保存します。次に例を示します。
<PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
Visual Studio Code からパッケージの復元を求められた場合は、そのメッセージを無視しても問題ありません。 簡潔にするために、Web アプリはローカルにビルドしません。
ターミナルから、変更をステージ、コミット、プッシュします。
git add . git commit -m "Bump Models package to 1.1.0" git push origin models-package
Azure Pipelines から mslearn-tailspin-spacegame-web プロジェクトに移動し、ビルドの実行を確認します。
ビルド出力から、最新の依存関係を取得し、アプリをビルドし、Web アプリの成果物を発行していることがわかります。