SlideShare uma empresa Scribd logo
1 de 90
1
Ranger
• Maicon Carlos Pereira
• Formado em Ciência da Computação
• MBA em Gerenciamento de Projetos
• Profissional da área a mais de 10 anos...
• Benner Sistemas desde 2010
2
Meetup Backlog
To Do Doing Done
Contexto
Benner
Integração
Contínua
Jenkins Sonar
Sonar
3
Momento Jabá
4
+ 20 anos de história
+ 1.200 colaboradores
+ 150mil usuários ativos
+ R$ 220 Milhões de faturamento (2015)
5
6
7
“Não sou autoridade ou conhecedor do
assunto
A ideia é apenas compartilhar e iniciar
uma conversa sobre o tema”
Ranger
8
Dividir para conquistar....
9
O problema é como garantir que ao
integrar as partes tudo estará funcionando?
10
E quem nunca ouviu...
Estranho... na
minha máquina
funciona...
11
Pronto!
Só juntar tudo e
liberar a versão
12
Alguém sabe pq
isso parou de
funcionar?
13
Pronto! Terminei!
Só falta testar.
14
15
16
“Integração Contínua é uma pratica de desenvolvimento
de software onde os membros de um time integram seu
trabalho frequentemente,
Martin Fowler
geralmente cada pessoa integra pelo menos
diariamente – podendo haver múltiplas
integrações por dia.
17
Cada integração é verificada por um build automatizado (incluindo
testes) para detectar erros de integração o mais rápido possível.
Muitos times acham que essa abordagem leva a uma significante redução
nos problemas de integração e permite que um time desenvolva software
coeso mais rapidamente.”
automatizar + feedback
18
integração contínua não é nenhuma
novidade.....
Não é novo
não???
19
Grady Booch
Cunhou o termo e o propôs a “Integração Contínua” em 1991
em sua metodologia de desenvolvimento de software chamada
Booch Method.
“Os releases internos representam uma espécie de
integração contínua do sistema, e existem para
forçar o fechamento do micro processo”
20
Kent Beck
“Integre e atualize as versões do sistema várias vezes por dia,
cada vez que uma tarefa for terminada...”
21
“Comita” as alterações
Servidor
Fontes
Codifica
Compila
Testa
Comita
Documenta
Fecha o pacote
Disponibiliza no ftp
e tchau....
Codifica
Compila
Testa
Comita
documenta
e tchau....
Codifica
Compila
Testa
Comita
documenta
e tchau....
22
automatizar + feedback
como garantir que ao
integrar as partes tudo estará funcionando?
23
Teu fonte não
tá
compilando!!
Mas eu tinha
testado na
minha
máquina...
24
Agora tenho
mais 32 testes
unitários! 
Pronto!
Construi tudo
com TDD..
como validar que os
testes ainda estão passando?
32 testes comitados...
25
Servidor
Fontes
“Comita” as alterações
Servidor
IC
Notifica a falha ou sucesso
Verifica se tem alterações
Build
• “Baixa” os fontes
• Baixar os pacotes nuget
• Compilar os projetos
Test
Build
Testar
• Testes Unitários
• Testes de Integração
Post
BuildPost Build
• Notificar via E-mail
• Notificar via Chat
• Armazenar artefatos
• Métricas
26
Code Build Testes
Testes
Aceitação
Release
Interno
Deploy
Produção
Continuous Integration
Continuous Delivery
Continuous Deployment
27
Code Build Testes
Testes
Aceitação
Release
Interno
Deploy
Produção
Continuous Integration
Continuous Delivery
Continuous Deployment
System Integration
Test
User Acceptance
Test
28
DEV OPS
29
Práticas de Integração
Contínua
Martin Fowler
https://martinfowler.com/articles/continuousIntegration.html
30
Começa antes da integração....
• git pull ....
• coding...
• build...
• test...
• git pull...
• resolve conflitos
• build...
• test...
• git push...
Meu código
Meu código
junto com os demais
31
Repositório Único
• É raro mais ainda existem projetos sem
• tudo que você precisa para fazer uma build deve estar incluído
no repositório:
• scripts de teste,
• arquivos de configuração,
• esquema de banco de dados,
• scripts de instalação e
• bibliotecas de terceiros
32
Máquina de Integração
• Cada commit deve atualizar o repositório principal em uma
máquina de integração
• Manualmente
• Automaticamente
• Por que?
• Disciplina
• Ambientes diferentes
• Quem fez a build não a considera terminada enquanto ele não
recebe uma notificação
33
Corrigir as quebras o mais rapidamente
• Manter a master estável
• Processo / hábito
34
Build Automatizado
• Tudo que for além do F5 do Visual Studio, deve ser
automatizado...
• qualquer um deve ser capaz de ir em uma máquina virgem,
pegar as fontes do repositório, e com um único comando ter o
sistema rodando
• Build deve inclusive pegar o schema do banco de dados do
repositório e colocá-lo no ambiente de execução
35
Builds Auto-Testáveis
• Testes unitários
• TDD
• Fácil execução
• Avaliação dos resultados
MSTest
36
“Commits” frequentes / diários
• Usar a integração como meio de comunicação;
• encontrar rapidamente se existe algum conflito entre as versões;
• conflitos que não são detectados por semanas podem ser
difíceis de serem resolvidos.
• Os códigos comitados devem ser estáveis (compiláveis e
testáveis)
37
Mantenha a Build Rápida
• Build Rápida == Feedback rápido
• Separar
• Primária: Testes Unidades / Rápidos
• A cada build
• Secundária: Testes de Interface / Carga / Stress / ... Lentos..
• A cada X tempo ou em paralelo
• Sempre que uma build secundária falhar, avalie se é possível
criar um teste na build primária.
38
Teste em uma cópia do ambiente de
produção
• Quanto mais parecido for o ambiente de testes com o de
produção maior a chance de detectar problemas
• Mesmo hardware, mesma versão de SO, mesma versão do .Net
e demais ferramentas instaladas....
• Rodar testes em containers Docker
39
Torne fácil para qualquer um ter o último
executável.
• qualquer um envolvido no projeto deve ser hábil para ter a
última versão executável e ser capaz de roda-la:
• para demonstrações,
• testes exploratórios ou
• simplesmente ver o que mudou esta semana.
• Simplifique o acesso
• Disponibilizar container atualizado
40
Todos podem ver o que esta
acontecendo.
• Comunicação / Feedback
• Estado da Build
• Informações sobre a duração dos builds
• Que alterações lançaram o build
41
Automatize a Implantação do Sistema
(Deployment)
• Ter scripts que permitam facilmente implantar o software em
um ambiente de produção
• Reduz erros
• Reduz o tempo necessário, se fosse manual
• Algumas práticas:
• Balancear a parte da carga do web site para o node que contém a nova
versão
42
Benefícios da IC
43
Reduz o risco
• Não se espera até o fim do projeto ou desenvolvimento da
funcionalidade para integrar as partes
44
Facilita a identificação e solução de Bugs
• Não nos livras dos bugs
• Commits frequentes e checados por códigos auto-testáveis
• Commits pequenos
• “Fresco” na memória
45
Reduz o número de Bugs
• Bugs são cumulativos
• Quanto mais bugs você tiver, mais difíceis são se serem removidos
• Janela quebrada
• Pessoas tem menos energia para encontrar e eliminar os bugs quando
há muitos deles
• Desde que se tenha uma boa suíte de tests, a IC ajuda a reduzir
o número de Bugs
46
Aumenta a segurança para realizar
mudanças
• Confiabilidade no processo
47
Leva à uma Continuous Delivery /
Deployment
48
Na prática...
49
Jenkins
50
51
https://wiki.jenkins-ci.org/pages/viewpage.action?pageId=58001258
52
53
https://jenkins.io/download/
54
55
56
57
58
59
60
61
62
63
Dicas...
• Alterar conta do serviço do Windows
• Não estava conseguindo se autenticar no GIT
64
Jenkins + MsBuild
65
66
Jenkins + Gitlab
67
https://docs.gitlab.com/ee/integration/jenkins.html
Jenkins + Hangout
68
https://gist.github.com/tkhduracell/1443a07d380ec0bd3c46
Jenkins + xUnit.net
69
http://xunit.github.io/
https://xunit.github.io/docs/getting-started-desktop.html
70
Jenkins + Nuget
71
Configurando Jobs
72
73
74
Demo
75
Sonarqube
76
https://www.sonarqube.org/downloads/
77
78
79
admin
admin
80
81
82
83
84
85
Demo
86
TeamCity
87
https://www.jetbrains.com/teamcity/download/
88
Docker
89
https://store.docker.com/editions/community/docker-ce-desktop-windows?tab=description
90

Mais conteúdo relacionado

Mais procurados

TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDDKleber Bernardo
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012André Dias
 
Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Rodrigo Moyle
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!minastestingconference
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e ConceitosLuciano Reis
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoTchelinux
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terÁtilla Silva Barros
 
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voce
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voceTDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voce
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em vocetdc-globalcode
 

Mais procurados (20)

TDD
TDDTDD
TDD
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Metodologias Ágeis
Metodologias ÁgeisMetodologias Ágeis
Metodologias Ágeis
 
Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012
 
Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Vagrant sti
Vagrant stiVagrant sti
Vagrant sti
 
POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e Conceitos
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
O mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria terO mínimo de Integração Contínua que todo projeto deveria ter
O mínimo de Integração Contínua que todo projeto deveria ter
 
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voce
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voceTDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voce
TDC2018FLN | Trilha Testes - Flaky tests: O flakiness que ha em voce
 

Semelhante a IC e ferramentas para automação de builds

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
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutosiMasters
 
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
 
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
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de softwareLaura_ifpe
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest Labs[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest LabsJaqueline Ramos
 
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
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Continuous integration with jenkins
Continuous integration with jenkinsContinuous integration with jenkins
Continuous integration with jenkinsGeorge Godas
 

Semelhante a IC e ferramentas para automação de builds (20)

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
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
SonarQube
SonarQubeSonarQube
SonarQube
 
7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos
 
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
 
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
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
SAPO Session: Continuous Integration
SAPO Session: Continuous IntegrationSAPO Session: Continuous Integration
SAPO Session: Continuous Integration
 
[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest Labs[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest Labs
 
[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest Labs[O Palco é Delas!] Azure DevTest Labs
[O Palco é Delas!] Azure DevTest Labs
 
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
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
 
Continuous integration with jenkins
Continuous integration with jenkinsContinuous integration with jenkins
Continuous integration with jenkins
 

IC e ferramentas para automação de builds