연습 - 패키지에 변경 내용 푸시
이제 두 개의 파이프라인이 있습니다. 하나는 Models 패키지를 Azure Artifacts에 게시하고, 하나는 Space Game 웹앱에 사용합니다. 웹앱의 빌드 구성에서는 모델 클래스에 액세스할 수 있도록 Models 패키지를 참조합니다.
여기서는 Models 패키지를 업데이트하고 웹앱에서 변경 내용을 사용하는 방법을 연습합니다.
이렇게 하려면 먼저 모델 클래스 중 하나에 속성을 추가하고 패키지 버전을 올려야 합니다. 그런 다음 파이프라인이 패키지를 빌드하고 Azure Artifacts에 게시할 수 있도록 변경 내용을 GitHub에 제출합니다.
그 다음에는 웹앱을 업데이트해 Models 패키지의 최신 버전 번호를 참조하게 하여, 추가된 속성을 사용할 수 있게 합니다.
분기 만들기
작업을 보관할 분기를 만드는 것부터 시작해 보겠습니다. main
분기를 기반으로 하는 add-game-style
이라는 분기를 만듭니다.
이 시점에서 두 개의 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
Models 패키지에 속성 추가
점수와 관련된 게임 스타일(또는 난이도)을 제공하는 Score
라는 모델 클래스 중 하나에 속성을 추가합니다.
여기서는 Tailspin.SpaceGame.Web.Models 프로젝트용 Visual Studio Code 사본에서 작업합니다.
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
클래스에 새 속성을 추가하고 프로젝트가 성공적으로 빌드되었는지 확인했으므로 패키지 버전을 업데이트할 수 있습니다. 그런 다음 Azure Pipelines가 업데이트된 패키지를 빌드하고 게시할 수 있도록 변경 내용을 GitHub에 푸시할 수 있습니다.
azure-pipelines.yml을 열고
minorVersion
을0
에서1
로 변경한 다음, 파일을 저장합니다.minorVersion: '1'
여기서는 버전을 1.0.0에서 1.1.0으로 변경하여 변경 내용을 명확하게 만듭니다. 연습에서는 작업 중인 패키지 종류에 맞는 버전 관리 체계를 따라야 합니다.
예를 들어 유의적 버전 관리에 따르면 부 버전을 1(1.1.0)로 높이면 다른 사용자들은 패키지가 해당 패키지의 버전 1.0.0을 사용하는 이전 버전의 앱과 호환됨을 알게 됩니다. 패키지를 사용하는 사용자는 새 기능을 사용하도록 앱을 수정할 수 있습니다.
널리 사용되는 오픈 소스 프로젝트에서는, 각 버전의 변경 내용과 하나의 주 버전에서 다음 버전으로 마이그레이션하는 방법을 설명하는 changelog 형식의 설명서를 확인할 수 있습니다.
변경 내용을 준비하고 커밋하며 푸시합니다.
git add . git commit -m "Add GameStyle property" git push origin add-game-style
Microsoft Azure Pipelines에서 Tailspin.SpaceGame.Web.Models 프로젝트로 이동하여 빌드 실행을 확인합니다.
아티팩트 탭을 열고 새 버전을 확인합니다. 걱정하지 마세요. 이전 버전은 해당 버전을 참조하는 프로젝트를 위해 계속 존재합니다.
이전에 했던 것처럼 다음 단원을 위해 새 버전을 기록해 둡니다.
Models 패키지의 새 버전 참조
이제 Tailspin.SpaceGame.Web 프로젝트를 변경하여 Tailspin.SpaceGame.Web.Models 패키지의 새 버전을 사용합니다.
여기서는 Space Game 웹앱 프로젝트인 Tailspin.SpaceGame.Web의 Visual Studio Code 사본에서 작업합니다.
Visual Studio Code에서 Tailspin.SpaceGame.Web.csproj를 열고
PackageReference
를 Azure Artifacts에서 만든 Tailspin.SpaceGame.Web.Models 패키지의 버전 번호로 변경합니다. 그런 다음 파일을 저장합니다.예를 들면 다음과 같습니다.
<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 프로젝트로 이동하고 빌드 실행을 확인합니다.
빌드 출력에서 최신 종속성을 가져오고, 앱을 빌드하며, 웹앱의 아티팩트를 게시한다는 것을 알 수 있습니다.