Implantar uma máquina virtual do Linux
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Saiba como configurar um pipeline do Azure DevOps para implantações de máquinas virtuais múltiplas que usam um ambiente e recursos de máquina virtual.
Use as instruções neste artigo para qualquer aplicativo que publique um pacote de implantação da Web.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma organização ativa do Azure DevOps. Inscreva-se no Azure Pipelines.
- Uma VM (máquina virtual) do Linux hospedada no Azure.
- Para instalar um aplicativo JavaScript ou Node.js, configure uma VM do Linux com o Nginx no Azure, confira Criar uma VM Linux com a CLI do Azure.
- Para implantar aplicativos baseados em Java Spring Boot e Spring Cloud, crie uma VM do Linux no Azure usando o modelo Java 13 no Ubuntu 20.04, que fornece um runtime baseado em OpenJDK totalmente compatível.
Obter o código de exemplo
Se já tiver um aplicativo no GitHub que deseja implantar, você poderá criar um pipeline para esse código.
Se você for um novo usuário, bifurque este repositório no GitHub:
https://github.com/MicrosoftDocs/pipelines-javascript
Criar um ambiente com máquinas virtuais
Você pode adicionar máquinas virtuais como recursos em ambientes e direcioná-las para implantações de várias VMs. A exibição do histórico de implantação fornece rastreabilidade da VM para a confirmação.
Entre na sua organização do Azure DevOps e navegue até seu projeto.
Vá para a página Pipelines e selecione Ambientes>Criar Ambiente.
Especifique um Nome (obrigatório) para o ambiente e uma Descrição.
Escolha Máquinas Virtuais como um Recurso a ser adicionado ao ambiente e selecione Avançar.
Escolha Linux para o Sistema Operacional e copie o script de registro.
Execute o script de registro em cada uma das VMs de destino registradas no ambiente.
Observação
- O PAT (Token de Acesso Pessoal) do usuário conectado é pré-inserido no script e expira após três horas.
- Se sua VM já tiver algum agente em execução, forneça um nome exclusivo para registro no ambiente.
Depois que a VM for registrada, ela começará a aparecer como um recurso de ambiente em Recursos.
Para adicionar mais VMs, copie o script novamente. Selecione Adicionar recurso e escolha Máquinas Virtuais. Esse script é o mesmo para todas as VMs que você deseja adicionar ao mesmo ambiente.
Cada computador interage com o Azure Pipelines para coordenar a implantação do seu aplicativo.
Você pode adicionar ou remover marcas para a VM. Selecione os pontos no final de cada recurso de VM em Recursos.
As marcas limitam a implantação a VMs específicas quando o ambiente é usado em um trabalho de implantação. Cada marca é limitada a 256 caracteres. Não há limite para o número de marcas que você pode criar.
Definir o pipeline de build de CI
Você precisa de um pipeline de build de CI que publique seu aplicativo Web. Você também precisa de um script de implantação que possa ser executado localmente no servidor Ubuntu. Configure um pipeline de build de CI com base no runtime que você deseja usar.
Entre na organização do Azure DevOps e acesse seu projeto.
Em seu projeto, vá para a página Pipelines e escolha a ação para criar um pipeline.
Selecione GitHub como o local do código-fonte.
Você pode ser redirecionado para o GitHub a fim de se conectar. Nesse caso, insira suas credenciais do GitHub.
Quando a lista de repositórios for exibida, selecione o repositório de aplicativo de exemplo desejado.
O Azure Pipelines analisa seu repositório e recomendará um modelo de pipeline adequado.
Selecione o modelo inicial e copie o snippet YAML abaixo para compilar um projeto Node.js geral com o npm. Você adicionará a esse YAML em etapas futuras.
trigger: - main pool: vmImage: ubuntu-latest stages: - stage: Build displayName: Build stage jobs: - job: Build displayName: Build steps: - task: UseNode@1 inputs: version: '16.x' displayName: 'Install Node.js' - script: | npm install npm run build --if-present npm run test --if-present displayName: 'npm install, build and test' - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(System.DefaultWorkingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip artifact: drop
Para obter mais diretrizes, examine as etapas mencionadas em Criar seu aplicativo Node.js com gulp para criar um build.
Selecione Salvar e executar>Confirmar diretamente no branch principal>Salvar e executar.
Uma nova execução é iniciada. Aguarde a conclusão da execução.
Definir as etapas da CD para implantar na VM do Linux
Edite seu pipeline e adicione um trabalho de implantação referenciando o ambiente e os recursos de VM que você criou anteriormente. Atualize
tags
para fazer referência a marcas para sua máquina virtual.jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: web1 # Update or remove value to match your tag strategy:
Para saber mais sobre as palavra-chave environment
e os recursos direcionados por um trabalho de implantação, confira o esquema YAML.
Selecione conjuntos específicos de VMs do ambiente para receber a implantação especificando as marcas definidas para cada VM no ambiente.
Para obter mais informações, confira concluir o esquema YAML completo para o trabalho de implantação.
Especifique
runOnce
ourolling
como uma estratégia de implantação.runOnce
é a estratégia de implantação mais simples. Todos os ganchos do ciclo de vida, ou sejapreDeploy
deploy
,routeTraffic
epostRouteTraffic
, são executados uma vez. Em seguida,on:
success
ouon:
failure
é executado.Confira o seguinte exemplo de um trabalho de implantação para
runOnce
:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine strategy: runOnce: deploy: steps: - script: echo my first deployment
Confira o exemplo a seguir de um snippet YAML para obter a estratégia sem interrupção com um pipeline java. Você pode atualizar até cinco destinos em cada iteração.
maxParallel
determina o número de destinos para os quais as implantações podem ocorrer paralelamente. As contas de seleção para um número absoluto ou um percentual de destinos que devem permanecer disponíveis a qualquer momento, excluindo os destinos para os quais as implantações estão sendo realizadas. Ele também é usado para determinar as condições de êxito e falha durante a implantação.jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine strategy: rolling: maxParallel: 2 #for percentages, mention as x% preDeploy: steps: - download: current artifact: drop - script: echo initialize, cleanup, backup, install certs deploy: steps: - task: Bash@3 inputs: targetType: 'inline' script: | # Modify deployment script based on the app type echo "Starting deployment script run" sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar' routeTraffic: steps: - script: echo routing traffic postRouteTraffic: steps: - script: echo health check post-route traffic on: failure: steps: - script: echo Restore from backup! This is on failure success: steps: - script: echo Notify! This is on success
Com cada execução desse trabalho, o histórico de implantação é registrado no ambiente de
<environment name>
que você criou e no qual registrou as VMs.
Exibições de rastreabilidade de pipeline no ambiente
A exibição Implantações fornece uma capacidade completa de rastreamento de commits e itens de trabalho, bem como um histórico de implantação entre pipelines por ambiente.
Próximas etapas
Artigos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: ao longo de 2024, vamos eliminar problemas do GitHub como o mecanismo de comentários para conteúdo e substituí-lo por um novo sistema de comentários. Para obter mais informações, consulte:Enviar e exibir comentários de