Partilhar via


Implantar em VMs Linux em um ambiente

Serviços de DevOps do Azure | Azure DevOps Server 2022 | Azure DevOps Server 2020

Neste início rápido, você aprenderá a configurar um pipeline de DevOps do Azure para implantação em vários recursos de máquina virtual (VM) Linux em um ambiente. Você pode usar estas 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 Linux configuradas com Nginx no Azure.

Fork o código de exemplo

Se você já tiver um aplicativo no GitHub que deseja implantar, 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 Linux

Você pode adicionar VMs como recursos dentro de ambientes e direcioná-las para implantações de várias VMs. O histórico de implantação do ambiente fornece rastreabilidade da VM até a confirmação.

Adicionar um recurso de VM

  1. No seu projeto de DevOps do Azure, vá para 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 Linux adicionadas ao ambiente.

    Captura de tela da criação da VM.

    Nota

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

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

  7. Execute o script copiado em cada VM de destino que você deseja registrar no ambiente.

    Nota

    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 ecrã da vista de recursos da VM.

Para copiar o script novamente para criar mais recursos, por exemplo, se a PAT expirar, selecione Adicionar recurso na página do ambiente.

Adicionar e gerir etiquetas

As tags 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 tags que você pode usar. As tags são limitadas a 256 caracteres cada.

Você pode adicionar tags ou remover tags 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 tag diferente a cada VM em seu ambiente.

Captura de ecrã da vista de etiquetas.

Definir um pipeline de construção de CI

Você precisa de um pipeline de compilação de integração contínua (CI) que publique seu aplicativo Web e um script de implantação para ser executado localmente no servidor Linux. Configure seu pipeline de compilação de CI com base no tempo de execução 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 concluir o processo. Para obter mais informações, consulte Acesso a repositórios do GitHub.

  1. Em seu projeto do Azure DevOps, selecione Pipelines>Create Pipeline e, em seguida, selecione GitHub como o local do seu código-fonte.
  2. Na tela Selecione um repositório, selecione seu repositório de exemplo bifurcado.
  3. Na tela Configurar seu pipeline, selecione Pipeline inicial. O Azure Pipelines gera um arquivo YAML chamado azure-pipelines.yml para seu pipeline.
  4. Selecione o cursor suspenso ao lado de Salvar e executar, selecione Salvar e selecione Salvar novamente. O arquivo é salvo em seu 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 este 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, revise as etapas em Criar seu aplicativo Node.js com gulp para criar uma compilação.

Execute seu pipeline

Selecione Validar e salvar, selecione Salvar, selecione Executar e selecione Executar novamente.

Após a execução do pipeline, verifique se a tarefa foi executada com êxito e se vê um artefacto publicado.

Implantar nas VMs do Linux

  1. Edite seu pipeline para adicionar o seguinte trabalho de implantação. Substitua <environment name> pelo nome do ambiente criado 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 jobs.deployment.

    Para obter mais informações sobre a palavra-chave e os recursos visados environment por um trabalho de implantação, consulte a definição jobs.deployment.environment.

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

    • runOnce é a estratégia de implantação mais simples. Os preDeploy deployganchos , routeTraffic, e postRouteTraffic ciclo de vida são executados uma vez. Em seguida, ou on: success on: failure executa.

      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 trecho YAML para a estratégia de rolling implementaçã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 leva em conta 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 sucesso 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
      

      Com cada execução desse trabalho, o histórico de implantação é registrado no ambiente em que você criou e registrou as VMs.

Rastreabilidade do pipeline de acesso no ambiente

A visualizaçã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 ecrã da vista de implementações.