Ćwiczenie — Przesyłanie Zmiany do Twojego Pakietu

Ukończone

W tym momencie masz dwa rurociągi. Jeden publikuje pakiet Models w usłudze Azure Artifacts, a drugi jest przeznaczony dla aplikacji internetowej Space Game. Konfiguracja kompilacji dla aplikacji internetowej odwołuje się do pakietu Models, aby mógł uzyskać dostęp do klas modelu.

W tym miejscu będziesz ćwiczyć aktualizowanie pakietu Models i wykorzystywanie tej zmiany w aplikacji internetowej.

W tym celu zaczniesz od dodania właściwości do jednej z klas modelu, a następnie zaktualizuj wersję pakietu. Następnie prześlesz zmianę na GitHub, pozwalając pipeline'owi skompilować pakiet i opublikować go w Azure Artifacts.

Następnie zaktualizujesz aplikację internetową, aby odwoływała się do nowszej wersji pakietu Models, dzięki czemu będzie mogła używać dodanej właściwości.

Tworzenie gałęzi

Zacznijmy od utworzenia gałęzi, która będzie zawierała naszą pracę. Utwórz gałąź o nazwie add-game-style, która jest oparta na gałęzi main.

W tym momencie masz dwie kopie otwartego programu Visual Studio Code, jedną dla projektu Tailspin.SpaceGame.Web.Models i jedną dla projektu Space Game aplikacji internetowej, Tailspin.SpaceGame.Web. W tym miejscu będziesz pracować na kopii projektu Tailspin.SpaceGame.Web.Models.

  1. W programie Visual Studio Code otwórz zintegrowany terminal.

  2. W terminalu, aby utworzyć gałąź o nazwie add-game-style, uruchom następujące polecenie git checkout.

    git checkout -B add-game-style
    

Dodawanie właściwości do pakietu Models

Dodaj właściwość o nazwie Scoredo jednej z klas modelu, która zapewnia styl gry (lub trudności), z którym jest skojarzony wynik.

W tym miejscu będziesz pracować na podstawie kopii programu Visual Studio Code dla projektu Tailspin.SpaceGame.Web.Models.

  1. W programie Visual Studio Code otwórz Tailspin.SpaceGame.Web.Models/Models/Score.cs. Dodaj poniższą wyróżnioną cechę do już istniejącej listy cech.

    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; }
        }
    }
    

    Notatka

    Wprowadzasz zmianę w pliku w projekcie, aby zademonstrować, w którym miejscu zwiększany jest numer wersji. Nie zaktualizujemy jednak aplikacji internetowej, aby korzystała z nowej właściwości.

  2. Zapisz plik.

  3. Aby zweryfikować swoją pracę, skompiluj projekt:

    dotnet build --configuration Release
    

    W praktyce możesz wykonać dodatkowe kroki weryfikacji, takie jak uruchamianie testów lub testowanie nowego pakietu za pomocą aplikacji, która z niej korzysta.

Kompilowanie i publikowanie pakietu

Po dodaniu nowej właściwości do klasy Score i zweryfikowaniu kompilacji projektu można pomyślnie zaktualizować wersję pakietu. Następnie możesz wypchnąć zmianę do usługi GitHub, aby usługa Azure Pipelines mogła skompilować i opublikować zaktualizowany pakiet.

  1. Otwórz azure-pipelines.yml, zmień minorVersion z 0 na 1i zapisz plik.

    minorVersion: '1'
    

    W tym miejscu podnosimy wersję z 1.0.0 do 1.1.0, aby wyraźniej zaznaczyć zmianę. W praktyce należy postępować zgodnie ze schematem przechowywania wersji dla rodzaju pakietu, z którym pracujesz.

    Na przykład, zgodnie z Semantic Versioning, podniesienie wersji mniejszej do 1 (1.1.0) informuje innych, że pakiet jest wstecznie kompatybilny z aplikacjami, które używają wersji 1.0.0 tego pakietu. Osoby korzystające z pakietu mogą następnie zmodyfikować swoją aplikację, aby korzystać z nowych funkcji.

    Popularne projekty typu open source udostępniają dokumentację w postaci dziennika zmian , które wyjaśniają zmiany wprowadzone w każdej wersji oraz sposób migracji z jednej wersji głównej do następnej.

  2. Przygotowywanie, zatwierdzanie i wypychanie zmian:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. W usłudze Microsoft Azure Pipelines przejdź do projektu Tailspin.SpaceGame.Web.Models i obejrzyj przebieg kompilacji.

  4. Otwórz kartę Artefakty i zanotuj nową wersję. Nie martw się; Stara wersja jest nadal dostępna dla wszystkich projektów, które nadal się do niej odwołują.

    Zrzut ekranu pakietu w usłudze Azure Artifacts przedstawiający wersję 1.1 pakietu.

  5. Tak jak poprzednio, zapisz nową wersję na potrzeby następnej lekcji.

Odwołanie do nowej wersji pakietu Models

Teraz zmień projekt Tailspin.SpaceGame.Web, aby użyć nowej wersji pakietu Tailspin.SpaceGame.Web.Models.

W tym miejscu będziesz pracować na kopii programu Visual Studio Code dla projektu aplikacji internetowej Space Game, Tailspin.SpaceGame.Web.

  1. W Visual Studio Code otwórz Tailspin.SpaceGame.Web.csproj, a następnie zmień PackageReference na numer wersji pakietu Tailspin.SpaceGame.Web.Models, który utworzyłeś w Azure Artifacts. Następnie zapisz plik.

    Oto przykład:

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

    Jeśli program Visual Studio Code poprosi o przywrócenie pakietów, możesz bezpiecznie zignorować ten komunikat. W celu zwięzłości nie skompilujemy aplikacji internetowej lokalnie.

  2. Z poziomu terminala zrób staging, zatwierdź i wypchnij zmiany.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. W usłudze Azure Pipelines przejdź do projektu mslearn-tailspin-spacegame-web i obejrzyj przebieg kompilacji.

    Na podstawie wyników kompilacji można zauważyć, że pobierana jest najnowsza zależność, aplikacja jest kompilowana, a artefakt publikowany dla aplikacji internetowej.