Compartilhar via


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

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

  1. Em seu projeto do Azure DevOps, acesse Ambientes de Pipelines> e selecione Criar ambiente ou Novo ambiente.

  2. Na primeira tela Novo ambiente, adicione um Nome e uma Descrição opcional.

  3. Em Recurso, selecione Máquinas virtuais e, em seguida, selecione Avançar.

  4. Na próxima tela Novo ambiente , escolha Linux em Sistema operacional.

  5. Copie o script de registro do Linux. O script é o mesmo para todas as VMs do Linux adicionadas ao ambiente.

    Captura de tela da criação da VM.

    Observação

    O PAT (Token de Acesso Pessoal) do usuário conectado é pré-inserido no script e expira após três horas.

  6. Selecione Fechar e observe que o novo ambiente é criado.

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

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

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.

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

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.

  1. No projeto do Azure DevOps, selecione Pipelines>Create Pipeline e, em seguida, selecione GitHub como o local do código-fonte.
  2. Na tela Selecionar um repositório , selecione o repositório de amostra bifurcado.
  3. Na página Configurar seu pipeline, selecione Pipeline inicial. O Azure Pipelines gera um arquivo YAML chamado azure-pipelines.yml para o pipeline.
  4. 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

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

  2. Especifique ou runOnce rolling como uma implantação strategy.

    • runOnce é a estratégia de implantação mais simples. Os preDeploy deployganchos , routeTraffice postRouteTraffic lifecycle hooks são executados uma vez. Em seguida, ou on: success executa on: 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. O maxParallel 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.

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