SAPO Session: Continuous Integration

Post on 22-Jan-2018

601 views 0 download

Transcript of SAPO Session: Continuous Integration

Integração  Con-nua  SAPO Session 2010.09.15

Desenvolvimento

•  1 developer – Develop – Compile – Test – Deploy

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

Desenvolvimento  O processo de desenvolvimento

•  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

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

Desenvolvimento  O que é Qualidade?

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

What if ?...

Desenvolvimento  Mitigação de riscos

Desenvolvimento  Automatização

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

com CI

Qualidade

Complexidade

sem CI

•  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!

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  

•  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

•  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

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

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

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

Integração  Con-nua  Continuous Compilation vs. 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

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

Ferramentas  Continuous Integration e PHP

•  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

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

Ferramentas  Apache Ant

Ferramentas  Apache Ant - exemplos

Ferramentas  Apache Ant - exemplos

Ferramentas  Apache Ant - exemplos

Ferramentas  Apache Ant - exemplos

•  PHPUnit (com PMD – Project Mess Detector)

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

Standard…

•  Xdebug •  phpDocumentor

Ferramentas  Outras ferramentas essenciais

•  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

•  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

•  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

Ferramentas  Deployment no SAPO Fotos

Fim  Questões?

Pedro Mata-Mouros Fonseca twitter.com/matamouros matamouros@co.sapo.pt