Exercício - Criar o pipeline
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
No Azure DevOps, vá para o seu projeto.
Na página do projeto ou no painel esquerdo, selecione Pipelines.
Selecione Criar pipeline (ou Novo pipeline se este não for o primeiro pipeline no projeto).
Na guia Conectar, selecione GitHub.
Quando lhe for pedido, introduza as suas credenciais do GitHub.
Na guia Selecionar, selecione seu repositório mslearn-tailspin-spacegame-web.
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.
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).
Na guia Revisão, observe a configuração inicial da compilação.
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
porname: Default
(ou o nome do pool de agentes, se você tiver especificado um pool diferente ao configurar os segredos do repositório do Codespaces).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 você 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.
Essa configuração é um ótimo começo, porque agora você tem um lugar para adicionar tarefas de compilação. Você ainda precisa atualizá-lo 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
. A filial 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 ao azure-pipelines.yml diretamente do Azure Pipelines. O Azure Pipelines confirma 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, enviar por push 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.
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.Para buscar as alterações mais recentes do GitHub e atualizar sua
main
ramificação, execute estegit 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.
Para criar uma ramificação chamada
build-pipeline
, execute estegit checkout
comando:git checkout -B build-pipeline
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 dedotnet
comando. O pipeline usaDotNetCoreCLI@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 ouscript
. O pipeline usa ascript
tarefa porque é um atalho comum paraCmdLine@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
UseDotNet@2
tarefa, que é a 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.No terminal integrado, execute os seguintes comandos do Git para adicionar azure-pipelines.yml ao índice, confirmar a alteração e enviar a alteração para o GitHub. 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
build-pipeline
ramificação, não a ramificação, para omain
GitHub.Enviar a ramificação para o GitHub aciona o processo de compilação no Azure Pipelines.
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.Gorjeta
Se você não vir a compilação imediatamente, aguarde alguns momentos ou atualize a página.
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: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 for concluída, você verá um conjunto mais completo de tarefas necessárias para criar o aplicativo.
Após a conclusão da compilação, 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.