Práticas recomendadas e tutoriais

Criar um pipeline de implantação contínua com Jenkins e Java

Ultimamente, tenho trabalhado muito com o Jenkins para executar arquivos Java JAR para a implantação contínua de um dos meus aplicativos. Caso você não tenha visto, a demonstração principal feita no Couchbase Connect 2016 usou o Jenkins para criar e reimplantar o back-end Java e o front-end Angular sempre que uma alteração era detectada no GitHub. Este é o aplicativo que ajudei a criar.

Então, como eu aproveitei Jenkins implantar esse aplicativo Java? Veremos como criar um arquivo JAR usando o Jenkins, resultando em um pipeline de implantação contínua que inclui a criação e a implantação em um servidor.

Para ser claro, não explicarei como usar o aplicativo Couchbase Connect 2016, que estou chamando de GitTalentCom o Jenkins, é um pouco mais complicado. Vamos começar devagar para entender melhor.

Os requisitos

Há alguns requisitos que precisam ser atendidos para que você tenha sucesso com este guia. Eles podem ser encontrados abaixo:

Neste exemplo, o Jenkins, o JDK e o Couchbase Server residirão todos no mesmo computador. Isso significa que um script de implantação contínua do Jenkins extrairá o código do GitHub, o criará usando o JDK e o publicará localmente em vez de em algum servidor remoto. Dito isso, parte da automação foi removida deste exemplo porque, para fazer com que o Jenkins crie automaticamente quando forem encontrados commits, os hooks do GitHub exigem uma máquina que não seja o host local. A eficácia deste guia ainda estará presente.

Embora o Couchbase seja um requisito, ele não é o foco deste guia. Ele precisa estar presente para o aplicativo de amostra que retiraremos do GitHub.

Configuração do Jenkins com os plug-ins e as dependências necessárias

A esta altura, você já deve ter feito o download do Jenkins. Vamos orientá-lo na configuração, pois ele pode ser um pouco confuso para um usuário iniciante.

Você pode executar o Jenkins executando o seguinte no prompt de comando ou no terminal:

O comando acima tornará o Jenkins acessível em http://localhost:8080 em seu navegador da Web. Após a primeira inicialização, você será guiado por um assistente para configuração.

Jenkins Configuration Part 1

Como parte da primeira etapa de configuração, você precisará obter um valor gerado para ser usado como senha de superadministrador.

Depois de fornecer a senha de acordo com as instruções na tela, você será questionado sobre a instalação dos plug-ins do Jenkins.

Jenkins Configuration Part 2

Vamos começar instalando os plug-ins sugeridos e depois instalaremos os extras. Pode levar algum tempo, mas depois que os plug-ins sugeridos forem instalados, você será solicitado a configurar sua primeira conta de usuário administrativo.

Jenkins Configuration Part 3

Você pode optar por criar um usuário administrativo ou continuar a usar a senha gerada ao trabalhar com o Jenkins.

Depois de criar uma conta, o Jenkins está pronto para ser usado. Antes de criarmos nosso primeiro fluxo de trabalho, ou trabalho, precisamos instalar um plugin adicional.

Manage Jenkins

Você deverá optar por Gerenciar o Jenkins que nos levará a uma lista de seções de gerenciamento, uma das quais é uma seção para gerenciar plug-ins.

Escolha Gerenciar plug-ins e faça uma busca pelo Script pós-construção plugin.

Install Jenkins Post-Build Script Plugin

Esse plug-in nos permitirá executar scripts no host Jenkin depois que a compilação for concluída sem erros.  Precisamos disso para que o Jenkins possa implantar o JAR depois que ele tiver sido empacotado.

Agora, o Jenkins como um todo foi configurado. Embora ele esteja pronto para criarmos trabalhos, primeiro vamos obter Couchbase pronto para ser usado.

Preparando o Couchbase com um bucket para armazenamento de documentos

O Couchbase não é o destaque deste exemplo, mas como estamos usando um dos meus antigos projetos, ele era um requisito do projeto.

Se você ainda não fez o download do Couchbase, faça-o agora e passe pela configuração. Para obter ajuda com a configuração do Couchbase, confira um Artigo anterior Eu escrevi.

O que é importante é o Bucket que usaremos. Certifique-se de criar um Bucket com o título restful-sample com pelo menos um índice N1QL primário.

Se precisar de ajuda com tudo isso, você pode encontrar uma descrição completa do nosso projeto aqui. É claro que esse artigo não inclui a implantação contínua com o Jenkins.

Agora podemos nos concentrar em nosso pipeline.

Criação de um trabalho para criação e implantação de um aplicativo desenvolvido com Java

Com o Jenkins e o Couchbase prontos para uso, podemos nos concentrar na criação de um trabalho que controlará nosso pipeline. Para reiterar nosso plano, estaremos extraindo do GitHub, empacotando um JAR no processo de compilação e implantando esse JAR durante o processo pós-compilação (implantação).

Vá em frente e crie um novo trabalho no Jenkins. A primeira coisa que lhe será solicitada é o nome do projeto e o tipo de nome do projeto.

Jenkins Freestyle Java Project

Dê ao trabalho um nome exclusivo e certifique-se também de usar Projeto Freestyle da lista. Ao configurar esse projeto, nossa primeira preocupação é o repositório do GitHub que usaremos.

Jenkins Java Project Source Control

Se o seu repositório não for público, não se preocupe, pois você pode adicionar credenciais, mas, neste exemplo, meu projeto é público.

Estou usando o projeto encontrado aqui:

Sinta-se à vontade para usar seu próprio projeto, se desejar. Com o controle de origem resolvido, vamos passar para o Construir passo.

Jenkins Build Java Project

Aqui podemos inserir os comandos de shell que quisermos para criar o aplicativo que foi extraído do Git.

Neste exemplo, queremos apenas gerar um arquivo JAR, o que pode ser feito adicionando o seguinte comando:

Isso nos deixa com um arquivo JAR em um novo arquivo alvo que, neste momento, só é relevante para o Jenkins. A etapa final é eliminar qualquer instância já em execução do aplicativo e executá-lo novamente.

Como instalamos o Script de plug-in pós-compilação podemos definir o que acontece com nossa compilação.

Jenkins Post-Build Java Actions

Neste exemplo, não estamos implementando-o em outro computador, mas poderíamos. Em vez disso, vamos executá-lo apenas na máquina local.

Escolha executar um script de shell e inclua o seguinte:

A descrição acima é um pouco enganosa, mas é necessária porque estamos executando tudo localmente na mesma máquina.

O primeiro comando procurará qualquer processo em execução no meu Mac que se pareça com o nosso aplicativo Java. Uma vez encontrado, ele eliminará o processo. Mesmo que não encontre o processo, ele retornará verdadeiro devido ao nosso pipe. Isso evita que o trabalho falhe.

Depois que o processo é interrompido, executamos o JAR criado em segundo plano.

Lembre-se de que seu script pode ser um pouco diferente se estiver sendo executado localmente no Linux ou no Windows. Em um cenário de produção, você provavelmente usará o plug-in SSH para o Jenkins, enviará o JAR para algum servidor e reiniciará o daemon de controle.

Vá em frente e tente executar o trabalho usando o Construir agora botão. Se você não quiser iniciá-lo manualmente, considere adicionar um gancho ou um cronômetro na área de configuração que acabamos de explorar.

Se tudo correr bem, você terá seu aplicativo Java acessível em http://localhost:8081 e ele se comunicará com o Couchbase Server.

Conclusão

Você acabou de ver como implantar um arquivo JAR em Jenkins para fazer a implantação contínua de um aplicativo Java que se comunica com o Couchbase Server. Essa configuração do Jenkins será extraída do GitHub, criará um JAR e o implantará. Embora deva ser um pouco mais refinada em um cenário de produção, é uma boa maneira de começar.

Deseja usar o Jenkins para a implantação contínua de microsserviços agrupados em contêineres do Docker? Dê uma olhada em um artigo anterior que escrevi intitulado, Implantação contínua de contêineres de aplicativos da Web com Jenkins e Docker.

Deseja obter mais informações sobre como usar a implantação contínua do Java com o Couchbase? Dê uma olhada na seção Portal do desenvolvedor do Couchbase para obter exemplos e documentação.

Recomendo que você dê uma olhada no Couchbase Connect 2016 demonstração principal se você ainda não o fez.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.