Exercice - Pousser (push) une modification vers votre package

Effectué

À ce stade, vous avez deux pipelines. Un premier pipeline publie le package Models sur Azure Artifacts et le second est destiné à l’application web Space Game. La configuration de build pour l’application web référence le package Models afin de pouvoir accéder aux classes de modèle.

Vous allez ici mettre en pratique la mise à jour du package Models et la consommation de cette modification à partir de l’application web.

Pour ce faire, vous allez commencer par ajouter une propriété à l’une des classes de modèle, puis ajoutez la version du package. Vous envoyez ensuite le changement à GitHub pour que le pipeline puisse générer le package et le publier sur Azure Artifacts.

Vous allez ensuite mettre à jour l’application web pour référencer le nouveau numéro de version du package Models afin qu’elle puisse utiliser la propriété ajoutée.

Créer une branche

Nous allons commencer par créer une branche où placer notre travail. Créez une branche nommée add-game-style, qui se base sur la branche main.

À ce stade, vous avez deux copies de Visual Studio Code ouvertes : une pour le projet Tailspin.SpaceGame.Web.Models et l’autre pour le projet d’application web Space Game, Tailspin.SpaceGame.Web. Vous allez travailler à partir de la copie du projet Tailspin.SpaceGame.Web.Models.

  1. Dans Visual Studio Code, ouvrez le terminal intégré.

  2. Dans le terminal, pour créer une branche nommée add-game-style, exécutez la commande git checkout suivante.

    git checkout -B add-game-style
    

Ajouter une propriété au package Models

Ajoutez une propriété nommée Score à l’une des classes de modèle qui fournit le style de jeu (ou difficulté) auquel le score est associé.

Ici, vous allez travailler à partir de la copie Visual Studio Code du projet Tailspin.SpaceGame.Web.Models.

  1. À partir de Visual Studio Code, ouvrez Tailspin.SpaceGame.Web.Models/Models/Score.cs. Ajoutez la propriété en surbrillance suivante à la liste des propriétés existantes.

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

    Notes

    Nous apportons une modification à un fichier du projet afin d’illustrer l’emplacement où vous incrémentez le numéro de version. En revanche, nous ne mettrons pas à jour l’application web pour utiliser la nouvelle propriété.

  2. Enregistrez le fichier .

  3. Pour vérifier votre travail, générez le projet :

    dotnet build --configuration Release
    

    Dans la pratique, vous pourriez effectuer des étapes de vérification supplémentaires, par exemple exécuter des tests ou tester le nouveau package avec une application qui l’utilise.

Générez et publiez le package.

Maintenant que vous avez ajouté la nouvelle propriété à la classe Score et vérifié que le projet est correctement généré, vous pouvez mettre à jour la version du package. Vous pouvez ensuite pousser votre modification vers GitHub afin qu’Azure Pipelines puisse générer et publier le package mis à jour.

  1. Ouvrez azure-pipelines.yml, mettez à jour minorVersion en remplaçant 0 par 1, puis enregistrez le fichier.

    minorVersion: '1'
    

    Ici, nous passons de la version 1.0.0 à 1.1.0 pour que le changement soit clair. Dans la pratique, vous devez suivre le schéma de gestion de versions correspondant au type de package utilisé.

    Par exemple, d’après le versioning sémantique, l’ajout de 1 à la version mineure (1.1.0) indique que le package n’offre pas de compatibilité descendante avec les applications qui utilisent la version 1.0.0 de ce package. Les personnes qui utilisent le package peuvent alors modifier leur application pour utiliser les nouvelles fonctionnalités.

    Les projets open source populaires fournissent une documentation sous la forme d’un changelog qui explique les changements apportés dans chaque version et comment migrer d’une version majeure vers la suivante.

  2. Indexez, commitez et envoyez (push) vos modifications :

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. À partir de Microsoft Azure Pipelines, accédez au projet Tailspin.SpaceGame.Web.Models et observez la build s’exécuter.

  4. Ouvrez l’onglet Artefacts et notez la nouvelle version. Ne vous inquiétez pas, votre ancienne version existe toujours pour tous les projets qui la référencent encore.

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

  5. Comme vous l’avez fait précédemment, notez la nouvelle version pour l’unité suivante.

Référencer la nouvelle version du package Models

Maintenant, modifiez le projet Tailspin.SpaceGame.Web de façon à utiliser la nouvelle version du package Tailspin.SpaceGame.Web.Models.

Ici, vous allez travailler à partir de la copie Visual Studio Code du projet d’application web Space Game, Tailspin.SpaceGame.Web.

  1. Dans Visual Studio Code, ouvrez Tailspin.SpaceGame.Web.csproj et mettez à jour PackageReference avec le numéro de version du package Tailspin.SpaceGame.Web.Models que vous avez créé dans Azure Artifacts. Puis enregistrez le fichier.

    Voici un exemple :

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

    Si Visual Studio Code vous invite à restaurer les packages, vous pouvez ignorer sans risque ce message. Par souci de concision, nous n’allons pas générer l’application web localement.

  2. À partir du terminal, indexez, validez et poussez (push) les modifications.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. Dans Azure Pipelines, accédez au projet mslearn-tailspin-spacegame-web et observez l’exécution de la build.

    Vous constatez à partir de la sortie de build qu’elle obtient la dépendance la plus récente, génère l’application et publie l’artefact pour l’application web.