Compartilhar via


Tutorial: Implantar na máquina virtual do Linux usando o Jenkins e o Azure DevOps Services

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

Neste tutorial, você usará 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 VMs (máquinas virtuais) do Linux. Você aprenderá como:

  • Obtenha o aplicativo de exemplo.
  • Configurar plug-ins do Jenkins.
  • Configurar um projeto jenkins freestyle para Node.js.
  • Configure o Jenkins para a integração do Azure DevOps Services.
  • Crie um endpoint de serviço Jenkins.
  • Crie um grupo de implantação para as máquinas virtuais do Azure.
  • Crie um pipeline de lançamento do Azure Pipelines.
  • Execute implantações manuais e realizadas a partir da Integração Contínua (CI).

Pré-requisitos

Obter o aplicativo 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 usado para instalar Node.js e um aplicativo. Se você quiser trabalhar com seu próprio repositório, deverá configurar um exemplo semelhante.

Crie uma bifurcação deste aplicativo e anote o local (URL) para uso nas etapas posteriores deste tutorial. Para obter mais informações, consulte Bifurcação de um repositório.

Observação

O aplicativo foi criado através do Yeoman. 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 o Node, o Nginx e o PM2.
  2. Configura o Nginx e o PM2.
  3. Inicia o aplicativo Node.

Configurar plug-ins do Jenkins

Primeiro, você deve configurar dois plug-ins jenkins: NodeJS e Implantação Contínua do VS Team Services.

  1. Abra sua conta do 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 reinicialização . Adicionando o plug-in nodeJS ao Jenkins
  4. Filtre a lista para localizar o plug-in de Implantação Contínua do VS Team Services e selecione a opção Instalar sem reinicialização .
  5. Volte para o painel do Jenkins e selecione Gerenciar Jenkins.
  6. Selecione Configuração de Ferramenta Global. Localize NodeJS e selecione instalações de NodeJS.
  7. Selecione a opção Instalar automaticamente e, em seguida, insira um valor de Nome .
  8. Clique em Salvar.

Configurar um projeto jenkins freestyle para Node.js

  1. Selecione Novo Item. Insira um nome de item.
  2. Selecione o projeto Freestyle. Selecione OK.
  3. Na guia Gerenciamento de Código-Fonte , selecione Git e insira os detalhes do repositório e do branch que contém o código do aplicativo.
    Adicionar um repositório ao seu build
  4. Na guia Gatilhos de Construção, selecione Verificar SCM e insira o agendamento H/03 * * * * para verificar o repositório Git em busca de alterações a cada três minutos.
  5. Na guia Criar Ambiente , selecione Fornecer Node &npm bin/folder PATH e selecione o valor de Instalação do NodeJS . 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 a integração do Azure DevOps Services

Observação

Verifique se o token de acesso pessoal (PAT) que você utiliza para as etapas a seguir contém a permissão Release (leitura, gravação, execução e gerenciamento) no Azure DevOps Services.

  1. Crie um PAT em sua organização do Azure DevOps Services se você ainda não tiver um. O Jenkins requer essas informações para acessar sua organização do Azure DevOps Services. Certifique-se de armazenar as informações de token para as próximas etapas nesta seção.

    Para saber como gerar um token, leia Como criar um token de acesso pessoal para o Azure DevOps Services?.

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

  3. Para arquivos para arquivar, insira **/* para incluir todos os arquivos.

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

  5. Selecione Trigger release no TFS/Team Services. Insira o URI para sua organização do Azure DevOps Services, como https://{your-organization-name}.visualstudio.com.

  6. Insira o nome do projeto.

  7. Escolha um nome para o pipeline de lançamento. (Você criará este pipeline de lançamento posteriormente no Azure DevOps Services.)

  8. Escolha as credenciais para se conectar ao ambiente do Azure DevOps Services ou do Servidor do Azure DevOps:

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

Criar um ponto de serviço Jenkins

Um ponto de extremidade de serviço permite que o Azure DevOps Services se conecte ao Jenkins.

  1. Abra a página Serviços no Azure DevOps Services, abra a lista Novo Ponto de Extremidade de Serviço e selecione Jenkins. Adicionar um endpoint Jenkins
  2. Insira um nome para a conexão.
  3. Insira a URL do servidor Jenkins e selecione a opção Aceitar certificados SSL não confiáveis . Uma URL de exemplo é http://{YourJenkinsURL}.westcentralus.cloudapp.azure.com.
  4. Insira o nome de usuário e a senha para sua conta do Jenkins.
  5. Selecione Verificar conexão para verificar se as informações estão corretas.
  6. Selecione OK para criar o endpoint 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 lançamento possa ser implantado em sua máquina virtual. Os grupos de implantação facilitam a definição de grupos lógicos de computadores de destino para implantação e a instalação do agente necessário em cada computador.

Observação

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

  1. Abra a guia Versões 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 Usar um token de acesso pessoal no script para autenticação.
  5. Selecione o link Pré-requisitos do sistema. Instale os pré-requisitos para seu sistema operacional.
  6. Selecione Copiar script para área de transferência para copiar o script.
  7. Faça logon em sua 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. No Azure DevOps Services, verifique sua máquina virtual recém-registrada em Destinos em Grupos de Implantação.

Criar um pipeline de releases do Azure Pipelines

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

Para criar o pipeline de lançamento no Azure Pipelines:

  1. Abra a guia Versões do Hub de Build & Versão e selecione Criar pipeline de versão.
  2. Selecione o modelo Vazio escolhendo começar com um processo vazio.
  3. Na seção Artefatos , selecione + Adicionar Artefato e escolha Jenkins para o tipo de origem. Selecione sua conexão de endpoint de serviço Jenkins. Em seguida, selecione o trabalho de origem do Jenkins e selecione Adicionar.
  4. Selecione o ícone de mais opções ao lado de Ambiente 1. Selecione Adicionar fase de grupo de implantação.
  5. Escolha seu grupo de implantação.
  6. Selecione + para adicionar uma tarefa à fase de grupo de implantação.
  7. Selecione a tarefa Script do Shell e selecione Adicionar. A tarefa Script do Shell fornece a configuração de um script a ser executado em cada servidor para instalar Node.js e iniciar o aplicativo.
  8. Para Script Path, insira $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh.
  9. Selecione Avançado e, em seguida, habilite Especificar Diretório de Trabalho.
  10. Para diretório de trabalho, insira $(System.DefaultWorkingDirectory)/Fabrikam-Node.
  11. Edite o nome do pipeline de lançamento para o nome especificado na guia Ações de Pós-build do build no Jenkins. O Jenkins requer esse nome para poder disparar um novo lançamento quando os artefatos fonte forem atualizados.
  12. Selecione Salvar e selecione OK para salvar o pipeline de lançamento.

Executar implantações manuais e acionadas por integração contínua (CI)

  1. Selecione + Versão e selecione Criar Versão.
  2. Selecione o build que você concluiu na lista suspensa realçada e selecione Queue.
  3. Escolha o link de lançamento na mensagem pop-up. Por exemplo: " Release Release-1 foi criado".
  4. Abra a aba Logs para observar a saída do console.
  5. No navegador, abra a URL de um dos servidores que você adicionou ao seu grupo de implantação. Por exemplo, insira http://{your-server-ip-address}.
  6. Vá para o repositório Git de origem e modifique o conteúdo do título h1 no aplicativo de arquivos/views/index.jade com algum texto alterado.
  7. Confirme 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 do Jenkins

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

Próximas etapas

Neste tutorial, você automatiza a implantação de um aplicativo no Azure usando o Jenkins para build e o Azure DevOps Services para lançamento. Você aprendeu a:

  • Crie seu aplicativo no Jenkins.
  • Configure o Jenkins para a integração do Azure DevOps Services.
  • 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 etapas de build e versão, consulte isso.

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