演習 - アプリケーションからパッケージを参照する

完了

このユニットでは、モデル クラスが削除された新しい Tailspin.SpaceGame.Web コードを取得します。 モデルを直接参照する代わりに、コードは前のユニットで作成したパッケージからモデルを参照します。

手順の一覧を次に示します。

  • 元の Tailspin.SpaceGame.Web リポジトリのブランチから新しいコードを取得します。
  • 新しい Models パッケージバージョン 1.0.0 を参照します。
  • Azure Artifacts フィードでこのパッケージを検索するには、ビルド パイプラインを変更します。
  • パイプラインでアプリが正常にビルドされたことを確認します。

GitHub からブランチをフェッチする

GitHub から models-package ブランチをフェッチしてチェックアウトします (つまり、そのブランチに切り替えます)。

このブランチには、前のモジュールで操作した Space Game プロジェクトが含まれていますが、 Models ディレクトリは削除されています。

  1. Tailspin.SpaceGame.Web プロジェクトを表示する Visual Studio Code のコピーに切り替えます。

  2. ターミナルから、Microsoft リポジトリから models-package という名前のブランチをフェッチするには、次の git コマンドを実行します。 次に、そのブランチに切り替えます。

    git fetch upstream models-package
    git checkout -B models-package upstream/models-package
    

    これらのコマンドの形式を使用すると、GitHub の Microsoft リポジトリ ( upstream と呼ばれます) からスターター コードを取得できます。 すぐに、origin と呼ばれる独自の GitHub リポジトリにこのブランチをプッシュします。

  3. 省略可能な手順として、 Models ディレクトリが エクスプローラーに存在しなくなったことを確認します。 代わりに、 コントローラービュー、およびその他のディレクトリが必要です。

Models パッケージを参照する

  1. Tailspin.SpaceGame.Web.csproj ファイルを開き、次のItemGroupを追加します。

    <ItemGroup>
      <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
    </ItemGroup>
    

    ItemGroupは必ずProjectノード内に配置してください。 ファイルは次の例のようになります。

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <ProjectGuid>{A0C4E31E-AC75-4F39-9F59-0AA19D9B8F46}</ProjectGuid>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
      </ItemGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot\images\avatars\" />
      </ItemGroup>
    </Project>
    
  2. ビルド プロセス中に生成されたプレリリース プレフィックスを含むようにバージョン 1.0.0 を変更します。 次に例を示します。

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0-CI-20200610-165738" />
    

    このエントリは、Azure Artifacts で作成した Tailspin.SpaceGame.Web.Models パッケージを参照します。 バージョン番号 1.0.0 とプレリリースサフィックスに注意してください。 この値は、前のユニットで Azure Artifacts に発行した初期バージョンと一致します。

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

    ファイルを保存すると、Visual Studio Code から依存関係の復元が求められる場合があります。 [ 復元 ] ボタンを選択して依存関係を復元します。

パイプライン構成を変更する

models-package ブランチには、初期azure-pipelines.yml ファイルが用意されています。 ここでは、パイプライン構成を変更して、Azure Artifacts から Tailspin.SpaceGame.Web.Models パッケージをプルします。

  1. Visual Studio Code で、 azure-pipelines.ymlを開きます。

  2. 次に示すように 、azure-pipelines.yml を変更します。

    trigger:
    - '*'
    
    pool:
      vmImage: 'ubuntu-20.04'
      demands:
      - npm
    
    variables:
      buildConfiguration: 'Release'
      wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
      dotnetSdkVersion: '6.x'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK $(dotnetSdkVersion)'
      inputs:
        version: '$(dotnetSdkVersion)'
    
    - task: NuGetToolInstaller@0
      inputs:
        versionSpec: '5.9.1'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: $(wwwrootDir)
    
    - task: NuGetCommand@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        restoreSolution: '**/*.sln'
        feedsToUse: 'select'
        vstsFeed: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - $(buildConfiguration)'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    

    強調表示されたコードは、パイプラインが依存関係を復元する場所を示し、Azure Artifacts フィードで、そこに存在する可能性がある依存関係を検索します。

  3. 変更をステージングしてコミットし、GitHub にプッシュします。

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Azure Pipelines に移動し、ビルドの実行を確認します。 ビルドによって Azure Artifacts から Models パッケージが取得され、プロジェクトが正常にビルドされます。