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

完了

このユニットでは、モデルのクラスを除去した新しい 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
    

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

  3. 任意の手順として、Models ディレクトリがなくなっていることをエクスプローラーで確認します。 代わりに、ControllersViews などのディレクトリが存在しているはずです。

Models パッケージを参照する

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

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

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

    <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 に移動し、ビルドの実行を監視します。 必要な Models パッケージが Azure Artifacts から取得され、プロジェクトが正常にビルドされます。