Ejercicio: insertar un cambio en el paquete

Completado

En este punto, tiene dos canalizaciones. Una que publica el paquete Modelos en Azure Artifacts y otra para la aplicación web Space Game. La configuración de compilación para la aplicación web hace referencia al paquete Modelos para que pueda acceder a las clases de modelo.

Aquí pondrá en práctica la actualización del paquete Modelos y consumirá ese cambio desde la aplicación web.

Para ello, primero debe agregar una propiedad a una de las clases de modelo y, luego, aumentar la versión del paquete. Después, debe enviar el cambio a GitHub para que la canalización pueda compilar el paquete y publicarlo en Azure Artifacts.

Luego, actualizará la aplicación web para que haga referencia al número de versión más reciente del paquete Modelos, con el fin de que pueda usar la propiedad agregada.

Crear una rama

Comencemos por crear una rama que contenga nuestro trabajo. Cree una rama denominada add-game-style, que se basa en la rama main.

En este punto, tiene dos copias de la instancia de Visual Studio Code abiertas: una para el proyecto Tailspin.SpaceGame.Web.Models y otra para el proyecto de aplicación web Space Game, Tailspin.SpaceGame.Web. Aquí va a trabajar desde la copia del proyecto Tailspin.SpaceGame.Web.Models.

  1. Desde Visual Studio Code, abra el terminal integrado.

  2. En el terminal, ejecute el comando git checkout siguiente para crear una rama denominada add-game-style.

    git checkout -B add-game-style
    

Agregar una propiedad al paquete Modelos

Agregue una propiedad denominada Score a una de las clases de modelo, que proporciona el estilo (o la dificultad) del juego al que está asociada la puntuación.

Aquí, va a trabajar desde la copia de Visual Studio Code del proyecto Tailspin.SpaceGame.Web.Models.

  1. En Visual Studio Code, abra Tailspin.SpaceGame.Web.Models/Models/Score.cs. Agregue la propiedad resaltada siguiente a la lista de propiedades ya existentes.

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

    Nota:

    Se está realizando un cambio en un archivo del proyecto para mostrar dónde aumenta el número de versión. Pero no actualizamos la aplicación web para que use la nueva propiedad.

  2. Guarde el archivo.

  3. Para comprobar el trabajo, compile el proyecto:

    dotnet build --configuration Release
    

    En la práctica, podría realizar pasos de comprobación adicionales, como ejecutar pruebas o probar el paquete nuevo con una aplicación que lo utilice.

Compilar y publicar el paquete

Ahora que se ha agregado la propiedad nueva a la clase Score y se ha comprobado que el proyecto se compila correctamente, puede actualizar la versión del paquete. Después, puede insertar el cambio a GitHub para que Azure Pipelines pueda compilar y publicar el paquete actualizado.

  1. Abra azure pipelines.yml, cambie minorVersion de 0 a 1 y guarde el archivo.

    minorVersion: '1'
    

    En este caso, se cambiará la versión de 1.0.0 a 1.1.0 para que el cambio sea evidente. En la práctica, debería seguir el esquema del control de versiones para el tipo de paquete con el que trabaja.

    Por ejemplo, según el Versionamiento Semántico, aumentar la versión secundaria a 1 (1.1.0) indica a otros usuarios que el paquete es compatible con versiones anteriores con aplicaciones que usen la versión 1.0.0 de ese paquete. Los usuarios que usan el paquete podrían modificar su aplicación para usar nuevas características.

    Los proyectos de código abierto populares proporcionan documentación en forma de registro de cambios que explica los cambios realizados en cada versión y cómo migrar desde una versión principal a la siguiente.

  2. Almacene provisionalmente, confirme y envíe los cambios:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. En Microsoft Azure Pipelines, vaya al proyecto Tailspin.SpaceGame.Web.Models y observe la ejecución de la compilación.

  4. Abra la pestaña Artefactos y fíjese en la nueva versión. No se preocupe; la versión anterior todavía está presente para cualquier proyecto que haga referencia a ella.

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

  5. Tal como ha hecho anteriormente, anote la versión nueva de la unidad siguiente.

Hacer referencia a la nueva versión del paquete Modelos

Ahora, cambie el proyecto Tailspin.SpaceGame.Web para que use la versión nueva del paquete Tailspin.SpaceGame.Web.Models.

Aquí trabajará desde la copia de Visual Studio Code del proyecto de aplicación web Space Game, Tailspin.SpaceGame.Web.

  1. En Visual Studio Code, abra Tailspin.SpaceGame.Web.csproj y cambie PackageReference al número de versión del paquete Tailspin.SpaceGame.Web.Models que creó en Azure Artifacts. A continuación, guarde el archivo.

    Este es un ejemplo:

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

    Si Visual Studio Code le pide que restaure los paquetes, puede ignorar ese mensaje. Para mayor brevedad, no compilaremos localmente la aplicación web.

  2. Desde el terminal, almacene de forma provisional los cambios, confírmelos y envíelos.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. En Azure Pipelines, vaya al proyecto mslearn-tailspin-spacegame-web y observe la ejecución de la compilación.

    En la salida de la compilación verá que obtiene la dependencia más reciente, compila la aplicación y publica el artefacto de la aplicación web.