CONTINUOUS
INTEGRATION
DELIVERY
DEPLOYMENT
DAN JESUS
Engenheiro de software / devops na F(x),
pai e jogador de basquete na horas vagas.
TÉCNICAS PARA
ENTREGAR SOFTWARE
RAPIDAMENTE
GITHUB
JANEIRO À SETEMBRO DE 2012 FORAM REALIZADOS
41.679 BUILDS E 12.602 DEPLOYS
NO DIA 23 DE AGOSTO DE 2012 REALIZADOS
563 BUILDS E 175 DEPLOYS.
AMAZON
REALIZA O DEPLOY DE UM NOVO
SOFTWARE A CADA SEGUNDO
“Integração Contínua é uma pratica de
desenvolvimento de software onde os
membros de um time integram seu
trabalho frequentemente…
-Martin Fowler
INTEGRAÇÃO CONTINUA
BASE INTEGRAÇÃO CONTÍNUA
‣ Controle de Versão (Git, Mercurial, Subversion, etc.)
‣ Principais ferramentas de controle de versão (Github,
Bitbucket e Gitlab)
BASE INTEGRAÇÃO CONTÍNUA
‣ Servidor de Integração Contínua (Jenkins, Travis, Codeship,
etc.)
BASE INTEGRAÇÃO CONTÍNUA
‣ Ferramenta de automação de build (Gulp, NPM, Grunt,
Webpack, Shell, Maven, Gradle.)
BASE INTEGRAÇÃO CONTÍNUA
‣ Testes Unitários (Mocha, Jest, Ava, JUnit, TestNG, phpunit,
etc.)
A Entrega Contínua é um conjunto de práticas
com o objetivo de garantir que um novo código
esteja apto para ser disponibilizado em
ambiente de produção.
ENTREGA CONTÍNUA
BASE ENTREGA CONTÍNUA
‣ Ambientes de Homologação, Dev e Produção configuráveis
BASE ENTREGA CONTÍNUA
‣ Ambientes de Homologação, Dev e Produção configuráveis
‣ Processo de deploy automatizado (Capistrano, Git Hook,
Rsync, DeployBot etc.)
BASE ENTREGA CONTÍNUA
‣ Ambientes de Homologação, Dev e Produção configuráveis
‣ Processo de deploy automatizado (Capistrano, Git Hook,
Rsync, DeployBot etc.)
‣ Ferramenta de integração contínua (Jenkins, Travis)
Código pronto para deploy.
DEPLOY CONTÍNUO
‣ Assim que o programador julga pronto seu código e aciona a
solicitação para deploy, são realizadas todas validações
previstas nas metodologias anteriores (Integração Contínua,
Entrega Contínua)
DEPLOY CONTÍNUO
NA PRÁTICA COM
NODE.JS
O PROJETO
Desenvolver api simples em node.js que
devolve um hello world quando fazemos
um get em seu endpoint principal.
CONFIGURANDO O PROJETO
➤ Testes unitários com jest
➤ Versão do node.js latest (v8)
➤ Projeto no GitHub 

https://github.com/danjesus/jenkins-pipeline-sample
CONFIGURANDO O JENKINS PIPELINE
‣ Configuração do Jenkins pipeline
pipeline {
agent {
docker 'node:7.10-alpine'
}
stages {
stage('Build') {
steps {
echo 'Building..'
sh 'npm install'
}
}
stage('Test') {
steps {
echo 'Testing..'
sh 'npm t'
}
}
}
}
DÚVIDAS?danper.jesus@gmail.com
jesus@fdex.com.br
github.com/danjesus
REFERÊNCIAS
‣ http://www.zdnet.com/article/how-amazon-handles-a-new-software-
deployment-every-second/
‣ http://cwisoftware.github.io/drops/integracao-continua-e-deploy-
continuo-tempo-e-dinheiro
‣ https://www.facebook.com/note.php?note_id=10150660826788920
‣ https://www.4linux.com.br/diferencas-entre-integracao-deploy-e-
entrega-continua
‣ http://blog.justdigital.com.br/devops-qual-a-diferencas-entre-
continuous-delivery-continuous-integration-e-continuous-
deployment/
‣ https://www.infoq.com/br/presentations/deploy-continuo-guilherme
REFERÊNCIAS
‣ http://blog.algorich.com.br/2014/05/07/integracao-e-deploy-
continuos/
‣ http://agiletesters.com.br/topic/171/qual-a-diferen%C3%A7a-entre-
entrega-cont%C3%ADnua-e-deploy-cont%C3%ADnuo
‣ https://github.com/fga-gpp-mds/00-Disciplina/wiki/
Integra%C3%A7%C3%A3o-Cont%C3%ADnua---Deploy-
Cont%C3%ADnuo
‣ https://medium.com/netflix-techblog/deploying-the-netflix-
api-79b6176cc3f0
‣ https://www.youtube.com/watch?v=ZLBhVEo1OG4
‣ https://pt.slideshare.net/bernardesmarlon/da-integrao-entrega-
contnua

Continuous integration, delivery and deployment in nodejs