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

Завершено

Здесь вы получите новый код команды для проекта Tailspin.SpaceGame.Web.Models, который теперь отделен от проекта Tailspin.SpaceGame.Web. Вы создадите проект Azure Pipelines для проекта "Модели" и увидите артефакт в 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-адрес и кнопку копирования из репозитория GitHub.

  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. На вкладке Connect выберите GitHub.

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

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

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

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

  8. Посмотрите, как работает конвейер.

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

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

    Снимок экрана, показывающий расположение пакета из раскрывающегося списка.

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

    Снимок экрана пакета в Azure Artifacts с версией 1.0 пакета.

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

    Снимок экрана: артефакты Azure, показывающие сведения о пакете. Выделен номер версии пакета.

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