Partilhar via


Tutorial: Implantar na máquina virtual Linux usando o Jenkins e os Serviços de DevOps do Azure

A integração contínua (CI) e a implantação contínua (CD) formam um pipeline pelo qual você pode criar, liberar e implantar seu código. Os Serviços de DevOps do Azure fornecem um conjunto completo e completo de ferramentas de automação de CI/CD para implantação no Azure. Jenkins é uma ferramenta popular baseada em servidor CI/CD de terceiros que também fornece automação de CI/CD. Você pode usar os Serviços de DevOps do Azure e o Jenkins juntos para personalizar como você entrega seu aplicativo ou serviço na nuvem.

Neste tutorial, você usa o Jenkins para criar um aplicativo Web Node.js. Em seguida, você usa o Azure DevOps para implantá-lo

para um grupo de implantação que contém máquinas virtuais (VMs) Linux. Você aprende a:

  • Obtenha o aplicativo de exemplo.
  • Configure os plug-ins do Jenkins.
  • Configure um projeto Jenkins Freestyle para Node.js.
  • Configure o Jenkins para integração dos Serviços de DevOps do Azure.
  • Crie um ponto de extremidade de serviço Jenkins.
  • Crie um grupo de implantação para as máquinas virtuais do Azure.
  • Crie um pipeline de liberação do Azure Pipelines.
  • Realizar implantações manuais e desencadeadas por Integração Contínua (CI).

Pré-requisitos

Obter a aplicação de exemplo

Você precisa de um aplicativo para implantar, armazenado em um repositório Git. Para este tutorial, recomendamos que você use este aplicativo de exemplo disponível no GitHub. Este tutorial contém um script de exemplo que é usado para instalar Node.js e um aplicativo. Se quiser trabalhar com seu próprio repositório, configure um exemplo semelhante.

Crie uma bifurcação deste aplicativo e anote o local (URL) para uso em etapas posteriores deste tutorial. Para obter mais informações, consulte Fork a repo.

Observação

O aplicativo foi construído através de Yeoman. Ele usa Express, Bower e Grunt. E tem alguns pacotes npm como dependências. O exemplo também contém um script que configura o Nginx e implanta o aplicativo. Ele é executado nas máquinas virtuais. Especificamente, o script:

  1. Instala Node, Nginx e PM2.
  2. Configura Nginx e PM2.
  3. Inicia o aplicativo Node.

Configurar plug-ins do Jenkins

Primeiro, você deve configurar dois plug-ins Jenkins: NodeJS e VS Team Services Continuous Deployment.

  1. Abra sua conta Jenkins e selecione Gerenciar Jenkins.
  2. Na página Gerenciar Jenkins , selecione Gerenciar plug-ins.
  3. Filtre a lista para localizar o plug-in NodeJS e selecione a opção Instalar sem reiniciar . Adicionando o plug-in NodeJS ao Jenkins
  4. Filtre a lista para localizar o plug-in VS Team Services Continuous Deployment e selecione a opção Instalar sem reiniciar .
  5. Volte ao painel do Jenkins e selecione Gerenciar Jenkins.
  6. Selecione Configuração Global da Ferramenta. Encontre o NodeJS e selecione as instalações do NodeJS.
  7. Selecione a opção Instalar automaticamente e insira um valor Name .
  8. Selecione Guardar.

Configurar um projeto Jenkins Freestyle para Node.js

  1. Selecione Novo Item. Insira um nome de item.
  2. Selecione Projeto Freestyle. Selecione OK.
  3. Na guia Gerenciamento de código-fonte , selecione Git e insira os detalhes do repositório e da ramificação que contêm o código do aplicativo.
    Adicionar um repositório à sua compilação
  4. Na guia Build Triggers , selecione Poll SCM e insira o agendamento H/03 * * * * para sondar o repositório Git para alterações a cada três minutos.
  5. Na guia Build Environment , selecione Provide Node & npm bin/ folder PATH e selecione o valor NodeJS Installation . Deixe o arquivo npmrc definido para usar o padrão do sistema.
  6. Na guia Compilar , selecione Executar shell e insira o comando npm install para garantir que todas as dependências sejam atualizadas.

Configurar o Jenkins para integração dos Serviços de DevOps do Azure

Observação

Certifique-se de que o token de acesso pessoal (PAT) que você usa para as etapas a seguir contém a permissão Release (ler, gravar, executar e gerenciar) nos Serviços de DevOps do Azure.

  1. Crie uma PAT na sua organização dos Serviços de DevOps do Azure se ainda não tiver uma. O Jenkins requer essas informações para acessar sua organização dos Serviços de DevOps do Azure. Certifique-se de armazenar as informações do token para as próximas etapas nesta seção.

    Para saber como gerar um token, leia Como criar um token de acesso pessoal para os Serviços de DevOps do Azure?.

  2. Na guia Ações pós-compilação , selecione Adicionar ação pós-compilação. Selecione Arquivar os artefatos.

  3. Para Arquivos a serem arquivados, digite **/* para incluir todos os arquivos.

  4. Para criar outra ação, selecione Adicionar ação pós-compilação.

  5. Selecione Disparar liberação no TFS/Team Services. Insira o URI da sua organização dos Serviços de DevOps do Azure, como https://{nome-da-sua-organização}.visualstudio.com.

  6. Insira o nome do projeto .

  7. Escolha um nome para o pipeline de lançamento. (Você cria esse pipeline de versão posteriormente nos Serviços de DevOps do Azure.)

  8. Escolha as credenciais para se conectar aos seus Serviços de DevOps do Azure ou ao ambiente do Servidor de DevOps do Azure:

    • Deixe Nome de usuário em branco se estiver usando os Serviços de DevOps do Azure.
    • Insira um nome de usuário e senha se estiver usando uma versão local do Azure DevOps Server.
      Configurando ações pós-compilação do Jenkins
  9. Salve o projeto Jenkins.

Criar um ponto de extremidade do serviço Jenkins

Um ponto de extremidade de serviço permite que os Serviços de DevOps do Azure se conectem ao Jenkins.

  1. Abra a página Serviços nos Serviços de DevOps do Azure, abra a lista Novo Ponto de Extremidade de Serviço e selecione Jenkins. Adicionar um endpoint Jenkins
  2. Introduzir um nome para a ligação.
  3. Introduza o URL do seu servidor Jenkins e selecione a opção Aceitar certificados SSL não fidedignos . Um exemplo de URL é http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Introduza o nome de utilizador e a palavra-passe da sua conta Jenkins.
  5. Selecione Verificar conexão para verificar se as informações estão corretas.
  6. Selecione OK para criar o ponto de extremidade de serviço.

Criar um grupo de implantação para máquinas virtuais do Azure

Você precisa de um grupo de implantação para registrar o agente do Azure DevOps Services para que o pipeline de liberação possa ser implantado em sua máquina virtual. Os grupos de implantação facilitam a definição de grupos lógicos de máquinas de destino para implantação e a instalação do agente necessário em cada máquina.

Observação

No procedimento a seguir, certifique-se de instalar os pré-requisitos e não execute o script com privilégios sudo.

  1. Abra a guia Releases do hub Build & Release , abra Grupos de implantação e selecione + Novo.
  2. Insira um nome para o grupo de implantação e uma descrição opcional. Em seguida, selecione Criar.
  3. Escolha o sistema operacional para sua máquina virtual de destino de implantação. Por exemplo, selecione Ubuntu 16.04+.
  4. Selecione Utilizar um token de acesso pessoal no script para autenticação.
  5. Selecione o link Pré-requisitos do sistema . Instale os pré-requisitos para o seu sistema operacional.
  6. Selecione Copiar script para a área de transferência para copiar o script.
  7. Faça login na máquina virtual de destino de implantação e execute o script. Não execute o script com privilégios sudo.
  8. Após a instalação, você será solicitado a fornecer tags de grupo de implantação. Aceite os padrões.
  9. Nos Serviços de DevOps do Azure, verifique sua máquina virtual recém-registrada em Destinos em Grupos de Implantação.

Criar um pipeline de liberação do Azure Pipelines

Um pipeline de versão especifica o processo que o Azure Pipelines usa para implantar o aplicativo. Neste exemplo, você executa um shell script.

Para criar o pipeline de liberação no Azure Pipelines:

  1. Abra a guia Releases do hub Build & Release e selecione Create release pipeline.
  2. Selecione o modelo Vazio escolhendo iniciar com um processo Vazio.
  3. Na seção Artefatos , selecione + Adicionar artefato e escolha Jenkins para Tipo de origem. Selecione sua conexão de ponto de extremidade do serviço Jenkins. Em seguida, selecione o trabalho de origem Jenkins e selecione Adicionar.
  4. Selecione as reticências junto a Ambiente 1. Selecione Adicionar fase do grupo de implantação.
  5. Escolha seu grupo de implantação.
  6. Selecione + para adicionar uma tarefa à fase do grupo de implantação.
  7. Selecione a tarefa Shell Script e selecione Adicionar. A tarefa Shell Script fornece a configuração para que um script seja executado em cada servidor para instalar Node.js e iniciar o aplicativo.
  8. Para Caminho do Script, digite $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh.
  9. Selecione Avançado e habilite Especificar diretório de trabalho.
  10. Para Working Directory, digite $(System.DefaultWorkingDirectory)/Fabrikam-Node.
  11. Altere o nome do pipeline de lançamento para o nome que definiu no separador Ações pós-compilação da compilação no Jenkins. Jenkins requer esse nome para poder acionar uma nova versão quando os artefatos de origem são atualizados.
  12. Selecione Salvar e selecione OK para salvar o pipeline de liberação.

Execute implantações manuais e acionadas por CI

  1. Selecione + Liberar e selecione Criar versão.
  2. Selecione a compilação que concluiu na lista suspensa realçada e selecione Enfileirar.
  3. Escolha o link de liberação na mensagem pop-up. Por exemplo: "Release Release-1 foi criado."
  4. Abra a guia Logs para observar a saída do console de lançamento.
  5. No navegador, abra a URL de um dos servidores que você adicionou ao seu grupo de implantação. Por exemplo, digite http://{seu-servidor-endereço-ip}.
  6. Vá para o repositório Git de origem e modifique o conteúdo do título h1 no arquivo app/views/index.jade com algum texto alterado.
  7. Confirme a sua alteração.
  8. Após alguns minutos, você verá uma nova versão criada na página Versões do Azure DevOps. Abra a versão para ver a implantação ocorrendo. Parabéns!

Solução de problemas do plug-in Jenkins

Se você encontrar algum bug com os plug-ins do Jenkins, registre um problema no Jenkins JIRA para o componente específico.

Próximos passos

Neste tutorial, você automatizou a implantação de um aplicativo no Azure usando o Jenkins para compilação e os Serviços de DevOps do Azure para lançamento. Você aprendeu a:

  • Crie seu aplicativo no Jenkins.
  • Configure o Jenkins para integração dos Serviços de DevOps do Azure.
  • Crie um grupo de implantação para as máquinas virtuais do Azure.
  • Crie um Pipeline do Azure que configure as VMs e implante o aplicativo.

Para saber mais sobre como usar o Azure Pipelines para as etapas de Compilação e Versão, consulte isto.

Para saber mais sobre como criar um pipeline de CI/CD baseado em YAML para implantar em VMs, avance para o próximo tutorial.