Упражнение. Ссылка на пакет из приложения

Завершено

В этом уроке вы получите новый код Tailspin.SpaceGame.Web, содержащий удаленные классы моделей. Вместо того чтобы ссылаться на модели напрямую, код будет ссылаться на них из пакета, созданного в предыдущем уроке.

Вот список шагов:

  • Получите новый код из ветви исходного репозитория Tailspin.SpaceGame.Web.
  • Ссылка на новую версию пакета моделей, 1.0.0.
  • Чтобы найти этот пакет в веб-канале Артефактов Azure, измените конвейер сборки.
  • Просмотрите конвейер успешной сборки приложения.

Извлечение ветви из GitHub

models-package Получите ветвь из GitHub и проверка или перейдите в нее.

Эта ветвь содержит проект Space Game, над которым вы работали в предыдущих модулях, но каталог Models удален.

  1. Переключитесь на копию Visual Studio Code с проектом Tailspin.SpaceGame.Web.

  2. Чтобы получить ветвь с именем из models-package репозитория Майкрософт, выполните следующие git команды из терминала. Затем перейдите в ту ветвь.

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

    Формат этих команд позволяет получать начальный код из репозитория Майкрософт на GitHub, известном как upstream. Через некоторое время вы отправите эту ветвь в репозиторий GitHub, известный как origin.

  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" />
    

    Это ссылка на пакет Tailspin.SpaceGame.Web.Models, созданный в Azure Artifacts. Обратите внимание на номер версии: 1.0.0 и суффикс предварительной версии. Это соответствует начальной версии, опубликованной в Azure Artifacts в предыдущем уроке.

  3. Сохраните файл.

    Примечание.

    При сохранении файла Visual Studio Code может попросить восстановить зависимости. Нажмите кнопку "Восстановить", чтобы восстановить зависимости.

Изменение конфигурации конвейера

Ветвь models-package предоставляет исходный файл azure-pipelines.yml. Здесь вы измените конфигурацию конвейера, чтобы извлечь пакет Tailspin.SpaceGame.Web.Models из Артефактов Azure.

  1. Откройте файл azure-pipelines.yml в Visual Studio Code.

  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 для зависимостей, которые могут быть там.

  3. Подготовьте, зафиксируйте и отправьте изменения на GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Перейдите в Azure Pipelines и посмотрите, как выполняется сборка. Сборка выбирает пакет Models в Azure Artifacts и успешно выполняет сборку.