연습 - 패키지에 변경 내용 푸시

완료됨

이제 두 개의 파이프라인이 있습니다. 하나는 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 프로젝트의 사본에서 작업합니다.

  1. Visual Studio Code에서 통합 터미널을 엽니다.

  2. 터미널에서 add-game-style이라는 분기를 만들려면 다음 git checkout 명령을 실행합니다.

    git checkout -B add-game-style
    

Models 패키지에 속성 추가

점수와 관련된 게임 스타일(또는 난이도)을 제공하는 Score라는 모델 클래스 중 하나에 속성을 추가합니다.

여기서는 Tailspin.SpaceGame.Web.Models 프로젝트용 Visual Studio Code 사본에서 작업합니다.

  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 클래스에 새 속성을 추가하고 프로젝트가 성공적으로 빌드되었는지 확인했으므로 패키지 버전을 업데이트할 수 있습니다. 그런 다음 Azure Pipelines가 업데이트된 패키지를 빌드하고 게시할 수 있도록 변경 내용을 GitHub에 푸시할 수 있습니다.

  1. azure-pipelines.yml을 열고 minorVersion0에서 1로 변경한 다음, 파일을 저장합니다.

    minorVersion: '1'
    

    여기서는 버전을 1.0.0에서 1.1.0으로 변경하여 변경 내용을 명확하게 만듭니다. 연습에서는 작업 중인 패키지 종류에 맞는 버전 관리 체계를 따라야 합니다.

    예를 들어 유의적 버전 관리에 따르면 부 버전을 1(1.1.0)로 높이면 다른 사용자들은 패키지가 해당 패키지의 버전 1.0.0을 사용하는 이전 버전의 앱과 호환됨을 알게 됩니다. 패키지를 사용하는 사용자는 새 기능을 사용하도록 앱을 수정할 수 있습니다.

    널리 사용되는 오픈 소스 프로젝트에서는, 각 버전의 변경 내용과 하나의 주 버전에서 다음 버전으로 마이그레이션하는 방법을 설명하는 changelog 형식의 설명서를 확인할 수 있습니다.

  2. 변경 내용을 준비하고 커밋하며 푸시합니다.

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. Microsoft Azure Pipelines에서 Tailspin.SpaceGame.Web.Models 프로젝트로 이동하여 빌드 실행을 확인합니다.

  4. 아티팩트 탭을 열고 새 버전을 확인합니다. 걱정하지 마세요. 이전 버전은 해당 버전을 참조하는 프로젝트를 위해 계속 존재합니다.

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

  5. 이전에 했던 것처럼 다음 단원을 위해 새 버전을 기록해 둡니다.

Models 패키지의 새 버전 참조

이제 Tailspin.SpaceGame.Web 프로젝트를 변경하여 Tailspin.SpaceGame.Web.Models 패키지의 새 버전을 사용합니다.

여기서는 Space Game 웹앱 프로젝트인 Tailspin.SpaceGame.Web의 Visual Studio Code 사본에서 작업합니다.

  1. 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에서 패키지 복원을 요청하는 경우 해당 메시지를 무시해도 됩니다. 간단히 하기 위해 로컬로 웹앱을 빌드하지는 않습니다.

  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 프로젝트로 이동하고 빌드 실행을 확인합니다.

    빌드 출력에서 ​​최신 종속성을 가져오고, 앱을 빌드하며, 웹앱의 아티팩트를 게시한다는 것을 알 수 있습니다.