Exercício - Criar o pipeline

Concluído

Neste ponto, Mara definiu uma configuração de compilação para o site Space Game . Agora é a sua vez. Você vai criar um pipeline e produzir seu primeiro artefato de construção.

Como você viu, Mara usou um arquivo YAML para definir a compilação. Quando você cria um pipeline, o processo solicita seu arquivo YAML. O projeto ainda não tem esse arquivo.

Quando você não fornece um arquivo YAML inicial para seu projeto, o Azure Pipelines pode criar um para você com base no seu tipo de aplicativo. Aqui, você criará um aplicativo ASP.NET Core, mas o Azure Pipelines também fornece configurações de compilação inicial para outros tipos de projeto, incluindo Java, Go e muito mais.

Criar o pipeline

  1. No Azure DevOps, vá para o seu projeto.

  2. Na página do projeto ou no painel esquerdo, selecione Pipelines.

  3. Selecione Criar pipeline (ou Novo pipeline se este não for o primeiro pipeline no projeto).

  4. Na guia Conectar, selecione GitHub.

    Quando lhe for pedido, introduza as suas credenciais do GitHub.

  5. Na guia Selecionar, selecione seu repositório mslearn-tailspin-spacegame-web.

  6. Para instalar o aplicativo Azure Pipelines, você pode ser redirecionado para o GitHub. Em caso afirmativo, role até a parte inferior e selecione Aprovar & Instalar.

  7. Na guia Configurar, selecione ASP.NET Core.

    Nota

    Se não vir esta opção, selecione Mostrar mais. Não selecione ASP.NET Core (.NET Framework).

    Screenshot of locating ASP.NET Core from the list of provided application types.

  8. Na guia Revisão, observe a configuração inicial da compilação.

    Screenshot of Azure Pipelines showing the initial build configuration.

    Esta é uma configuração muito básica que o Azure DevOps fornece para você com base no seu tipo de aplicativo, ASP.NET Core. A configuração padrão usa um agente hospedado pela Microsoft.

    Substitua o texto vmImage: ubuntu-latest por name: Default (ou o nome do pool de agentes, se você tiver especificado um pool diferente ao configurar os segredos do repositório do Codespaces).

  9. Na guia Revisão, selecione Salvar e executar. Para confirmar suas alterações no GitHub e iniciar o pipeline, escolha Confirmar diretamente na ramificação principal e selecione Salvar e executar uma segunda vez. Se for solicitado a conceder permissão com uma mensagem como This pipeline needs permission to access a resource before this run can continue, escolha Exibir e siga as instruções para permitir o acesso.

Veja o pipeline correr

Em Trabalhos, selecione Trabalho. Em seguida, rastreie o processo de compilação através de cada uma das etapas. Para ver a saída do trabalho como um arquivo de texto quando a compilação for concluída, você também pode selecionar Exibir log bruto.

Se o pipeline não iniciar rapidamente, verifique se o Codespaces ainda está em execução. Codespaces será desligado após 30 minutos e pode precisar ser reiniciado.

Se o status do pipeline permanecer na fila e não fizer a transição para Executando depois de alguns momentos, verifique seus trabalhos paralelos e solicite uma concessão gratuita. Se você não tiver acesso a trabalhos paralelos, poderá iniciar o módulo novamente com o Codespaces.

Aqui, você vê as etapas que a definição de compilação criou. Ele prepara a VM, busca o código-fonte mais recente do GitHub e, em seguida, cria o aplicativo.

Screenshot of Azure Pipelines showing output from the initial build configuration.

Essa configuração é um ótimo começo, porque agora você tem um lugar para adicionar tarefas de compilação. Mas ele precisa ser atualizado para atender às necessidades da equipe do Tailspin, como para minar arquivos JavaScript e CSS.

Gorjeta

Verifique o seu e-mail. Talvez você já tenha recebido uma notificação de compilação com os resultados da sua execução. Você pode usar essas notificações para informar aos membros da sua equipe quando as compilações foram concluídas e se cada compilação passou ou falhou.

Adicionar tarefas de compilação

Agora que você tem um processo de compilação em funcionamento, você pode começar a adicionar tarefas de compilação.

Lembre-se de que você está trabalhando a partir do main ramo. Para manter seu trabalho, você criará uma ramificação chamada build-pipeline. O ramo lhe dá um lugar para experimentar e fazer sua construção funcionar completamente sem afetar o resto da equipe.

Você pode adicionar tarefas de compilação a azure-pipelines.yml diretamente do Azure Pipelines. O Azure Pipelines confirmará suas alterações diretamente em sua filial. Aqui, você alterará azure-pipelines.yml localmente e enviará ou carregará suas alterações para o GitHub. Fazê-lo desta forma permite que você pratique suas habilidades Git. Observe o pipeline criar automaticamente o aplicativo quando você enviar alterações.

Na prática, você pode adicionar tarefas de compilação uma de cada vez, aumentar suas alterações e assistir à execução da compilação. Aqui, você adicionará todas as tarefas de compilação que identificamos anteriormente de uma só vez.

Nota

Você está prestes a executar alguns comandos do Git. Não se preocupe se você é novo no Git. Vamos mostrar-lhe o que fazer. Também entraremos em mais detalhes sobre o Git em módulos futuros.

  1. No Visual Studio Code, vá para o terminal integrado. Certifique-se de ir para a main filial em seu repositório e, em seguida, siga as etapas.

  2. Para buscar as alterações mais recentes do GitHub e atualizar sua main ramificação, execute este git pull comando.

    git pull origin main
    

    Você verá na saída que o Git busca um arquivo chamado azure-pipelines.yml. Esta é a configuração de pipeline inicial que o Azure Pipelines criou para você. Quando você configura o pipeline, o Azure Pipelines adiciona esse arquivo ao repositório do GitHub.

  3. Para criar uma ramificação chamada build-pipeline, execute este git checkout comando:

    git checkout -B build-pipeline
    
  4. No Visual Studio Code, altere azure-pipelines.yml como você vê aqui:

    trigger:
    - '*'
    
    pool:
      name: 'Default' # Replace Default with the name of your agent pool if you used a different pool
    
    variables:
      buildConfiguration: 'Release'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK 6.x'
      inputs:
        packageType: sdk
        version: '6.x'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: Tailspin.SpaceGame.Web/wwwroot
    
    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - Release'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration Release'
        projects: '**/*.csproj'
    
    trigger:
    - '*'
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
      buildConfiguration: 'Release'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK 6.x'
      inputs:
        packageType: sdk
        version: '6.x'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: Tailspin.SpaceGame.Web/wwwroot
    
    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - Release'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration Release'
        projects: '**/*.csproj'
    

    steps Na seção, você verá as tarefas de compilação mapeadas para cada um dos comandos de script que identificamos anteriormente.

    O Azure Pipelines fornece tarefas de compilação internas que são mapeadas para muitas atividades de compilação comuns. Por exemplo, a DotNetCoreCLI@2 tarefa é mapeada para o utilitário de linha de dotnet comando. O pipeline usa DotNetCoreCLI@2 duas vezes: uma vez para restaurar ou instalar as dependências do projeto e outra para criar o projeto.

    Lembre-se de que nem todas as atividades de compilação são mapeadas para uma tarefa interna. Por exemplo, não há nenhuma tarefa interna que execute o utilitário node-Sass ou grave informações de compilação em um arquivo de texto. Para executar comandos gerais do sistema, use a CmdLine@2 tarefa ou script . O pipeline usa a script tarefa porque é um atalho comum para CmdLine@2.

    Na etapa de compilação que grava informações sobre a compilação em um arquivo, observe estes elementos:

    • $(Build.DefinitionName)
    • $(Build.BuildId)
    • $(Build.BuildNumber)

    Esses elementos são variáveis internas que o sistema fornece para uso em seus pipelines:

    • $(Build.DefinitionName) é o nome do pipeline de compilação. Por exemplo, "SpaceGame-Web-CI".
    • $(Build.BuildId) é um identificador numérico para a compilação concluída, como 115.
    • $(Build.BuildNumber) é o nome da compilação concluída. Você pode configurar o formato, mas, por padrão, o número de compilação inclui a data atual seguida pelo número de compilação desse dia. Um exemplo de número de compilação é "20190329.1".

    Você também pode definir suas próprias variáveis, o que você fará em breve.

    Você também deve ter notado a tarefa, que é a UseDotNet@2 primeira etapa de compilação. Mara lembrou que o script de construção não instalava as ferramentas de construção necessárias. Embora o agente de compilação venha com várias versões do SDK do .NET, essa tarefa permite que o autor do pipeline especifique facilmente a versão que precisa usar no agente de compilação.

  5. No terminal integrado, para adicionar azure-pipelines.yml ao índice, confirmar a alteração e enviar a alteração para o GitHub, execute os seguintes comandos do Git. Essas etapas são semelhantes às etapas executadas anteriormente.

    Gorjeta

    Antes de executar esses comandos do Git, lembre-se de salvar azure-pipelines.yml.

    git add azure-pipelines.yml
    git commit -m "Add build tasks"
    git push origin build-pipeline
    

    Desta vez, você empurra a ramificação, não a build-pipeline ramificação, para o main GitHub.

    Enviar a ramificação para o GitHub aciona o processo de compilação no Azure Pipelines.

  6. No Azure Pipelines, vá para sua compilação. Para fazer isso, na lateral da página, selecione Pipelines e, em seguida, selecione seu pipeline. Você verá sua mensagem de confirmação e que a compilação está sendo executada usando o código da build-pipeline ramificação.

    Screenshot of Azure Pipelines showing the run history, including the branch you recently pushed to GitHub.

    Gorjeta

    Se você não vir a compilação imediatamente, aguarde alguns momentos ou atualize a página.

  7. Selecione sua compilação e escolha Trabalhos e rastreie as tarefas de compilação à medida que são executadas.

    Por exemplo, aqui está o que acontece quando a tarefa é executada gulp@1 para executar as tarefas gulp que minam os ativos JavaScript e CSS:

    Screenshot of tracing the gulp tasks in Azure Pipelines.

    Se alguma etapa falhar, você verá o erro na saída para poder diagnosticar e corrigir a falha.

    Anteriormente, você executava uma configuração de compilação mais mínima. Desta vez, quando a compilação é concluída, você vê um conjunto mais completo de tarefas necessárias para criar o aplicativo.

    Screenshot of Azure Pipelines showing the complete list of build tasks.

  8. Depois que a compilação for concluída, selecione qualquer uma das etapas para ver a progressão geral da compilação. A partir daí, você pode saltar para os logs de compilação ou a alteração associada no GitHub.

    Screenshot of Azure Pipelines showing the complete list of build tasks. The Run gulp task is selected.