Implantar em VMs do Linux em um ambiente
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Neste início rápido, você aprenderá a configurar um pipeline do Azure DevOps para implantação em vários recursos de VM (máquina virtual) do Linux em um ambiente. Você pode usar essas instruções 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 e um projeto do Azure DevOps. Inscreva-se no Azure Pipelines.
Para aplicativos JavaScript ou Node.js, pelo menos duas VMs do Linux configuradas com o Nginx no Azure.
Bifurcar 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 VMs do Linux
Você pode adicionar VMs como recursos em ambientes e direcioná-las para implantações de várias VMs. O histórico de implantação do ambiente fornece rastreabilidade da VM para a confirmação.
Adicionar um recurso de VM
Em seu projeto do Azure DevOps, acesse Ambientes de Pipelines> e selecione Criar ambiente ou Novo ambiente.
Na primeira tela Novo ambiente, adicione um Nome e uma Descrição opcional.
Em Recurso, selecione Máquinas virtuais e, em seguida, selecione Avançar.
Na próxima tela Novo ambiente , escolha Linux em Sistema operacional.
Copie o script de registro do Linux. O script é o mesmo para todas as VMs do Linux adicionadas ao ambiente.
Observação
O PAT (Token de Acesso Pessoal) do usuário conectado é pré-inserido no script e expira após três horas.
Selecione Fechar e observe que o novo ambiente é criado.
Execute o script copiado em cada VM de destino que você deseja registrar no ambiente.
Observação
Se a VM já tiver outro agente em execução, forneça um nome exclusivo para o agente se registrar no ambiente.
Depois que a VM é registrada, ela aparece como um recurso na guia Recursos do ambiente.
Para copiar o script novamente para criar mais recursos, por exemplo, se o PAT expirar, selecione Adicionar recurso na página do ambiente.
Adicionar e gerenciar marcas
As marcas são uma maneira de direcionar um conjunto específico de VMs em um ambiente para implantação. Não há limite para o número de marcas que você pode usar. As tags são limitadas a 256 caracteres cada.
Você pode adicionar ou remover marcas para VMs no script de registro interativo ou por meio da interface do usuário selecionando Mais ações para um recurso de VM. Para este início rápido, atribua uma marca diferente a cada VM em seu ambiente.
Definir um pipeline de build de CI
Você precisa de um pipeline de build de CI (integração contínua) que publique seu aplicativo Web e um script de implantação para ser executado localmente no servidor Linux. Configure seu pipeline de build de CI com base no runtime que você deseja usar.
Importante
Durante os procedimentos do GitHub, você pode ser solicitado a criar uma conexão de serviço do GitHub ou ser redirecionado para o GitHub para entrar, instalar o Azure Pipelines ou autorizar o Azure Pipelines. Siga as instruções na tela para efetuar o processo. Para obter mais informações, confira Acesso ao repositórios do GitHub.
- No projeto do Azure DevOps, selecione Pipelines>Create Pipeline e, em seguida, selecione GitHub como o local do código-fonte.
- Na tela Selecionar um repositório , selecione o repositório de amostra bifurcado.
- Na página Configurar seu pipeline, selecione Pipeline inicial. O Azure Pipelines gera um arquivo YAML chamado azure-pipelines.yml para o pipeline.
- Selecione o cursor suspenso ao lado de Salvar e executar, selecione Salvar e, em seguida, selecione Salvar novamente. O arquivo é salvo no repositório GitHub bifurcado.
Editar o código
Selecione Editar e substitua o conteúdo do arquivo azure-pipelines.yml pelo código a seguir. Você adiciona a esse YAML em etapas futuras.
O código a seguir cria seu projeto Node.js com npm.
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 informações, examine as etapas em Criar seu aplicativo Node.js com gulp para criar um build.
Executar seu pipeline
Selecione Validar e salvar, selecione Salvar, selecione Executar e selecione Executar novamente.
Depois que o pipeline for executado, verifique se o trabalho foi executado com êxito e se você vê um artefato publicado.
Implantar nas VMs do Linux
Edite seu pipeline para adicionar o trabalho de implantação a seguir. Substitua
<environment name>
pelo nome do ambiente que você criou anteriormente. Selecione VMs específicas do ambiente para receber a implantação especificando o<VM tag>
que você definiu para cada VM.jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> # Update value for VMs to deploy to strategy:
Para obter mais informações, consulte a definição completa de jobs.deployment.
Para obter mais informações sobre a palavra-chave e os
environment
recursos direcionados por um trabalho de implantação, consulte a definição jobs.deployment.environment.Especifique ou
runOnce
rolling
como uma implantaçãostrategy
.runOnce
é a estratégia de implantação mais simples. OspreDeploy
deploy
ganchos ,routeTraffic
epostRouteTraffic
lifecycle hooks são executados uma vez. Em seguida, ouon:
success
executaon:
failure
.O código a seguir mostra um trabalho de implantação para
runOnce
:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: runOnce: deploy: steps: - script: echo my first deployment
O código a seguir mostra um snippet YAML para a
rolling
estratégia de implantação, usando um pipeline Java. Você pode atualizar até cinco destinos em cada iteração. OmaxParallel
parâmetro especifica o número de destinos que podem ser implantados em paralelo.A
maxParallel
seleção considera o número absoluto ou a porcentagem de destinos que devem permanecer disponíveis a qualquer momento, excluindo os destinos que estão sendo implantados, e determina as condições de êxito e falha durante a implantação.jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> 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
A cada execução desse trabalho, o histórico de implantação é registrado no ambiente em que você criou e registrou as VMs.
Acesse a rastreabilidade do pipeline no ambiente
A exibição Implantações do ambiente fornece rastreabilidade completa de confirmações e itens de trabalho e um histórico de implantação entre pipelines para o ambiente.