SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Integração	
  Con-nua	
  
    SAPO Session 2010.09.15
       Desenvolvimento
Desenvolvimento	
  
O processo de desenvolvimento

•  1 developer              •  + developers e/
   – Develop                   ou + módulos
   – Compile                    – Develop
   – Test                       – Integrate
   – Deploy                     – Compile
                                – Test
                                – Deploy
Desenvolvimento	
  
Aumento da complexidade e riscos associados

•    Ausência de uma versão deployable
•    Descoberta tardia de problemas
•    Pouca transparência
•    Código de má qualidade
Desenvolvimento	
  
O que é Qualidade?

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

•  Nope! É mensurável!!!
   –  Legibilidade
   –  Segurança
   –  Performance
   –  …
Desenvolvimento	
  
Mitigação de riscos




             What if ?...
Desenvolvimento	
  
Automatização
Integração	
  Con-nua	
  
It’s a good thing…


       Qualidade


                                com CI




                                sem CI

                     Complexidade
Integração	
  Con-nua	
  
O Tao de 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	
  
Modelo

                                   user	
  1	
                user	
  2	
              user	
  n	
  

                                        Feedback	
  
 dev	
  1	
  


                                                   Poll	
  
 dev	
  2	
  
                Commits	
     SCM	
                                    CI	
  Server	
  


 dev	
  n	
                                                     Build	
  
                                                                	
  .	
  Tests	
  
                                                                	
  .	
  Package	
  
                                                                	
  .	
  Deploy	
  
Integração	
  Con-nua	
  
Vantagens

•  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	
  
Desvantagens (alegadamente…)

•    Overhead para manter o sistema
•    Demasiadas mudanças iniciais
•    Custos adicionais
•    Test-driven development
     –  Esta é compreensível… 
Integração	
  Con-nua	
  
Continuous Compilation vs. Continuous Integration

•  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               –  Métricas relacionadas
   –  Compila código               com as builds
   –  Executa testes            –  Gera deployable
                                   packages
   –  Resultados de
      •    Code duplication     –  etc…
      •    Coding standards
      •    Code coverage
      •    etc…
   –  Gera documentação
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
Ferramentas	
  
Apache Ant

•    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 - exemplos
Ferramentas	
  
Apache Ant - exemplos
Ferramentas	
  
Apache Ant - exemplos
Ferramentas	
  
Apache Ant - exemplos
Ferramentas	
  
Outras ferramentas essenciais

•  PHPUnit (com PMD – Project Mess
   Detector)
•  PEAR::PHP_CodeSniffer
   –  Utilizando o [adaptado] Zend Coding
      Standard… 
•  Xdebug
•  phpDocumentor
Ferramentas	
  
Deployment no SAPO Fotos

•  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
Fim	
  
      Questões?
Pedro Mata-Mouros Fonseca
    twitter.com/matamouros
    matamouros@co.sapo.pt

Mais conteúdo relacionado

Mais procurados

Continuous delivery
Continuous deliveryContinuous delivery
Continuous deliveryMarco Valtas
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPWildtech
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Claudia Melo
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingDaniel Wildt
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberKamilla Queiroz Xavier
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Cloves da Rocha
 

Mais procurados (20)

Outras Metodologias Ágeis Parte 3
Outras Metodologias Ágeis Parte 3Outras Metodologias Ágeis Parte 3
Outras Metodologias Ágeis Parte 3
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Outras Metodologias Ágeis Parte 2
Outras Metodologias Ágeis Parte 2Outras Metodologias Ágeis Parte 2
Outras Metodologias Ágeis Parte 2
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XP
 
Aula 3 - Engenharia de Software
Aula 3 - Engenharia de SoftwareAula 3 - Engenharia de Software
Aula 3 - Engenharia de Software
 
FDD
FDDFDD
FDD
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Software
SoftwareSoftware
Software
 
Scrum
ScrumScrum
Scrum
 
Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme Programming
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saber
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
eXtreme Programming (XP)
eXtreme Programming (XP)eXtreme Programming (XP)
eXtreme Programming (XP)
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 

Semelhante a SAPO Session: Continuous Integration

SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDiogo Augusto Pereira
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
CPqD Developer Suite - SPIN Campinas - Reunião #56
CPqD Developer Suite - SPIN Campinas - Reunião #56CPqD Developer Suite - SPIN Campinas - Reunião #56
CPqD Developer Suite - SPIN Campinas - Reunião #56CPqD
 
Cds overview para o SPIN Campinas #56
Cds overview para o SPIN Campinas #56Cds overview para o SPIN Campinas #56
Cds overview para o SPIN Campinas #56Andreyev Dias de Melo
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScriptTaller Negócio Digitais
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agileananegrello
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e AzureJaqueline Ramos
 
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline....Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...iMasters
 

Semelhante a SAPO Session: Continuous Integration (20)

SonarQube
SonarQubeSonarQube
SonarQube
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidade
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
CPqD Developer Suite - SPIN Campinas - Reunião #56
CPqD Developer Suite - SPIN Campinas - Reunião #56CPqD Developer Suite - SPIN Campinas - Reunião #56
CPqD Developer Suite - SPIN Campinas - Reunião #56
 
Cds overview para o SPIN Campinas #56
Cds overview para o SPIN Campinas #56Cds overview para o SPIN Campinas #56
Cds overview para o SPIN Campinas #56
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Strider CD - Deploy Contínuo com JavaScript
Strider CD -  Deploy Contínuo com JavaScriptStrider CD -  Deploy Contínuo com JavaScript
Strider CD - Deploy Contínuo com JavaScript
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure
 
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline....Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline...
 

SAPO Session: Continuous Integration