Упражнение. Отправка изменения в пакет
На этом этапе у вас есть два конвейера. Один публикует пакет "Модели" в Артефактах 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 .
В Visual Studio Code откройте встроенный терминал.
Чтобы создать ветвь с именем
add-game-style
терминала, выполните следующуюgit checkout
команду.git checkout -B add-game-style
Добавление свойства в пакет моделей
Добавьте свойство с именем Score
в один из классов модели, который предоставляет стиль игры (или трудности), с которым связана оценка.
Здесь вы будете работать из копии Visual Studio Code для проекта Tailspin.SpaceGame.Web.Models .
В 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; } } }
Примечание.
Вы вносите изменения в файл в проекте, чтобы продемонстрировать, где вы столкнулись с номером версии. Однако мы не обновим веб-приложение для использования нового свойства.
Сохраните файл.
Чтобы проверить работу, создайте проект:
dotnet build --configuration Release
На практике можно выполнить дополнительные шаги проверки, например выполнение тестов или тестирование нового пакета с приложением, использующим его.
Сборка и публикация пакета
Теперь, когда вы добавили новое свойство в Score
класс и проверили сборки проекта, вы можете обновить версию пакета. Затем вы можете отправить изменения в GitHub, чтобы Azure Pipelines могли создавать и публиковать обновленный пакет.
Откройте azure-pipelines.yml, измените его
minorVersion
на0
1
и сохраните файл.minorVersion: '1'
Здесь мы увеличим версию с 1.0.0 до 1.1.0, чтобы изменение было очевидным. На практике вы будете следовать схеме управления версиями для типа пакета, с которым вы работаете.
Например, в соответствии с семантическим версионированием, когда вы увеличиваете основной номер версии до 1 (1.1.0), это означает, что пакет не имеет обратной совместимости с приложениями, использующими версию 1.0.0 этого пакета. Пользователи пакета могут изменить свое приложение, чтобы использовать новые функции.
Популярные проекты с открытым кодом предоставляют документацию в виде журнала изменений, которая объясняет изменения, внесенные в каждую версию, и как перейти с одной основной версии на следующую.
Этап, фиксация и отправка изменений:
git add . git commit -m "Add GameStyle property" git push origin add-game-style
В Microsoft Azure Pipelines перейдите в проект Tailspin.SpaceGame.Web.Models и просмотрите выполнение сборки.
Откройте вкладку Artifacts и обратите внимание на новую версию. Не переживай; Старая версия по-прежнему существует для любых проектов, которые по-прежнему ссылались на него.
Как вы сделали ранее, запишите новую версию для следующего урока.
Ссылка на новую версию пакета моделей
Теперь измените проект Tailspin.SpaceGame.Web , чтобы использовать новую версию пакета Tailspin.SpaceGame.Web.Models .
Здесь вы будете работать из копии Visual Studio Code для проекта веб-приложения Space Game , Tailspin.SpaceGame.Web.
В 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 предложит восстановить пакет, проигнорируйте это сообщение. Для краткости мы не будем создавать веб-приложение локально.
В терминале подготовьте, зафиксируйте и отправьте изменения.
git add . git commit -m "Bump Models package to 1.1.0" git push origin models-package
В Azure Pipelines перейдите в проект mslearn-tailspin-spacegame-web и посмотрите, как выполняется сборка.
Вы видите из выходных данных сборки, которые он получает последнюю зависимость, создает приложение и публикует артефакт для веб-приложения.