Exercício – Enviar por push uma alteração ao seu pacote

Concluído

Neste ponto, você tem dois pipelines. Um publica o pacote Models no Azure Artifacts e outro, no aplicativo Web Space Game. A configuração de build para o aplicativo Web faz referência ao pacote Models para que ele possa acessar as classes de modelo.

Aqui, você vai treinar como atualizar o pacote de Modelos e consumir essa alteração do aplicativo Web.

Para fazer isso, comece adicionando uma propriedade a uma das classes do modelo e aumente a versão do pacote. Em seguida, envie a alteração ao GitHub para que o pipeline crie o pacote e o publique no Azure Artifacts.

Atualize o aplicativo Web para que ele faça referência ao número de versão mais recente do pacote Modelos e possa usar a propriedade adicionada.

Criar um branch

Vamos começar criando um branch para conter nosso trabalho. Crie um branch chamado add-game-style, que é baseado no branch main.

Neste ponto, você tem duas cópias do software Visual Studio Code abertas uma para o projeto Tailspin.SpaceGame.Web.Models e outra para o projeto de aplicativo Web Space Game, Tailspin.SpaceGame.Web. Aqui, você vai trabalhar usando a cópia do projeto Tailspin.SpaceGame.Web.Models.

  1. No Visual Studio Code, abra o terminal integrado.

  2. No terminal, para criar um branch chamado add-game-style, execute o comando git checkout a seguir.

    git checkout -B add-game-style
    

Adicionar uma propriedade ao pacote de Modelos

Adicione uma propriedade chamada Score a uma das classes de modelo, que fornece o estilo de jogo (ou a dificuldade) com o qual a pontuação está associada.

Aqui, você vai trabalhar usando a cópia do Visual Studio Code para o projeto Tailspin.SpaceGame.Web.Models.

  1. No Visual Studio Code, abra Tailspin.SpaceGame.Web.Models/Models/Score.cs. Adicione a propriedade realçada a seguir à lista de propriedades que já está lá.

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

    Observação

    Você está fazendo uma alteração a um arquivo no projeto para demonstrar em que local você aumenta o número de versão. No entanto, não vamos atualizar o aplicativo Web para usar a nova propriedade.

  2. Salve o arquivo.

  3. Para verificar o trabalho, compile o projeto:

    dotnet build --configuration Release
    

    Na prática, você pode executar etapas de verificação adicional, como executar testes ou testar o novo pacote com um aplicativo que o usa.

Compilar e publicar o pacote

agora que você adicionou a propriedade à classe Score e verificou se o projeto foi compilado com êxito, pode atualizar a versão do pacote. Você pode enviar por push sua alteração para o GitHub para que Azure Pipelines possa criar e publicar o pacote atualizado.

  1. Abra azure-pipelines.yml, altere minorVersion de 0 para 1 e salve o arquivo.

    minorVersion: '1'
    

    Aqui, é possível aumentar a versão 1.0.0 para 1.1.0 para deixar clara a alteração. Na prática, você seguiria para o esquema de controle de versão para o tipo de pacote com que está trabalhando.

    Por exemplo, de acordo com o Controle de Versão Semântico, aumentar a versão principal para 1 (1.1.0) informa que o pacote não é compatível com aplicativos que usam a versão 1.0.0 do pacote. Aqueles que usam o pacote podem então modificar o aplicativo para usar os novos recursos.

    Projetos de código aberto populares fornecem a documentação na forma de um log de mudanças que explica as alterações feitas a cada versão e como migrar de uma versão principal para a próxima.

  2. Prepare, confirme e envie suas alterações por push:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. No Microsoft Azure Pipelines, vá para o projeto Tailspin.SpaceGame.Web.Models e assista ao build ser executado.

  4. Abra a guia Artifacts e observe a nova versão. não se preocupe, a versão antiga ainda está lá para quaisquer projetos que ainda façam referência a ela.

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

  5. Como você fez anteriormente, anote a nova versão para a próxima unidade.

Faça referência à nova versão do pacote de Modelos

Aqui, altere o projeto Tailspin.SpaceGame.Web para usar a nova versão do pacote Tailspin.SpaceGame.Web.Models.

Aqui, você vai trabalhar usando a cópia do Visual Studio Code para o projeto de aplicativo Web Space Game, Tailspin.SpaceGame.Web.

  1. No Visual Studio Code, abra Tailspin.SpaceGame.Web.csproj e altere PackageReference para o número de versão do pacote Tailspin.SpaceGame.Web.Models criado no Azure Artifacts. Em seguida, salve o arquivo.

    Veja um exemplo:

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

    Se o Visual Studio Code solicitar que você restaure os pacotes, você poderá ignorar com segurança essa mensagem. Para fins de brevidade, não vamos compilar o aplicativo Web localmente.

  2. No terminal, prepare, confirme e efetue push das alterações.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. No Azure Pipelines, acesse o projeto mslearn-tailspin-spacegame-web e assista ao build ser executado.

    Você pode ver na saída do build que ele obtém a dependência mais recente, compila o aplicativo e publica o artefato para o aplicativo Web.