Упражнение. Создание конвейера для пакета

Завершено

Здесь вы получите новый код команды для проекта Tailspin.SpaceGame.Web.Models , который теперь отделен от проекта Tailspin.SpaceGame.Web . Вы создадите проект Azure Pipelines для проекта Models и просмотрите артефакты в Azure Artifacts с номером версии 1.0.0 в вашем веб-канале.

Какие изменения были внесены в проект?

Напомним, что веб-сайт Space Game — это приложение ASP.NET Core. Он использует шаблон model-View-Controller (MVC) для разделения данных от способа отображения данных в пользовательском интерфейсе. Энди и Мара хотят перенести классы моделей в отдельную библиотеку, чтобы эти классы можно было использовать в нескольких проектах.

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

Чтобы создать эти проекты, Энди и Мара используют два конвейера, по одному для каждого проекта. У вас уже есть первый проект и соответствующая конфигурация Azure Pipelines. Здесь вы создадите второй проект на GitHub и создадите конфигурацию Azure Pipelines для его сборки. Вы опубликуете полученный пакет в Azure Artifacts.

Подготовка Visual Studio Code

Ранее вы настроили Visual Studio Code для работы с проектом Tailspin.SpaceGame.Web. Здесь вы откроете второй экземпляр Visual Studio Code, чтобы работать с проектом Tailspin.SpaceGame.Web.Models .

  1. Откройте второй экземпляр Visual Studio Code.

  2. В Visual Studio Code откройте встроенный терминал.

  3. Перейдите к родительскому каталогу, где находится проект mslearn-tailspin-spacegame-web. Ниже приведен пример перехода в домашний каталог.

    cd ~
    

Получение исходного кода

Получите исходный код для проекта Tailspin.SpaceGame.Web.Models из GitHub и настройте Visual Studio Code для работы с файлами.

Создание вилки

Сначала нужно создать вилку репозитория mslearn-tailspin-spacegame-web-models, чтобы можно было работать с исходными файлами и менять их. Помните, Мара поместила каталог Models в новый проект и удалила его из веб-проекта.

Чтобы создать вилку проекта mslearn-tailspin-spacegame-web-models в свою учетную запись GitHub:

  1. В веб-браузере перейдите в GitHub и войдите в систему.
  2. Перейдите в проект mslearn-tailspin-spacegame-web-models .
  3. Выберите Создать вилку.
  4. Чтобы вставить репозиторий в учетную запись, следуйте инструкциям.

Клонирование вилки локально

Чтобы клонировать проект mslearn-tailspin-spacegame-web-models на компьютер:

  1. На сайте GitHub перейдите в вилку проекта mslearn-tailspin-spacegame-web-models .

  2. Выберите Код. Затем на вкладке HTTPS нажмите кнопку рядом с URL-адресом, чтобы скопировать URL-адрес в буфер обмена.

    Screenshot showing the URL and copy button from the GitHub repository.

  3. В Visual Studio Code перейдите в окно терминала и выполните следующую git clone команду. Замените отображаемый URL-адрес содержимым буфера обмена.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Перейдите в каталог mslearn-tailspin-spacegame-web-models . Это корневой каталог репозитория.

    cd mslearn-tailspin-spacegame-web-models
    

Откройте проект и проверьте конфигурацию

В Visual Studio Code окно терминала указывает на корневой каталог проекта mslearn-tailspin-spacegame-web-models . Откройте проект из проводника, чтобы просмотреть ее структуру и работать с файлами.

  1. Самый простой способ открыть проект заключается в повторном открытии Visual Studio Code в текущем каталоге. Для этого во встроенном терминале выполните следующую команду.

    code -r .
    

    В обозревателе вы увидите каталог и дерево файлов.

  2. Откройте интегрированный терминал. Вы будете перемещены в корень веб-проекта.

  3. Откройте файл azure-pipelines.yml.

    Вы увидите шаги, на которых собирается пакет и задается версия и пакет добавляется в Azure Artifacts.

    Задача DotNetCoreCLI@2 собирает проект:

    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    

    Задача DotNetCoreCLI@2 упаковывает проект с версией 1.0.0:

    - task: DotNetCoreCLI@2
      displayName: 'Pack the project - $(buildConfiguration)'
      inputs:
        command: 'pack'
        projects: '**/*.csproj'
        arguments: '--no-build --configuration $(buildConfiguration)'
        versioningScheme: byPrereleaseNumber
        majorVersion: '1'
        minorVersion: '0'
        patchVersion: '0'
    

    При разработке пакета обычно используется схема управления версиями byPrereleaseNumber. Это добавляет уникальный суффикс предварительной версии, например "-CI-20190621-042647" к концу номера версии. Поэтому полный номер версии будет выглядеть как "1.0.0-CI-20190621-042647".

    Задача NuGetCommand@2 помещает пакет в веб-канал Tailspin.SpaceGame.Web.Models в Azure Artifacts:

    - task: NuGetCommand@2
      displayName: 'Publish NuGet package'
      inputs:
        command: push
        feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
        allowPackageConflicts: true
      condition: succeeded()
    

    feedPublish указывает имя веб-канала для публикации. Имя имеет формат <projectName>/<feedName>, где:

    • $(System.TeamProject) — это предопределенная переменная, которая ссылается на имя проекта; например, "Space Game - web - Dependencies".
    • Tailspin.SpaceGame.Web.Models — это имя канала, указанное в предыдущем упражнении.

Настройка разрешений

Прежде чем настроить и запустить конвейер, необходимо предоставить службе сборки правильные разрешения.

  1. Перейдите к проекту в Azure DevOps.
  2. Выберите артефакты в меню слева.
  3. Щелкните значок Параметры в правом верхнем углу экрана, а затем перейдите на вкладку "Разрешения".
  4. Нажмите кнопку "Добавить пользователей или группы ".
  5. В поле "Пользователи и группы" введите space game - web - Dependencies Build Service, выберите роль участника и нажмите кнопку "Сохранить".

Создание конвейера в Azure Pipelines

Вы узнали, как настроить Azure Pipelines, в одном из предыдущих модулей. Если требуется средство обновления, перейдите к созданию конвейера сборки с помощью Azure Pipelines.

Здесь показано, как настроить второй конвейер для сборки пакета и загрузить этот пакет в Azure Artifacts.

  1. В Azure DevOps перейдите в проект Space Game — web - Dependencies .

  2. В меню слева выберите "Конвейеры".

  3. Выберите Новый конвейер.

  4. На вкладке Подключиться выберите GitHub.

  5. На вкладке "Выбор " выберите mslearn-tailspin-spacegame-web-models.

    При появлении запроса введите учетные данные GitHub. На появившемся экране прокрутите страницу вниз и выберите " Утвердить" и "Установить".

  6. На вкладке Проверка появится файл нового конвейера azure-pipelines.yml.

  7. Выберите Выполнить.

  8. Наблюдайте за выполнением конвейера.

  9. Перейдите на вкладку "Артефакты ".

  10. В раскрывающемся списке вверху выберите Tailspin.SpaceGame.Web.Models.

    A screenshot showing the location of the package from the dropdown.

    Вы увидите полученный пакет Tailspin.SpaceGame.Web.Models в Azure Artifacts.

    A screenshot of the package in Azure Artifacts, showing version 1.0 of the package.

  11. Выберите пакет, чтобы перейти на страницу сведений. Затем скопируйте номер версии в расположение, где его можно легко получить позже.

    A screenshot of Azure Artifacts showing package details. Highlighted is the version number for the package.

    Этот номер версии будет использоваться в следующем уроке.