Упражнение. Отправка изменения в пакет

Завершено

На этом этапе у вас есть два конвейера. Один публикует пакет "Модели" в Артефактах Azure, а один — для веб-приложения Space Game . Конфигурация сборки для веб-приложения ссылается на пакет Models, чтобы получить доступ к классам модели.

Здесь вы научитесь обновлять пакет "Модели" и потреблять изменения из веб-приложения.

Для этого сначала необходимо добавить свойство в один из классов модели, а затем ударить версию пакета. Затем вы отправите изменения в GitHub, чтобы конвейер смог создать пакет и опубликовать его в Azure Artifacts.

Затем вы обновите веб-приложение, чтобы ссылаться на более новый номер версии пакета Models, чтобы он смог использовать добавленное свойство.

Создание ветви

Давайте начнем с создания ветви для хранения нашей работы. Создайте ветвь с именем add-game-style, которая основана на main ветви.

На этом этапе у вас есть две копии Visual Studio Code, одна для проекта Tailspin.SpaceGame.Web.Models и одна для проекта веб-приложения Space Game , Tailspin.SpaceGame.Web. Здесь вы будете работать из копии проекта Tailspin.SpaceGame.Web.Models .

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

  2. Чтобы создать ветвь с именем add-game-styleтерминала, выполните следующую git checkout команду.

    git checkout -B add-game-style
    

Добавление свойства в пакет моделей

Добавьте свойство с именем Scoreв один из классов модели, который предоставляет стиль игры (или трудности), с которым связана оценка.

Здесь вы будете работать из копии Visual Studio Code для проекта Tailspin.SpaceGame.Web.Models .

  1. В Visual Studio Code откройте Tailspin.SpaceGame.Web.Models/Models/Score.cs. Добавьте следующее выделенное свойство в список свойств, которые уже есть.

    using System.Text.Json.Serialization;
    
    namespace TailSpin.SpaceGame.Web.Models
    {
        public class Score : Model
        {
            // The ID of the player profile associated with this score.
            [JsonPropertyName("profileId")]
            public string ProfileId { get; set; }
    
            // The score value.
            [JsonPropertyName("score")]
            public int HighScore { get; set; }
    
            // The game mode the score is associated with.
            [JsonPropertyName("gameMode")]
            public string GameMode { get; set; }
    
            // The game region (map) the score is associated with.
            [JsonPropertyName("gameRegion")]
            public string GameRegion { get; set; }
    
            // The game style (difficulty) the score is associated with.
            [JsonPropertyName("gameStyle")]
            public string GameStyle { get; set; }
        }
    }
    

    Примечание.

    Вы вносите изменения в файл в проекте, чтобы продемонстрировать, где вы столкнулись с номером версии. Однако мы не обновим веб-приложение для использования нового свойства.

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

  3. Чтобы проверить работу, создайте проект:

    dotnet build --configuration Release
    

    На практике можно выполнить дополнительные шаги проверки, например выполнение тестов или тестирование нового пакета с приложением, использующим его.

Сборка и публикация пакета

Теперь, когда вы добавили новое свойство в Score класс и проверили сборки проекта, вы можете обновить версию пакета. Затем вы можете отправить изменения в GitHub, чтобы Azure Pipelines могли создавать и публиковать обновленный пакет.

  1. Откройте azure-pipelines.yml, измените его minorVersion на 01и сохраните файл.

    minorVersion: '1'
    

    Здесь мы увеличим версию с 1.0.0 до 1.1.0, чтобы изменение было очевидным. На практике вы будете следовать схеме управления версиями для типа пакета, с которым вы работаете.

    Например, в соответствии с семантическим версионированием, когда вы увеличиваете основной номер версии до 1 (1.1.0), это означает, что пакет не имеет обратной совместимости с приложениями, использующими версию 1.0.0 этого пакета. Пользователи пакета могут изменить свое приложение, чтобы использовать новые функции.

    Популярные проекты с открытым кодом предоставляют документацию в виде журнала изменений, которая объясняет изменения, внесенные в каждую версию, и как перейти с одной основной версии на следующую.

  2. Этап, фиксация и отправка изменений:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. В Microsoft Azure Pipelines перейдите в проект Tailspin.SpaceGame.Web.Models и просмотрите выполнение сборки.

  4. Откройте вкладку Artifacts и обратите внимание на новую версию. Не переживай; Старая версия по-прежнему существует для любых проектов, которые по-прежнему ссылались на него.

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

  5. Как вы сделали ранее, запишите новую версию для следующего урока.

Ссылка на новую версию пакета моделей

Теперь измените проект Tailspin.SpaceGame.Web , чтобы использовать новую версию пакета Tailspin.SpaceGame.Web.Models .

Здесь вы будете работать из копии Visual Studio Code для проекта веб-приложения Space Game , Tailspin.SpaceGame.Web.

  1. В Visual Studio Code откройте Tailspin.SpaceGame.Web.csproj и измените PackageReference на номер версии пакета Tailspin.SpaceGame.Web.Models, который вы только что создали в Azure Artifacts. Затем сохраните файл.

    Приведем пример:

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
    

    Если Visual Studio Code предложит восстановить пакет, проигнорируйте это сообщение. Для краткости мы не будем создавать веб-приложение локально.

  2. В терминале подготовьте, зафиксируйте и отправьте изменения.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. В Azure Pipelines перейдите в проект mslearn-tailspin-spacegame-web и посмотрите, как выполняется сборка.

    Вы видите из выходных данных сборки, которые он получает последнюю зависимость, создает приложение и публикует артефакт для веб-приложения.