Integração Contínua

"Integração contínua consiste em integrar o trabalho diversas vezes ao dia, assegurando que a base de código permaneça consistente ao final de cada integração."

Repositório

  • Crucial no processo de integração contínua
  • Desenvolvedores trabalhando junto
  • Sistema de Controle de versão centralizado
    • Função "desfazer"
    • Compartilhar informações
    • Evitar retrabalho

Integração

  1. Desenvolvedor realiza alterações no código
  2. Executa a suite de testes
  3. Gera build do sistema
  4. Integra o código

Integração Contínua

  • É o processo de Integração executado constantemente, evitando acúmulos
  • Mais fácil de encontrar erros em pequenas alterações
  • Automatização de builds
    • Build manual: cada desenvolvedor acaba gerando build diferente um do outro

Ferramentas

Travis CI

  • Serviço
  • Fácil integração ao GitHub
    • Somente GitHub
  • Configuração simples
.travis.yml

language: python

env:
- DJANGO=1.7

python:
- "2.7"

install:
- sudo apt-get install python2.7 python-pip
- pip install -r requirements.txt

before_script:
- cp configuration/databases.py.template configuration/databases.py
- cp configuration/security.py.template configuration/security.py
- python manage.py makemigrations
- python manage.py migrate

script:
- python manage.py test

after_success:
- coveralls

notifications:
    slack: busine-me:vHgBvWEGnKVRabVoYSTzd1tq

Jenkins

  • Server-based
  • Escrito em Java
    • Precisa de um servlet container
  • Compatível com a maioria dos sistemas de controle de versão
  • Muitos plugins