Integração e deployment pipeline no Openshift

   Dia após dia são lançadas diversas ferramentas para dar apoio ao desenvolvimento de software, em diferentes escalas do tradeoff entre flexibilidade e “customizabilidade”. Nos últimos anos, alguns tipos de serviços começaram a ser disponibilizados para desenvolvedores, do menos para o mais customizável: SaaS (Software-as-a-Service), PaaS (Plataform-as-a-Service) e IaaS (Infrastructure-as-a-Service).

Vamos abordar nesse post o “meio termo” desses serviços. Existem diversos provedores de PaaS, cada um com suas características particulares, como o Google App Engine, Heroku, AWS Elastic Beanstalk e o que será utilizado hoje, o Openshift da Red Hat.

Para seguir este tutorial, crie uma conta no site da openshift e confirme seu e-mail. Ao confirmar e-mail, você já pode acessar sua conta no openshift, a qual vai direcioná-lo a criar sua primeira aplicação. Você pode escolher uma aplicação de seu gosto ou, se você preferir, criar uma aplicação própria customizada (requer mais tempo e aprendizado). Vamos escolher a WildFly Application Server 8.2.1.Final para hostear nossa aplicação exemplo escrita em Java. Para usarmos como exemplo, temos disponível o código-fonte padrão da aplicação em uma fonte externa ao openshift: https://github.com/materasystems/openshift-example.git (você pode deixar este campo vazio e usar um projeto vazio oferecido pela aplicação).

wildfly

Ao finalizar a criação do aplicativo, você pode acessá-lo pelo endereço que você preencheu (no meu caso, http://wildfly-nonosematera.rhcloud.com) e você irá ver a página introdutória do WildFly. Você deverá também escolher a opção que diz que você quer modificar o código no futuro e adicionar sua chave pública (veja aqui para saber como gerar sua chave pública se não possuir).jenkins_psswd

No entanto, só com esse setup, se você escolheu utilizar uma fonte externa, você não pode aplicar uma mudança de código. O único jeito é utilizando o git e fazendo um push diretamente para a aplicação. Para que a sua aplicação consiga pegar as modificações do seu repositório, iremos habilitar o Jenkins. O Jenkins é uma ferramenta de integração contínua, a qual facilita builds e testes automáticos. Para habilitá-lo no openshift, entre na sua aplicação recém lançada e selecione para habilitar (Enable Jenkins). Quando o processo terminar, lembre de anotar o usuário e a senha do jenkins.

Assim que habilitado, o jenkins já está automaticamente configurado para rodar o build do seu projeto separadamente em uma das gears do openshift. Cada gear é responsável por hostear uma aplicação e, atualmente, seu projeto deve possuir duas gears ocupadas (uma pelo wildfly e outra pelo jenkins) e o jenkins utilizará a sua terceira gear para buildar a aplicação sem pausar ela (e última gear também, pois o plano free do openshift comporta o uso de 3 gears).

Para que você possa construir sua aplicação desse repositório, entre no seu jenkins pelo painel do openshift e clique no link (no meu caso, https://jenkins-nonosematera.rhcloud.com). Entre com as credenciais que você salvou quando o Jenkins foi iniciado (admin/uma_senha_bem_grande_gerada). Ao acessar a aplicação, você vai encontrar um único build configurado (possivelmente com o nome wildfly-build). Clique nele e procure pela opção de configurar.

Procure pela seção “Source code management” e substitua a URL do repositório pelo do seu código-fonte hosteado. Se preferir, especifique a branch a ser buildada (o padrão é **, que builda qualquer branch). No repositório padrão, existe uma branch breaking que possui um teste unitário quebrando para você ver o jenkins rejeitar um build quebrado e a master que possui o código padrão do wildfly.jenkins_scm

E pronto! Salve a configuração e clique em Build Now para que o Jenkins pegue seu código, faça o build e o deploy em sua aplicação. Você pode especificar na seção Build Triggers da configuração quando você quer que a sua aplicação seja buildada (periodicamente consultar o código-fonte para código novo, builds periódicos ou condicionais).

Por RODRIGO NONOSE

Postado em: 13 de novembro de 2015

Confira outros artigos do nosso blog

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

Three laws that enable agile software development

09 de março de 2017

Celso Gonçalves Junior

Medindo performance de uma API REST

21 de fevereiro de 2017

Monise Costa

Deixe seu comentário