Integração contínua em Java

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Introdução – Quem sou eu
Bruno P. Kinoshita – www.kinoshita.eti.br Engenheiro de Software Utilizo Jenkins em diversas tarefas do dia-a-dia Me divirto em Java, PHP, Python, Perl, C, C++, Lua, … * Planejo, escrevo e executo testes Participo de projetos Open Source tap4j, TestLink, Jenkins TestLink Plug-in, testlink-java-api, FontyPython, BellmanZadeh, CVB, Apache Functor, ...

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Integração Contínua... e Elefantes

Frequentamente integrando os pedaços do software Em intervalos curtos de tempo Cada integração recebe o nome de Build Erros de integração são detectados rapidamente Menos problemas de integração

Conjunto de práticas simples que reduz tempo e problemas para integrar um software
Bruno P. Kinoshita – http://www.kinoshita.eti.br

Como começo a fazer CI?

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Usar um Gerenciador de Versão de Software Automatizando processos como:

Compilação Execução de Testes Integração com outros sistemas Inspeção de código Deploy automatizado Geração de documentação

Utilizando um servidor de CI que facilite a automatização Construindo continuamente

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Que tal pensar em pipelines?
Bruno P. Kinoshita – http://www.kinoshita.eti.br

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Boas Práticas

Integrar em intervalos curtos de tempo Manter o Build rápido Cuide dos seus Builds Construa seu software em um ambiente semelhante ao de Automatize! Divirta-se!

produção

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Vantagens

Custo de desenvolvimento menor Risco menor Erros de integração são detectados mais rapidamente Software desenvolvido com mais coesão Aumento da qualidade do software Todos podem ver o que está acontecendo Um produto entregável mais rápido / facilmente Mais agilidade (automatizando, boas práticas, ferramentas, …) Time focado em evitar e resolver regressões

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Desvantagens
Leva um certo tempo para preparar todo o ambiente Há um custo com infraestrutura Mudança de paradigma / cultura

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Demo
Bruno P. Kinoshita – http://www.kinoshita.eti.br

FIM Perguntas? Obrigado!!!

Bruno P. Kinoshita – http://www.kinoshita.eti.br

Bruno P. Kinoshita – http://www.kinoshita.eti.br

#1 – Testes Unitários

Testar cada componente do sistema Simples e rápido de executar Triggering Executando com master e slaves Usando diferentes plug-ins Integrando com Sonar Concorrente, paralelo, diferentes níveis

Bruno P. Kinoshita – http://www.kinoshita.eti.br

#2 – Testes de Integração

Deploy de diferentes aplicações e test doubles Gerando massa de dados para os testes Criando diferentes tipos de jobs Medindo cobertura de testes

Bruno P. Kinoshita – http://www.kinoshita.eti.br

#3 – Testes Funcionais

Rodando seus testes Selenium no Jenkins Jenkins no modo headless Usando Jenkins TestLink Plug-in

Bruno P. Kinoshita – http://www.kinoshita.eti.br