演習 - アプリケーションからパッケージを参照する
このユニットでは、モデルのクラスを除去した新しい Tailspin.SpaceGame.Web コードを取得します。 このコードでは、モデルを直接参照するのではなく、前のユニットで作成したパッケージからそれらを参照します。
その一連の手順を次に示します。
- 元の Tailspin.SpaceGame.Web リポジトリのブランチから新しいコードを取得します。
- 新しい Models パッケージのバージョン 1.0.0 を参照します。
- このパッケージを Azure Artifacts フィードから探せるように、ビルド パイプラインを変更します。
- パイプラインによって正常にアプリケーションがビルドされることを確認します。
GitHub からブランチをフェッチする
GitHub から models-package
ブランチをフェッチしてチェックアウトし (つまり、そのブランチに切り替え) ます。
このブランチには、前のモジュールで作業した Space Game プロジェクトが含まれていますが、Models ディレクトリが除去されています。
Tailspin.SpaceGame.Web プロジェクトを表示する Visual Studio Code のコピーに切り替えます。
Microsoft リポジトリから
models-package
という名前のブランチをフェッチするには、ターミナルから次のgit
コマンドを実行します。 次に、そのブランチに切り替えます。git fetch upstream models-package git checkout -B models-package upstream/models-package
これらのコマンドの形式を使用すると、
upstream
と呼ばれる、GitHub 上の Microsoft のリポジトリからスタート コードを取得できます。 すぐに、origin
と呼ばれる独自の GitHub リポジトリにこのブランチをプッシュします。任意の手順として、Models ディレクトリがなくなっていることをエクスプローラーで確認します。 代わりに、Controllers や Views などのディレクトリが存在しているはずです。
Models パッケージを参照する
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>
ビルド プロセス中に生成されたプレリリース プレフィックスを含むようにバージョン番号 "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 に発行した初期バージョンに対応します。
ファイルを保存します。
注意
ファイルを保存するときに、Visual Studio Code から依存関係を復元するように求められる場合があります。 [復元] ボタンを選択して、依存関係を復元します。
パイプライン構成を変更する
models-package
ブランチにより、初期 azure-pipelines.yml ファイルが提供されます。 ここでは、Azure Artifacts から Tailspin.SpaceGame.Web.Models パッケージをプルするようにパイプライン構成を変更します。
Visual Studio Code で、azure-pipelines.yml を開きます。
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 フィードにおける依存関係の検索先を示しています。
GitHub に変更をステージ、コミット、プッシュします。
git add . git commit -m "Add reference to Models package" git push origin models-package
Azure Pipelines に移動し、ビルドの実行を監視します。 必要な Models パッケージが Azure Artifacts から取得され、プロジェクトが正常にビルドされます。