SAPO Session: Continuous Integration

37
Integração Con-nua SAPO Session 2010.09.15 Desenvolvimento

Transcript of SAPO Session: Continuous Integration

Page 1: SAPO Session: Continuous Integration

Integração  Con-nua  SAPO Session 2010.09.15

Desenvolvimento

Page 2: SAPO Session: Continuous Integration

•  1 developer – Develop – Compile – Test – Deploy

•  + developers e/ou + módulos – Develop – Integrate – Compile – Test – Deploy

Desenvolvimento  O processo de desenvolvimento

Page 3: SAPO Session: Continuous Integration

•  Ausência de uma versão deployable •  Descoberta tardia de problemas •  Pouca transparência •  Código de má qualidade

Desenvolvimento  Aumento da complexidade e riscos associados

Page 4: SAPO Session: Continuous Integration

•  Característica de superioridade •  Percepção •  Subjectivo

Desenvolvimento  O que é Qualidade?

•  Nope! É mensurável!!! – Legibilidade – Segurança – Performance – …

Page 5: SAPO Session: Continuous Integration

What if ?...

Desenvolvimento  Mitigação de riscos

Page 6: SAPO Session: Continuous Integration

Desenvolvimento  Automatização

Page 7: SAPO Session: Continuous Integration

Integração  Con-nua  It’s a good thing…

com CI

Qualidade

Complexidade

sem CI

Page 8: SAPO Session: Continuous Integration

•  Commits frequentes •  Não submeter código “partido” •  Builds “partidos” são prioritários •  Test-driven development •  100% sucesso em todos os testes

Integração  Con-nua  O Tao de CI!

Page 9: SAPO Session: Continuous Integration

SCM  

dev  1  

dev  2  

dev  n  

CI  Server  

Integração  Con-nua  Modelo

Build    .  Tests    .  Package    .  Deploy  

user  1   user  2   user  n  

Feedback  

Poll  

Commits  

Page 10: SAPO Session: Continuous Integration

•  Reduz risco – early detection – mensurabilidade de software health – redução de assunções

•  Automatiza processos – sempre executado – nenhum passo é esquecido

•  Deployable software

Integração  Con-nua  Vantagens

Page 11: SAPO Session: Continuous Integration

•  Visão clara do projecto – métricas – suporte à decisão

•  Confiança – Build de integração – Menor resistência à mudança – A more confident programmer == a happier programmer == a better product

Integração  Con-nua  Vantagens

Page 12: SAPO Session: Continuous Integration

•  Overhead para manter o sistema •  Demasiadas mudanças iniciais •  Custos adicionais •  Test-driven development – Esta é compreensível…

Integração  Con-nua  Desvantagens (alegadamente…)

Page 13: SAPO Session: Continuous Integration

•  Compilação Contínua – Polling SCM – Compila código – Resultados

Integração  Con-nua  Continuous Compilation vs. Continuous Integration

Page 14: SAPO Session: Continuous Integration

•  Integração Contínua –  Polling SCM –  Compila código –  Executa testes –  Resultados de

•  Code duplication •  Coding standards •  Code coverage •  etc…

–  Gera documentação

–  Métricas relacionadas com as builds

–  Gera deployable packages

–  etc…

Integração  Con-nua  Continuous Compilation vs. Continuous Integration

Page 15: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 16: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 17: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 18: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 19: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 20: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 21: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 22: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 23: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 24: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 25: SAPO Session: Continuous Integration

Ferramentas  Continuous Integration e PHP

Page 26: SAPO Session: Continuous Integration

•  Build tool •  OS agnostic •  Tabs e espaços não são problema… •  Utiliza classes Java – facilmente extensível •  Configuração XML

Ferramentas  Apache Ant

Page 27: SAPO Session: Continuous Integration

•  Targets •  Tasks •  Dependências •  Camada de abstracção – <exec>

Ferramentas  Apache Ant

Page 28: SAPO Session: Continuous Integration

Ferramentas  Apache Ant - exemplos

Page 29: SAPO Session: Continuous Integration

Ferramentas  Apache Ant - exemplos

Page 30: SAPO Session: Continuous Integration

Ferramentas  Apache Ant - exemplos

Page 31: SAPO Session: Continuous Integration

Ferramentas  Apache Ant - exemplos

Page 32: SAPO Session: Continuous Integration

•  PHPUnit (com PMD – Project Mess Detector)

•  PEAR::PHP_CodeSniffer – Utilizando o [adaptado] Zend Coding

Standard…

•  Xdebug •  phpDocumentor

Ferramentas  Outras ferramentas essenciais

Page 33: SAPO Session: Continuous Integration

•  Dois níveis de integração no servidor CI – 1º nível: desenvolvimento diário – 2º nível: integração de desenvolvimentos

maduros

•  Geração de release packages (2º nível) – sapofotos-release-build.168.tar.gz

•  Colocação manual nas várias máquinas – scp

Ferramentas  Deployment no SAPO Fotos

Page 34: SAPO Session: Continuous Integration

•  Quatro comandos apenas: – # tar -xzf sapofotos-release-build.168.tar.gz – # cd sapofotos-release-build.168 – # ant build – # ant rollout

Ferramentas  Deployment no SAPO Fotos

Page 35: SAPO Session: Continuous Integration

•  Para versão debug (antes de fazer rollout) – # ant build-debug

•  Após rollout, if sh*t happens… – # ant rollback

Ferramentas  Deployment no SAPO Fotos

Page 36: SAPO Session: Continuous Integration

Ferramentas  Deployment no SAPO Fotos

Page 37: SAPO Session: Continuous Integration

Fim  Questões?

Pedro Mata-Mouros Fonseca twitter.com/matamouros [email protected]