Ćwiczenie — Wypychanie zmian do pakietu

Ukończone

W tym momencie masz dwa potoki. 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 przećwiczyć będziesz aktualizować pakiet Models i korzystać z tej zmiany z aplikacji internetowej.

W tym celu zaczniesz od dodania właściwości do jednej z klas modelu, a następnie podbicie wersji pakietu. Następnie prześlesz zmianę do usługi GitHub, aby potok mógł skompilować pakiet i opublikować go w usłudze Azure Artifacts.

Następnie zaktualizujesz aplikację internetową, aby odwoływana była nowsza wersja pakietu Models, aby mogła używać dodanej właściwości.

Tworzenie gałęzi

Zacznijmy od utworzenia gałęzi, w której będzie przechowywana nasza praca. Utwórz gałąź o nazwie add-game-style, która jest oparta na main gałęzi .

W tym momencie masz dwie kopie otwartego programu Visual Studio Code, jedną dla projektu Tailspin.SpaceGame.Web.Models i jedną dla projektu aplikacji internetowej Space Game, Tailspin.SpaceGame.Web. W tym miejscu będziesz pracować z 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 git checkout polecenie.

    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ć z kopii programu Visual Studio Code dla projektu Tailspin.SpaceGame.Web.Models .

  1. W programie Visual Studio Code otwórz plik Tailspin.SpaceGame.Web.Models/Models/Score.cs. Dodaj następującą wyróżnioną właściwość do listy właściwości już tam.

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

    Uwaga

    Wprowadzasz zmianę w pliku w projekcie, aby zademonstrować, w którym miejscu jest podbijany 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 i zweryfikowaniu Score kompilacji projektu można 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 plik azure-pipelines.yml, zmień wartość minorVersion z 0 na 1, a następnie zapisz plik.

    minorVersion: '1'
    

    W tym miejscu zmienimy wersję z 1.0.0 na 1.1.0, aby wprowadzić 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, bumping wersji pomocniczej do 1 (1.1.0) informuje innych, że pakiet jest do tyłu zgodny 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 zawierają dokumentację w postaci dziennika zmian, który wyjaśnia 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ę Artifacts (Artefakty) i zwróć uwagę na nową wersję. Nie martw się; Stara wersja jest nadal dostępna dla wszystkich projektów, które nadal się do niej odwołują.

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

  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ć z kopii programu Visual Studio Code dla projektu aplikacji internetowej Space Game Tailspin.SpaceGame.Web.

  1. W programie Visual Studio Code otwórz plik Tailspin.SpaceGame.Web.csproj i przejdź PackageReference do numeru wersji pakietu Tailspin.SpaceGame.Web.Models utworzonego w usłudze Azure Artifacts. Następnie zapisz plik.

    Oto przykład:

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

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

  2. W terminalu przygotuj, 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 danych wyjściowych kompilacji zostanie wyświetlona najnowsza zależność, skompiluje aplikację i opublikujesz artefakt dla aplikacji internetowej.