演習 - アプリケーションからパッケージを参照する
このユニットでは、モデル クラスが削除された新しい 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
これらのコマンドの形式を使用すると、GitHub の Microsoft リポジトリ (
upstream
と呼ばれます) からスターター コードを取得できます。 すぐに、origin
と呼ばれる独自の GitHub リポジトリにこのブランチをプッシュします。省略可能な手順として、 Models ディレクトリが エクスプローラーに存在しなくなったことを確認します。 代わりに、 コントローラー、 ビュー、およびその他のディレクトリが必要です。
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 に移動し、ビルドの実行を確認します。 ビルドによって Azure Artifacts から Models パッケージが取得され、プロジェクトが正常にビルドされます。