Exercício – enviar uma alteração para o seu pacote

Concluído

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

Aqui, você praticará a atualização do pacote Modelos e consumirá essa alteração do aplicativo Web.

Para fazer isso, você começará adicionando uma propriedade a uma das classes de modelo e, em seguida, aumentará a versão do pacote. Em seguida, você enviará a alteração para o GitHub para que o pipeline possa criar o pacote e publicá-lo no Azure Artifacts.

Em seguida, você atualizará o aplicativo Web para fazer referência ao número da versão mais recente do pacote Models para que ele possa usar a propriedade adicionada.

Criar um ramo

Vamos começar por criar um ramo para colocar o nosso trabalho. Crie uma ramificação chamada add-game-style, que é baseada fora da main ramificação.

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

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

  2. No terminal, para criar uma ramificação chamada add-game-style, execute o seguinte git checkout comando.

    git checkout -B add-game-style
    

Adicionar uma propriedade ao pacote Modelos

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

Aqui, você trabalhará a partir da 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 seguinte propriedade realçada à lista de propriedades já 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

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

  2. Guarde o ficheiro.

  3. Para verificar o seu trabalho, construa o projeto:

    dotnet build --configuration Release
    

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

Criar e publicar o pacote

Agora que você adicionou a nova propriedade à Score classe e verificou as compilações do projeto com êxito, você pode atualizar a versão do pacote. Em seguida, você pode enviar sua alteração para o GitHub para que o Azure Pipelines possa criar e publicar o pacote atualizado.

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

    minorVersion: '1'
    

    Aqui, batemos a versão de 1.0.0 para 1.1.0 para deixar a mudança clara. Na prática, você seguiria o esquema de controle de versão para o tipo de pacote com o qual está trabalhando.

    Por exemplo, de acordo com o Versionamento Semântico, bater a versão secundária para 1 (1.1.0) informa aos outros que o pacote é compatível com versões anteriores de aplicativos que usam a versão 1.0.0 desse pacote. Aqueles que usam o pacote podem, então, modificar seu aplicativo para fazer uso de novos recursos.

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

  2. Prepare, confirme e impulsione suas alterações:

    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 observe a execução da compilação.

  4. Abra o separador Artifacts (Artefactos) e veja a nova versão. Não te preocupes; sua versão antiga ainda está lá para todos os projetos que ainda fazem referência a ela.

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

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

Referenciar a nova versão do pacote Modelos

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

Aqui, você trabalhará a partir da cópia do Visual Studio Code para o projeto do 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 que você criou no Azure Artifacts. Em seguida, guarde o ficheiro.

    Eis um exemplo:

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

    Se o Visual Studio Code lhe pedir para restaurar pacotes, pode ignorar com segurança essa mensagem. Por uma questão de brevidade, não criaremos o aplicativo Web localmente.

  2. No terminal, teste, consolide e envie as alterações.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. No Azure Pipelines, vá para o projeto mslearn-tailspin-spacegame-web e assista à execução da compilação.

    Você vê na saída de compilação que ele obtém a dependência mais recente, cria o aplicativo e publica o artefato para o aplicativo Web.