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.
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
:
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:
- No servidor Jenkins, selecione o job (site-builder no nosso caso)
- Clique em “Configurar” no menu lateral
- 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.
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
0 Comentários