Post on 22-Jan-2018
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