Integração Contínua com Jenkins

Neste artigo explico como utilizar Jenkins para garantir que sua aplicação sempre irá pro ar com um estado consistente.

Artigo originalmente publicado emhttps://getup.zendesk.com/entries/26199296.

 

Jenkins é um sistema de Integração Contínua (CI), projetado para fazer builds automáticos de um projeto a partir de gatilhos pré-definidos (periódico, a cada push no repositório, ao acessar uma URL, etc).

A idéia é garantir que apenas builds de sucesso possam ser publicados em produção, usando para isso umcartridge Jenkins, disponível na plataforma.

Existem tres componentes envolvidos no processo:

  • Aplicação Jenkins Server, responsável por orquestrar os builds. Ocupa um gear extra.
  • Cartridge Jenkins Client, instalado junto a qualquer aplicação que utilize o mecanismo de build.
  • Uma aplicação bldr para cada aplicação existente.

O build de fato é feito em um gear separado, exclusivo para cada aplicação. Por exemplo, se o cartridge Jenkins Client for adicionado a uma aplicação chamada blog, então, no momento do deploy, o Jenkins cria uma nova aplicação blogbldr que será usada exclusivamente para fazer o build. Caso este ocorra com sucesso, o deploy é feito para a aplicação “verdadeira” (blog).

Para evitar o consumo excessivo de recursos, a aplicação bldr possui um timeout de ociosidade de 15 minutos. Após esse período, se nenhum outro deploy ocorrer, esta é destruida e recriada somente quando necessária (ou seja, quando ocorrer o próximo deploy).

Criando sua aplicação Jenkins

O primeiro passo é criar uma aplicação do serviço Jenkins.

$ rhc app-create jenkins jenkins-1.4

Após a criação, temos uma aplicação na url http://jenkins-[namespace].getup.io parecida com a imagem abaixo. Utilize as credenciais de acesso mostradas na tela pós-criação.

jenkins-1

Note que ainda não existem projetos associados ao Jenkins neste momento.

Integrando sua aplicação

Agora que já temos um serviço Jenkins rodando, precisamos dizer para nossas aplicações que o build e deploy serão feitos a partir do Jenkins e não mais diretamente no gear de aplicação no momento do git push.

$ rhc add-cartridge jenkins-client-1.4 --app site

Pronto! Após alterar e fazer o git push da aplicação site, o build é disparado no servidor Jenkins e, caso termine com sucesso, o novo código será aplicado no gear da aplicação.

Olhando novamente o servidor Jenkins, vemos que agora existe um novo job site-build:

jenkins-2

Rodando seus testes

Por padrão, novos jobs são criados sem executar teste algum, pois cada aplicação possui suas particularidades. Para ativar a execução dos testes de seu app faça o seguinte:

  1. No servidor Jenkins, selecione o job (site-builder no nosso caso)
  2. Clique em “Configurar” no menu lateral
  3. Role a tela até a seção Construção > Executar Shell

Como usei uma aplicação python-2.7 neste artigo, já existe um espaço reservado para a execução do script de teste. Basta eu descomentar a linha abaixo de "# Run tests" que estes serão executados a cada novo build.

jenkins-3

Conclusão?

É fácil concluir que utilizar um sistema de integração contínua, nos ajuda na busca da qualidade desejada em nossos projetos de software. Com o app e cartridge Jenkins pré-configurados, fica ainda mais fácil utilizar ferramentas que são indispensáveis na toolbox de qualquer desenvolvedor.

Sirva-se à vontade

Tem mais dúvidas? Envie uma solicitação

0 Comentários

Por favor, entre para comentar.
Powered by Zendesk