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

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.

  1. Entre na sua organização do Azure DevOps e navegue até seu projeto.

  2. Vá para a página Pipelines e selecione Ambientes>Criar Ambiente.

  3. Especifique um Nome (obrigatório) para o ambiente e uma Descrição.

  4. Escolha Máquinas Virtuais como um Recurso a ser adicionado ao ambiente e selecione Avançar.

  5. Escolha Linux para o Sistema Operacional e copie o script de registro.

  6. 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.
  7. Depois que a VM for registrada, ela começará a aparecer como um recurso de ambiente em Recursos.

    Captura de tela da criação da VM.

  8. 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.

    Captura de tela do modo de exibição de recurso da VM.

  9. 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.

    Captura de tela do modo de exibição de marcas.


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.

  1. Entre na organização do Azure DevOps e acesse seu projeto.

  2. Em seu projeto, vá para a página Pipelines e escolha a ação para criar um pipeline.

  3. 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.

  4. Quando a lista de repositórios for exibida, selecione o repositório de aplicativo de exemplo desejado.

  5. 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

  1. 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.

  1. 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.

  2. Especifique runOnce ou rolling como uma estratégia de implantação.

    runOnce é a estratégia de implantação mais simples. Todos os ganchos do ciclo de vida, ou seja preDeploydeploy, routeTraffic e postRouteTraffic, são executados uma vez. Em seguida, on:success ou on: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
    
  3. 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.

Captura de tela do modo de exibição de implantações.

Próximas etapas