演習 - パッケージに変更をプッシュする

完了

この時点で、次の 2 つのパイプラインが存在します。 Models パッケージを Azure Artifacts に発行するパイプラインと、Space Game Web アプリケーション用のパイプラインです。 Web アプリケーションからモデルのクラスにアクセスできるよう、Web アプリケーションのビルド構成で Models パッケージを参照します。

ここでは、Models パッケージを更新してその変更を Web アプリから利用する操作を練習します。

そのためには、まず、プロパティをモデル クラスのいずれかに追加し、その後、パッケージのバージョンを繰り上げます。 次に、変更を GitHub に送信します。これにより、パイプラインでパッケージをビルドし、それを Azure Artifacts に発行できるようになります。

次に、新しいバージョン番号の Models パッケージを参照するように Web アプリを更新し、追加したプロパティを使用できるようにします。

分岐を作成する

まず、行った作業を保持するためのブランチを作成します。 add-game-style という名前のブランチを作成します。これは main ブランチがベースとなります。

この時点で開いている Visual Studio Code のコピーは 2 つ存在します。Tailspin.SpaceGame.Web.Models プロジェクトのコピーと、Space Game Web アプリケーション プロジェクト (Tailspin.SpaceGame.Web) のコピーです。 ここでは、Tailspin.SpaceGame.Web.Models プロジェクトのコピーから作業を行います。

  1. Visual Studio Code から、統合ターミナルを開きます。

  2. git checkout という名前のブランチを作成するため、ターミナルから add-game-style コマンドを実行します。

    git checkout -B add-game-style
    

Models パッケージにプロパティを追加する

Score という名前のプロパティをモデル クラスの 1 つに追加します。これにより、スコアが関連付けられるゲームのスタイル (または難易度) が指定されます。

ここでは、Visual Studio Code の Tailspin.SpaceGame.Web.Models プロジェクトのコピーから作業を行います。

  1. 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; }
        }
    }
    

    Note

    バージョン番号の更新箇所を示すためにプロジェクト内のファイルに変更を加えます。 ただし、新しいプロパティを使用するように Web アプリケーションを更新する作業は行いません。

  2. ファイルを保存します。

  3. 行った作業を検証するため、プロジェクトをビルドします。

    dotnet build --configuration Release
    

    実際には、各種のテストを行ったり、実際に使用するアプリケーションでその新しいパッケージをテストしたりするなど、他にも検証手順を実行することになります。

パッケージをビルドして発行する

新しいプロパティを Score クラスに追加し、プロジェクトが正常にビルドされることを確認したら、パッケージのバージョンを更新できます。 その更新後のパッケージを Azure Pipelines でビルドして発行できるよう、変更内容を GitHub に対してプッシュできます。

  1. azure-pipelines.yml を開き、minorVersion0 から 1 に変更して、ファイルを保存します。

    minorVersion: '1'
    

    変更をわかりやすくするために、ここではバージョンを 1.0.0 から 1.1.0 に繰り上げています。 実際には、作業しているパッケージの種類に応じたバージョン管理スキームに従うことになります。

    たとえば、セマンティック バージョニングでは、マイナー バージョンを 1 (1.1.0) に繰り上げることにより、そのパッケージと、バージョン 1.0.0 のパッケージを使用するアプリケーションとの間に下位互換性があることを他のユーザーに伝えます。 パッケージを使用するユーザーは、新しい機能を使用するように自分のアプリを変更する可能性もあります。

    一般的なオープンソース プロジェクトには、各バージョンで行われた変更やメジャー バージョン間での移行方法について説明するドキュメントが "変更ログ" の形式で用意されています。

  2. 変更をステージ、コミット、プッシュします。

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. Microsoft Azure Pipelines から Tailspin.SpaceGame.Web.Models プロジェクトに移動して、ビルドの実行を監視します。

  4. [Artifacts] タブを開いて、新しいバージョンを確認します。 心配は要りません。以前のバージョンは、引き続きそれを参照するプロジェクトのために維持されています。

    A screenshot of the package in Azure Artifacts, showing version 1.1 of the package.

  5. 前に行ったように、次のユニットで使用するため、新しいバージョンを書き留めておきます。

新しいバージョンの Models パッケージを参照する

ここでは、新しいバージョンの Tailspin.SpaceGame.Web.Models パッケージを使用するように Tailspin.SpaceGame.Web プロジェクトに変更を加えます。

ここでは、Visual Studio Code の Space Game Web アプリケーション プロジェクト (Tailspin.SpaceGame.Web) のコピーから作業を行います。

  1. 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 アプリケーションのローカル ビルドは行いません。

  2. ターミナルから、変更をステージ、コミット、プッシュします。

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. Azure Pipelines から mslearn-tailspin-spacegame-web プロジェクトに移動して、ビルドの実行を監視します。

    最新の依存関係が取得されてアプリケーションがビルドされ、Web アプリケーションの成果物が発行されたことがビルド出力からわかります。