diff --git a/cap05.Rmd b/cap05.Rmd
index 395b3470496c1ae4bcf5570833956ad21caeeb96..7e4741f455cebdf513d60e59583d40a8804f2bd9 100644
--- a/cap05.Rmd
+++ b/cap05.Rmd
@@ -693,8 +693,128 @@ git tag -a v1.0 -m "Versão 1.0 do software"
 
 # Integração contínua #
 
-Permite chegar se o projeto, no caso de softwares, está
-funcionando/instalando sem erros.
+Quando você está trabalhando em um projeto Git, cada *commit*, cada
+*branch*, contém algum desenvolvimento. Solucionar conflitos de *merge*
+não é um atarefa complicada, principalmente se forem consideradas as
+ferramentas certas para isso, como será visto no próximo capítulo. No
+entanto, será que o último *commit* ou o novo *branch* estão funcionais?
+O QUE É FUNCIONAL?
+
+Reprodutibilidade é uma questão de fundamental importância em projetos
+coletivos e compartilhados. Tem-se a preocupação de que seu código
+(programa) seja executado (instalado) sem erros nos ambientes dos seus
+desenvolvedores e clientes. O desenvolvimento do código visa
+aperfeiçoá-lo mas o tempo todo estamos sujeitos fazer modificações que
+induzem erros ou encontrar erros não esperados (*bugs*).
+
+Rastrear o projeto atrás de erros não é uma tarefa fácil. Em uma
+situação ideal, alguém teria que testar se o código executa (software
+instala) em uma máquina cliente (com os requisitos mínimos exigidos),
+toda vez que um *commit* fosse feito, já que os *commits* indicam que
+modificações foram feitas. Se o teste for positivo, ok, sem problemas,
+se o teste for negativo, informar a equipe sobre como proceder, onde foi
+o erro.
+
+Não é raro programar alguma rotina (bash, R, etc) que seja bem sucedida
+no ambiente em que foi desenvolvido mas que a execução apresenta falhas
+na máquina de outra pessoa. Garantir reprodutibilidade não é fácil. O
+melhor jeito é testar em um ambiente virgem, numa máquina cliente que
+contenha apenas os requisitos mínimos. Após verificar o código você deve
+voltar o ambiente para a estaca 0 para que possam ser feitos novos
+testes.
+
+Integração contínua significa exatamente isso: seu repositório Git está
+continuamente integrado à um ambiente cliente que faz verificações toda
+vez que surge um novo *commit*. A ideia da integração contínua é bem
+mais simples que a sua implementação, logicamente, como tudo.
+
+Implementar a integração contínua no GitHub e GitLab é diferente. O
+GiHub oferece diversas opções enquanto que o GitLab CE têm o serviço de
+forma nativa.
+
+Seja qual for a opção, as vantagens da IC são:
+  1) Economia de tempo com inspeção de código;
+  2) Verificação em um ambiente virgem;
+  3) Verificação em vários cenários (arquiteturas, SO, dependências e
+     versões);
+  4) Informação coletiva à equipe do erro na hora que ocorre por envio
+     automático de mensagem;
+  5) Indicação de sucesso ou não na home do projeto;
+  6) Entrega de documentação e versões estáveis zipadas, etc.
+  7) Custo computacional reduzido já que é feito em servidor separado.
+  8) Verificação a cada *commit*, status em cada branch e requisiação de
+     merge.
+  
+
+**GitHub**
+
+https://travis-ci.org/
+http://www.codeaffine.com/2014/09/01/travis-continuous-integration-for-github-projects/
+
+Embora exista uma lista grande de serviços de integração contínua
+disponíveis para repositórios GitHub, um dos mais usados é o Travis CI.
+Travis CI (*continuous integration*) é um serviço free e open source
+destinado à integração contínua para projeto **públicos** no GitHub.
+
+Para vincular um projeto no GitHub com IC no Travis CI, você precisa
+logar no <https://travis-ci.org/> com a sua conta do GitHub. Assim que
+você logar, o serviço pede autorização para acessar sua conta, seus
+repositórios. Acesso permitido, uma lista com os seus repositórios será
+exibida na qual você pode marcar os repositórios que usarão o serviço.
+A próxima etapa é criar um arquivo `.travis.yml` na raíz do seu
+repositório Git. Esse arquivo espefica todas as instruções sobre o seu
+repostório de devem ser feitas a fim de verificá-lo. Se seu repositório
+é um pacote R, por exemplo, esse arquivo vai ter instruções de
+instalação do pacote.
+
+Cada projeto, cada linguagem, têm uma forma particular de ser
+testada. Para pacotes R, o Travis CI tem uma documentação de orientação:
+<https://docs.travis-ci.com/user/languages/r/>. Além disso, uma boa
+prática em ver exemplos em uso, como o `.travis.yml` dos pacotes R
+`knitr` (<https://github.com/yihui/knitr>) e `devtools`
+(<https://github.com/hadley/devtools>) que estão na lista dos mais
+utilizados.
+
+Para todas as liguagens e objetivos têm-se exemplos de arquivos
+`.trevis.yml`. Para o Emacs e biblitecas visite
+<https://github.com/rolandwalker/emacs-travis>,
+<https://github.com/Malabarba/elisp-bug-hunter> e
+<https://github.com/abo-abo/tiny>. Para projetos em `C++` e `phyton`,
+assim como o R, o Travis CI tem uma documentação introdutória. Visite
+<https://docs.travis-ci.com/user/language-specific/> para ver a lista de
+documentações.
+
+Além do linguagens de programação, é possível testar inclusive a
+compilação de um documento Latex:
+<http://harshjv.github.io/blog/setup-latex-pdf-build-using-travis-ci/>.
+
+*branch build flow*
+*pull request build flow*
+
+`after_failure` (information, error report)
+`after_success` (deployment, uploads de documentação e versões estáveis)
+
+exibir build status no README
+fazer *webhook* com Slack
+
+**GitLab**
+
+`.gitlab-ci.yml`
+
+```{r, eval=FALSE, engine="yml"}
+job_R:
+  script:
+    - echo $HOME
+    - Rscript -e 'getwd(); .libPaths(); sessionInfo()'
+    - Rscript -e 'library(devtools); check()'
+    - Rscript -e 'library(devtools); .libPaths(new = path.expand("~/R-tests/legTools")); install(local = FALSE)'
+```
+
+https://about.gitlab.com/gitlab-ci/
+https://about.gitlab.com/2015/02/03/7-reasons-why-you-should-be-using-ci/
+http://alanmonger.co.uk/php/continuous/integration/gitlab/ci/docker/2015/08/13/continuous-integration-with-gitlab-ci.html
+
+<https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software>
 
 <!---------------------------------------------------------------------- -->