Integração Contínua
Feedback
Aprendizado
Comunicação
Confiança
Riscos
Métricas
Testes
Automatização
https://www.flickr.com...
O que é?
Por quê?
Para quê?
O quê? Como?
Integração Contínua
Integração contínua
é...
Integração Contínua
Culpa
Integração Contínua NÃO é..
Punição
Integração Contínua NÃO é..
Por quê ter um build se ele nunca quebra?
Mas, MUITO CUIDADO...
Don’t live with broken windows.
Integração contínua
é...
Integração Contínua
Aprendizado
Integração Contínua é..
Trabalhar em equipe
Integração Contínua é..
Confiança
Integração Contínua é..
Minimizar riscos
Integração Contínua é..
Evitar surpresas
Integração Contínua é..
Comunicação
Integração Contínua é..
Feedback
Integração Contínua é..
Visibilidade
Integração Contínua é..
Automatização
Integração Contínua é..
Testes
Integração Contínua é..
Métricas
Vamos ao que interessa...
Servidor de Integração Contínua
Antes de começar...
IC - Ferramentas
Java
Android
.NET
.NET
JavaScript / HTML
.NET
Python
.NET
IC - Notificação
.NET
IC - Demonstração
.NET
IC - SandBox
 Projetos para teste das ferramentas;
 Um para cada linguagem;
 Livre para fazer o que cada um
quiser.
IC – Algumas dicas
.NET
IC – Livros
Jenkins – The Definitive Guide
http://wakaleo.com/books/jenkins-the-definitive-guide/download-jtdg-pdf
Beautif...
Dúvidas?
Obrigado!
Bruno Caimar
@brunocaimar
Obrigado
Próximos SlideShares
Carregando em…5
×

Integração contínua

299 visualizações

Publicada em

Apresentação sobre integração contínua - definição, ferramentas, etc.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
299
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Apresentações – Bruno Caimar
    Apresentação de Integração Contínua
    Perguntas:
    Quem sabe/não sabe o que é integração continua?
    Quem aqui sabe/não sabe que temos um servidor de integração continua?
  • O que é IC?
    Definição básica: pratica de integrar seu código continuamente (build), seja manual ou de forma automatizada.
    Integrar no sentido de: baixar do repositório, compilar, rodar testes, publicar relatórios, gerar setups/pacote
    Manual X Automatizado
    Exemplos:
    Erros de compilação – Quem nunca baixou um projeto do repositório e não conseguir nem compilá-lo?
    Alguém esqueceu de subir alguma arquivo para o repositório, faltou alguma dependência / etc.
    Exemplo: Projeto XX do ano passado – 1h30 para conseguir compilar o projeto.
  • Vamos ver com mais detalhes esses pontos nessa apresentação.
    Mas antes disso ...
  • Antes de falar os por quês, pra quês, como ....
  • Integração Contínua NÃO é uma desculpa para encontrar culpados.
    Blaming Culture;
    Apontar o dedo;
    Estigmatizar – ‘Chapéu’ de quebrador
    Se isso acontecer/está acontecendo tem algo muito errado acontecendo (e não é somente seu build que está quebrado)
  • Integração Contínua NÃO é sobre encontrar, castigar e punir.
    (BC - Não está muito pesado isso (as imagens)?)
    Remo - Brincadeira é bacana se o time gostar! Funciona como um incentivo em muitos times. E, na verdade, ninguém vai te dar uma remada de verdade. 
    Trocar.
  • Afinal: Por que ter um build se ele nunca quebra?
    Opiniões:
    Testes e builds são feitos para serem quebrados – Roy Osherove - @RoyOsherove
    Se o build nunca quebra, por quê tê-lo em primeiro lugar? – Ken Egozi - @kenegozi
  • Software Entropy
    If something is wrong, fix it
    Take some action to prevent future damage
    Small problems accumulate and turn your code into crap
    Teoria das janelas quebradas - Pragmatic programmer
    Um build quebrado por um ou dois dias, Ok. Mais que isso já é perigoso e mais que isso demostra atitude ‘eu não me importo’
    Afinal, se meu build está quebrado a mais de uma semana é por que ou ele não serve para nada ou ninguém se importa com ele. Se chegarem nesse ponto a melhor coisa a se fazer é remover o build do servidor.
  • Agora vamos para o que interessa...
  • IC essencialmente sobre aprendizado...
    Aprender com o que está acontecendo durante o tempo de vida do projeto
    Aprender com as falhas que ocorrem.
    Meu build quebrou – Por que aconteceu isso? Perguntas, Perguntas, Perguntas!
    Falhar, falhar novamente!
  • Confiança – O que eu fiz não está errado / Posso continuar nesse passo que estou caminho certo.
    Trabalho em equipe – O que eu fiz não está errado a ponto de atrapalhar meus colegas de equipe. Ajudar/Aprender algo com meus colegas quando um build está quebrado.
    Habito – Fazer sempre, fazer melhor.
  • Minimizar Riscos
    Responsabilidade / Compromisso
  • Antecipar problemas – Não quero descobrir surpresas de última hora
  • Comunicação
    Build é uma ferramenta de comunicação. Posso ficar sabendo o que está acontecendo no meu projeto mesmo não estando presente.
  • Feedback – Saber que estou fazendo (ou não) as coisas certas.
    Testes tem muito a ver com isso. Se eu tenho testes automatizados no meu projeto, tenho esse feedback para saber se o que eu fiz está correto ou não.
  • Visibilidade – Mostrar para todos o que está acontecendo no meu projeto.
    Falar sobre o uso da televisão
  • Automatização
    Trabalhar melhor
    Fazer o trabalho que realmente importa. Deixar para a maquina o que ela pode fazer pra gente.
  • Testes
    Executar testes unitários, performance, carga, etc.
    Exemplos: Sabesp, Pegasus, etc.
    Automatizar testes – Sejam eles quais forem (unitários, funcionais, performance, carga)
  • Métricas
    Linhas de código, número de testes, analise estática de código
    Conhecer a saúde de meu código
    Conhecer as praticas da linguagem que estou trabalhando (analise estática). Exemplo: meu uso recente de Python.
  • Antes de mostrar as coisas funcionando....
    Tudo isso é muito bonito, mas vai fazer eu entregar o meu projeto certo?
    Não! Mas pode te ajudar nisso, e ainda te poupar bastante dor de cabeça ‘técnica’ em sua entrega.
    (BC – Ver se achamos outra imagem)
  • SW servidor de integração continua – jenkins
    - O que é o Jenkins? Servidor de integração continua - Open Source feito em Java (Fork do Hudson)
    Plugins
    Visualizações
    Etc
  • Novidade
    - Paciência – As coisas costumam piorar antes de melhorar!
  • Nós vamos falar de algumas ferramentas sem detalhes.
  • Java
    -- Compilar
    -- PMD
    -- FindBugs
    -- Duplicate Code
    -- Analise Estatica
    -- Sonar
  • - .NET
    -- Compilar
    -- Rodar Tests (NUnit/XUnit)
    -- Rodar FxCop (Analise Estatica)
    -- Rodar StyleCop (Padrão de código)
    -- Rodar Msbuild / NANT / Powershell
  • - HTML/Javascript
    -- Compile (Google Closure)
    -- JsLint
    -- CSSLint
    -- Tests
    -- Minifier
    -- Combine + Compress
    -- Versioning
    -- Image resize / compress
    -- Generate configs to deploy
    -- via Gradle / Grunt
  • - Python
    -- Compilar
    -- Rodar Testes com
    -- Cobertura de Testes
    -- prospector/pylint/pychecker - Lint + duplicate code + other metrics
    -- pyntch - Python type checker
    -- PyMetrics / Radon+Xenon (Code complexity + Code Metrics)
    -- PEP 8 - Style Guide for Python Code
  • Jenkins Eclipse plugin6
    The Jenkins Tray Application plugin
    5.7.3. Notifications
    ---> Email
    ---> RSS Feeds
  • Demostração
    Configurar um projeto simples (Integração Github, relatório, notificação por email/tray));
    Efetuar um push para o GitHub para ver o Build rodando na TV
    Exibir a notificação – Email/Tray
    Usar o projeto Python Test
    Preparar roteiro demonstração
  • Xkcd – The #1 programmer excuse for legitimately slacking off: “My Code’s compiling.”
    Dicas – Build tem que ser rapido
    Se tenho um build lento é melhor separa-lo
    Não encontrou algo? Ferramenta? Algo não funciona? Converse com seu colega, converse conosco!
    Exemplo: Listen to your build / tests
    Contar caso do testes quebrados no projeto da Sabesp (Servidor de IC ficou fora do ar por mais de um mês e o build estava quebrado por causa de falha em testes. Alguns testes estavam frágeis. Dependiam de data/hora - Quebravam aleatoriamente.
    Build foi ignorado mas continha um outro teste importante quebrado. Erro foi percebido somente em ambiente de homologação (por sorte)
  • Beautiful Builds
    Patterns for Growing Readable, Maintainable
    Automated Build Processes
    Roy Osherove
    This book is for sale at http://leanpub.com/build
    http://BeautifulBuilds.com
    http://www.martinfowler.com/articles/continuousIntegration.html
    --> Jenkins Continuous Integration Cookbook - Packt
    http://www.amazon.com/Jenkins-Continuous-Integration-Cookbook-Alan/dp/1849517401
    Jenkins: The Definitive Guide - O'Reilly - $ 20
    http://www.amazon.com/gp/product/1449305350/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=1944687742&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=1849517401&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1C020529AAGWVJKZ3EW5
    Download Gratis
    http://wakaleo.com/books/jenkins-the-definitive-guide/download-jtdg-pdf
    (2007) Continuous Integration: Improving Software Quality and Reducing Risk
    http://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380/ref=pd_sim_b_5?ie=UTF8&refRID=1DA35FP6WXMKWH0HF624
  • Dúvidas?
    Não encontrou algo? Ferramenta? Algo não funciona?
    Peça ajuda!
    Falar das próximas apresentações sobre as ferramentas.
  • Integração contínua

    1. 1. Integração Contínua Feedback Aprendizado Comunicação Confiança Riscos Métricas Testes Automatização https://www.flickr.com/photos/ben124/6155701470/
    2. 2. O que é?
    3. 3. Por quê? Para quê? O quê? Como? Integração Contínua
    4. 4. Integração contínua é... Integração Contínua
    5. 5. Culpa Integração Contínua NÃO é..
    6. 6. Punição Integração Contínua NÃO é..
    7. 7. Por quê ter um build se ele nunca quebra?
    8. 8. Mas, MUITO CUIDADO... Don’t live with broken windows.
    9. 9. Integração contínua é... Integração Contínua
    10. 10. Aprendizado Integração Contínua é..
    11. 11. Trabalhar em equipe Integração Contínua é.. Confiança
    12. 12. Integração Contínua é.. Minimizar riscos
    13. 13. Integração Contínua é.. Evitar surpresas
    14. 14. Integração Contínua é.. Comunicação
    15. 15. Integração Contínua é.. Feedback
    16. 16. Integração Contínua é.. Visibilidade
    17. 17. Integração Contínua é.. Automatização
    18. 18. Integração Contínua é.. Testes
    19. 19. Integração Contínua é.. Métricas
    20. 20. Vamos ao que interessa...
    21. 21. Servidor de Integração Contínua
    22. 22. Antes de começar...
    23. 23. IC - Ferramentas
    24. 24. Java
    25. 25. Android
    26. 26. .NET .NET
    27. 27. JavaScript / HTML .NET
    28. 28. Python .NET
    29. 29. IC - Notificação .NET
    30. 30. IC - Demonstração .NET
    31. 31. IC - SandBox  Projetos para teste das ferramentas;  Um para cada linguagem;  Livre para fazer o que cada um quiser.
    32. 32. IC – Algumas dicas .NET
    33. 33. IC – Livros Jenkins – The Definitive Guide http://wakaleo.com/books/jenkins-the-definitive-guide/download-jtdg-pdf Beautiful Builds http://www.beautifulbuilds.com/
    34. 34. Dúvidas? Obrigado! Bruno Caimar @brunocaimar
    35. 35. Obrigado

    ×