Exercício – criar um pipeline para o seu pacote

Concluído

Aqui, você receberá o novo código da equipe para o projeto Tailspin.SpaceGame.Web.Models que agora é separado do projeto Tailspin.SpaceGame.Web . Irá criar um projeto do Azure Pipelines para o projeto Modelos e ver o artefacto nos Artefactos do Azure com o número de versão 1.0.0 no seu feed.

Que alterações foram feitas no projeto?

Lembre-se que o site Space Game é um aplicativo ASP.NET Core. Ele usa o padrão Model-View-Controller (MVC) para separar dados de como esses dados são exibidos na interface do usuário. O Guilherme e a Teresa querem mover as classes de modelo para uma biblioteca separada para que múltiplos projetos possam utilizar essas classes.

Para fazer isso, eles criam um novo projeto C# chamado Tailspin.SpaceGame.Web.Models que contém apenas as classes de modelo. Ao mesmo tempo, removem as classes de modelo do seu projeto existente, Tailspin.SpaceGame.Web. Substituem as classes de modelo no respetivo projeto existente com uma referência para o projeto Tailspin.SpaceGame.Web.Models.

Para criar esses projetos, o Guilherme e a Teresa utilizam dois pipelines, um para cada projeto. Já tem o primeiro projeto e a respetiva configuração do Azure Pipelines associada. Aqui, você bifurcará o segundo projeto no GitHub e criará uma configuração do Azure Pipelines para criá-lo. Você publicará o pacote resultante no Azure Artifacts.

Preparar o Visual Studio Code

Anteriormente, você configurou o Visual Studio Code para trabalhar com o projeto Tailspin.SpaceGame.Web . Aqui, você abrirá uma segunda instância do Visual Studio Code para poder trabalhar com o projeto Tailspin.SpaceGame.Web.Models .

  1. Abra uma segunda instância do Visual Studio Code.

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

  3. Navegue até o diretório pai de onde seu projeto mslearn-tailspin-spacegame-web está localizado. Aqui está um exemplo que se move para o seu diretório pessoal:

    cd ~
    

Obter o código-fonte

Obtenha o código-fonte para o projeto Tailspin.SpaceGame.Web.Models do GitHub e configure o Visual Studio Code para que você possa trabalhar com os arquivos.

Criar um fork

A primeira etapa é criar um fork do repositório mslearn-tailspin-spacegame-web-models, para que possa trabalhar e modificar os ficheiros de origem. Lembre-se de que a Teresa colocou o diretório Modelos num projeto novo e removeu-o do projeto Web.

Para criar um fork do projeto mslearn-tailspin-spacegame-web-models para a sua conta do GitHub:

  1. Em um navegador da Web, vá para o GitHub e faça login.
  2. Vá para o projeto mslearn-tailspin-spacegame-web-models .
  3. Selecionar Bifurcação.
  4. Para bifurcar o repositório na sua conta, siga as instruções.

Clonar o seu fork localmente

Para clonar os projetos mslearn-tailspin-spacegame-web-models para o seu computador:

  1. No GitHub, vá para a bifurcação do projeto mslearn-tailspin-spacegame-web-models .

  2. Selecione Código. Em seguida, na guia HTTPS , selecione o botão ao lado do URL mostrado para copiar o URL para a área de transferência.

    Screenshot showing the URL and copy button from the GitHub repository.

  3. No Visual Studio Code, vá para a janela do terminal e execute este git clone comando. Substitua o URL que é mostrado pelos conteúdos da sua área de transferência.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Mova para o diretório mslearn-tailspin-spacegame-web-models . Este é o diretório de raiz do seu repositório.

    cd mslearn-tailspin-spacegame-web-models
    

Abrir o projeto e examinar a configuração

No Visual Studio Code, sua janela de terminal aponta para o diretório raiz do projeto mslearn-tailspin-spacegame-web-models . Abra o projeto a partir do explorador de arquivos para que você possa visualizar sua estrutura e trabalhar com arquivos.

  1. A maneira mais fácil de abrir o projeto é reabrir o Visual Studio Code no diretório atual. Para fazer isso, execute o seguinte comando a partir do terminal integrado:

    code -r .
    

    Verá o diretório e a árvore de ficheiros no explorador de ficheiros.

  2. Reabra o terminal integrado. O terminal coloca você na raiz do seu projeto web.

  3. Abra o ficheiro azure-pipelines.yml.

    Verá os passos em que o pacote foi criado, em que a versão foi definida e em que o pacote foi adicionado aos Artefactos do Azure.

    Esta tarefa DotNetCoreCLI@2 cria o projeto:

    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    

    Esta tarefa DotNetCoreCLI@2 edita o projeto em pacotes com uma versão 1.0.0:

    - task: DotNetCoreCLI@2
      displayName: 'Pack the project - $(buildConfiguration)'
      inputs:
        command: 'pack'
        projects: '**/*.csproj'
        arguments: '--no-build --configuration $(buildConfiguration)'
        versioningScheme: byPrereleaseNumber
        majorVersion: '1'
        minorVersion: '0'
        patchVersion: '0'
    

    Ao desenvolver o seu pacote, é comum utilizar o esquema de versões byPrereleaseNumber. Isso acrescenta um sufixo de pré-lançamento exclusivo, como "-CI-20190621-042647" ao final do número da versão. Neste exemplo, o número de versão completo seria "1.0.0-CI-20190621-042647".

    Esta tarefa NuGetCommand@2 envia o pacote para o feed dos Artefactos do Azure Tailspin.SpaceGame.Web.Models:

    - task: NuGetCommand@2
      displayName: 'Publish NuGet package'
      inputs:
        command: push
        feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
        allowPackageConflicts: true
      condition: succeeded()
    

    feedPublish Especifica o nome do feed no qual publicar. O formato do nome é <projectName>/<feedName>, onde:

    • $(System.TeamProject) é uma variável predefinida que se refere ao nome do seu projeto; por exemplo, "Space Game - web - Dependencies".
    • Tailspin.SpaceGame.Web.Models é o nome do feed que você forneceu no exercício anterior.

Definir permissões

Antes de configurar e executar seu pipeline, você precisa dar ao serviço Build as permissões corretas.

  1. Vá para o seu projeto no Azure DevOps.
  2. Selecione Artefatos no menu à esquerda.
  3. Selecione o ícone Configurações no canto superior direito da tela e, em seguida, selecione a guia Permissões .
  4. Selecione o botão Adicionar usuários/grupos .
  5. No campo Usuários/Grupos, insira Space Game - web - Dependencies Build Service, selecione a função de Colaborador e selecione Salvar.

Criar um pipeline no Azure Pipelines

Aprendeu a configurar o Azure Pipelines num módulo anterior. Se precisar de uma atualização, vá para Criar um pipeline de compilação com o Azure Pipelines.

Veja como configurar um segundo pipeline para criar o pacote e carregar esse pacote no Azure Artifacts.

  1. No Azure DevOps, vá para o projeto Space Game - Web - Dependencies .

  2. No menu à esquerda, selecione Pipelines.

  3. Selecione Novo Pipeline.

  4. No separador Connect (Ligar), selecione GitHub.

  5. Na guia Selecionar, selecione mslearn-tailspin-spacegame-web-models.

    Se solicitado, insira suas credenciais do GitHub. Na página apresentada, desloque-se para a parte inferior e selecione Aprovar e instalar.

  6. No separador Review (Rever), verá o novo ficheiro do pipeline azure-pipelines.yml.

  7. Selecione Executar.

  8. Observe a execução do pipeline.

  9. Vá para a guia Artefatos .

  10. Na lista suspensa na parte superior, selecione Tailspin.SpaceGame.Web.Models.

    A screenshot showing the location of the package from the dropdown.

    Verá o pacote resultante, Tailspin.SpaceGame.Web.Models, nos Artefactos do Azure.

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

  11. Selecione o pacote para ir para a página de detalhes. Em seguida, copie o número da versão para um local onde você possa acessá-lo facilmente mais tarde.

    A screenshot of Azure Artifacts showing package details. Highlighted is the version number for the package.

    Você usará esse número de versão na próxima unidade.