SlideShare uma empresa Scribd logo
1 de 30
Integração contínua
Sumário
O que é
Ferramentas
Por que usar integração contínua?
Testes
Build
Servidor de Integração Contínua
Deploy
Integração Contínua
Surgiu como parte das práticas da metodologia ágil XP (Extreme
Programming).
Tem como foco o desenvolvimento de software em ciclos menores,
proporcionando melhor resposta a alterações e inclusão de novos
requisitos.
Integração contínua trata-se de um conjunto de boas práticas que também
podem ser adotadas em metodologias de desenvolvimento convencionais.
Integração Contínua
Tem como ideia principal a diminuição dos riscos através do monitoramento
constante das alterações, mantendo a integração frequente do código.
Esta atividade passa a fazer parte do processo de desenvolvimento, sendo
considerada como um procedimento normal e corriqueiro.
Integração Contínua
A mesma deve ocorrer com a maior frequência possível, idealmente a cada
alteração efetuada(commit), pois em caso de problema, o conjunto de
modificações em que a falha está inserida é menor, facilitando a
identificação e correção do(s) erro(s).
Integração Contínua
Para que a integração seja efetiva, é necessário verificar o funcionamento do
código após as modificações.
Para atender esta necessidade, o desenvolvimento em conjunto com a
realização de testes é fundamental, de preferência com a adoção da
metodologia TDD (Test Driven Development).
Integração Contínua
Como resultado da execução de uma integração bem sucedida,
conseguimos atingir os seguintes benefícios:
Garantia que o código compila e que as funcionalidades testadas mantêm sua
integridade e funcionamento esperados;
Uma potencial versão do software, que pode ser utilizada, por exemplo, pela
equipe de QA para execução de testes.
Benefícios - Melhora a produtividade do
desenvolvedor
A integração contínua ajuda sua equipe a ser mais produtiva ao liberar os
desenvolvedores de tarefas manuais e encorajar comportamentos que
ajudam a reduzir o número de erros e bugs implantados para os clientes.
Benefícios - Encontrar e investigar bugs mais
rapidamente
Com testes mais frequentes, sua equipe pode descobrir e investigar bugs
mais cedo, antes que no futuro os problemas cresçam demais.
Benefícios - Distribuir atualizações mais
rapidamente
A integração contínua ajuda a sua equipe a distribuir atualizações para os
clientes mais rapidamente e com maior frequência.
Ferramentas
Jenkins
Travis CI
Bamboo
CircleCI
TeamCity
Ferramentas
Testes
Um bom modo para pegar erros mais rápida e eficientemente é incluir testes automáticos
no processo de build. Testes não são perfeitos, mas eles podem pegar muitos bugs – o
suficiente para ser útil.
Os testes necessitam estar aptos para rodarem com um simples comando e serem
checados automaticamente. O resultado da suíte dos testes em execução deve indicar se
estes falharam. Para uma build ser auto-testável a falha de um teste deve fazer com que a
build falhe.
Build
Com a utilização de teste e o controle de versão centralizado, é necessária para
uma boa integração, a automatização dos builds. O processo de build
(compilar, preparar o executável, rodar os testes automatizados, etc.)
Não automatizar os builds, é um erro, pois diversos problemas ocorrem quando
o processo é feito de forma manual, pois cada desenvolvedor acaba realizando
o build de forma diferente, podendo criar problemas na integração.
Build
Um outro ponto importante, é que os builds devem ser auto testáveis, ou seja,
durante os builds é necessário ter também os testes automatizados, como
mencionados, para melhorar no processo de detecção de erros.
Build
A automatização do processo de build é possível por meio da criação de
scripts, que executam cada uma dessas etapas da construção em sequência,
reportando o resultado ao final da execução de cada uma. A automatização de
build utilizando scripts traz benefícios para o processo de construção.
Build
● Facilidade na execução
O script de build geralmente é disparado por um ou poucos comandos,
simplificando a execução do build.
Build
Padronização do build
O script de build é compartilhado por toda a equipe de desenvolvimento, sendo
executado da mesma forma por cada integrante.
Build
Parametrização do build
O script de build pode ser elaborado para permitir a utilização de parâmetros
durante a construção. Um exemplo é o fornecimento de parâmetros para que a
versão construída esteja de acordo com os possíveis ambientes de execução
da aplicação (ambiente de testes, ambiente de homologação ou ambiente de
produção).
Build
Execução de todas as etapas
O script de build executa todas as etapas em sequência, garantindo que elas
não sejam esquecidas ou suprimidas. O script de build até pode permitir a
supressão da alguma etapa durante a construção, mas esse recurso deve ser
usado apenas em casos específicos.
A facilidade no disparo do build é aproveitada pelo Servidor de Integração
Contínua, para manter a integração e construção frequente do projeto.
Servidor de Integração Contínua
O Servidor de Integração Contínua é uma aplicação que tem como objetivo
principal recuperar as alterações ocorridas no repositório e integrá-las, com a
execução do script de build. Para que esta tarefa seja executada, o servidor
deve permitir a configuração de planos de build, que armazenam as
configurações necessárias para que a integração possa ser executada, como o
endereço do repositório para monitoramento das modificações, a frequência da
execução, o(s) comando(s) para o disparo do build e as configurações das
notificações dos resultados.
Servidor de Integração Contínua
Uma funcionalidade essencial do Servidor de Integração Contínua é a
configuração de mecanismos de notificação. Estes mecanismos divulgam os
resultados da integração, sendo importantes para uma ação rápida por parte da
equipe de desenvolvimento, em caso de falha na integração. Geralmente, o
principal mecanismo de notificação utilizado é o disparo de e-mail, mas alguns
mecanismos alternativos podem ser utilizados, como plugins para IDEs, plugins
Desktop e o envio de mensagens de texto (SMS).
Deploy
Em termos gerais, deploy significa colocar em posição. Na prática, geralmente
disponibilizar um sistema para uso, seja num ambiente de desenvolvimento,
para testes ou em produção.
O termo deploy pode significar muitas coisas, dependendo do ambiente e da
tecnologia. Um desenvolvedor pode fazer o deploy da aplicação web no seu
servidor web local. Pode também fazer o deploy para produção, usado pelos
usuários finais.
Deploy
Nível de automação
O deploy pode ser “manual”, parcialmente automatizado ou completamente
automatizado.
Deploy
Uma das principais dores de cabeça que um cliente enfrenta, mesmo em
empresas que adotam metodologias ágeis como XP e Scrum, está ligada ao
produto ser colocado em produção e não funcionar: a famosa frase “mas no
meu computador funcionou”.
Deploy
A solução está em criar um sistema de homologação.
Primeiro o projeto é compilado, depois os testes unitários são executados.
Na primeira fase, os testes executam as funcionalidades como o cliente faria e
cobrem a maior quantidade de funções plausíveis de automatização. Na
segunda fase, os desenvolvedores podem optar por deployar para um sistema
de homologação, onde o cliente aprovará com os dados copiados de produção
(alterações ligadas a sigilo de dados devem ser aplicadas).
Deploy
Por fim, quando o sistema está aprovado em homologação, com um clique o
desenvolvedor efetua o deploy para produção.
Conclusão
Toda essa automatização tem um custo inicial de desenvolvimento que é
compensado com a minimização de erros humanos no processo de deploy e na
lentidão do mesmo.
A chance de funcionar em produção é maximizada uma vez que a mesma foi
testada em homologação com uma cópia mais fidedigna do sistema de
produção possível: menos reclamações e tempo perdido pelo cliente.
Referências
http://www.devmedia.com.br/integracao-continua-da-teoria-a-pratica/28284
https://aws.amazon.com/pt/devops/continuous-integration/
http://www.devmedia.com.br/integracao-continua-da-teoria-a-pratica/28284
http://www.pedromendes.com.br/2009/03/04/traducao-do-artigo-sobre-integracao-continua/
http://blog.caelum.com.br/integracao-continua-deploys-e-aprovacoes-sem-dores-de-cabeca-para-o-cliente/

Mais conteúdo relacionado

Mais procurados

Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Marcus Carvalho
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesSamanta Cicilia
 
Modelos de Processo de Software - INCREMENTAL
Modelos de Processo de Software - INCREMENTALModelos de Processo de Software - INCREMENTAL
Modelos de Processo de Software - INCREMENTALVitória Pavan
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Mariana Elisa Moisés , CTFL-AT,MBA
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeWende Mendes
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing Walter Farias
 
Ciclo de vida de software
Ciclo de vida de software Ciclo de vida de software
Ciclo de vida de software caricati
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaLu
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todos
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para TodosTDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todos
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todostdc-globalcode
 
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
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareSandy Maciel
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasMicrosoft
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 

Mais procurados (19)

Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)
 
Automação de Testes
Automação de TestesAutomação de Testes
Automação de Testes
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Modelos de Processo de Software - INCREMENTAL
Modelos de Processo de Software - INCREMENTALModelos de Processo de Software - INCREMENTAL
Modelos de Processo de Software - INCREMENTAL
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing
 
Ciclo de vida de software
Ciclo de vida de software Ciclo de vida de software
Ciclo de vida de software
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todos
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para TodosTDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todos
TDC2018SP | Trilha Testes - Testes de Acessibilidade - Qualidade para Todos
 
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)
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de software
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivas
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 

Destaque

Trabalho sobre segurança na internet
Trabalho sobre segurança na internetTrabalho sobre segurança na internet
Trabalho sobre segurança na internetfatima-coelho
 
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurd
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurdSubsidiedossiers Brussels schepen Ouriaghli wel erg gekleurd
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurdThierry Debels
 
Filipino MT1A Filipino2 Riverside
Filipino MT1A Filipino2 RiversideFilipino MT1A Filipino2 Riverside
Filipino MT1A Filipino2 RiversideJuan Alegarbes
 
El emprendimiento sebastian rivera 8 c
El emprendimiento sebastian rivera 8 cEl emprendimiento sebastian rivera 8 c
El emprendimiento sebastian rivera 8 cSebastianRivera334
 
A question of balance – managing recruitment risk
A question of balance – managing recruitment riskA question of balance – managing recruitment risk
A question of balance – managing recruitment riskSandy Roach FIRP
 
Koneksi java mysql
Koneksi java mysqlKoneksi java mysql
Koneksi java mysqldaniels1jaya
 
Pendekatan gwr (geographically weighted regression)
Pendekatan gwr (geographically weighted regression)Pendekatan gwr (geographically weighted regression)
Pendekatan gwr (geographically weighted regression)Marnii amiru
 
Design effective presentations
Design effective presentationsDesign effective presentations
Design effective presentationsMerry Abbasi
 
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1Tiago Rafael
 

Destaque (11)

Trabalho sobre segurança na internet
Trabalho sobre segurança na internetTrabalho sobre segurança na internet
Trabalho sobre segurança na internet
 
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurd
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurdSubsidiedossiers Brussels schepen Ouriaghli wel erg gekleurd
Subsidiedossiers Brussels schepen Ouriaghli wel erg gekleurd
 
Filipino MT1A Filipino2 Riverside
Filipino MT1A Filipino2 RiversideFilipino MT1A Filipino2 Riverside
Filipino MT1A Filipino2 Riverside
 
El emprendimiento sebastian rivera 8 c
El emprendimiento sebastian rivera 8 cEl emprendimiento sebastian rivera 8 c
El emprendimiento sebastian rivera 8 c
 
A question of balance – managing recruitment risk
A question of balance – managing recruitment riskA question of balance – managing recruitment risk
A question of balance – managing recruitment risk
 
Grecia
GreciaGrecia
Grecia
 
Koneksi java mysql
Koneksi java mysqlKoneksi java mysql
Koneksi java mysql
 
Pendekatan gwr (geographically weighted regression)
Pendekatan gwr (geographically weighted regression)Pendekatan gwr (geographically weighted regression)
Pendekatan gwr (geographically weighted regression)
 
Design effective presentations
Design effective presentationsDesign effective presentations
Design effective presentations
 
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1
SLIDES DA SITUAÇÃO DE APRENDIZAGEM 1 - 1º ANO VOL.1
 
Trabalho senai
Trabalho senaiTrabalho senai
Trabalho senai
 

Semelhante a Integração contínua - Prática de desenvolvimento

Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
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
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubMarcelo Souza Vieira
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NETLuthiano Vasconcelos
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
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
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e CEliane Collins
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Javaelliando dias
 
[.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
 
Integracao Continua com CruiseControl
Integracao Continua com CruiseControlIntegracao Continua com CruiseControl
Integracao Continua com CruiseControlLuthiano Vasconcelos
 

Semelhante a Integração contínua - Prática de desenvolvimento (20)

Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
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
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e GithubDescomplicando CI/CD com Jenkins, Docker Swarm e Github
Descomplicando CI/CD com Jenkins, Docker Swarm e Github
 
Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Integracao Continua em projetos .NET
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NET
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
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
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Implantação de Ambiente de Integração contínua para  projeto que usa Java e CImplantação de Ambiente de Integração contínua para  projeto que usa Java e C
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
[.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...
 
Integracao Continua com CruiseControl
Integracao Continua com CruiseControlIntegracao Continua com CruiseControl
Integracao Continua com CruiseControl
 

Mais de Mario Mendonça

Gulp - Automatizador de tarefas de front-end
Gulp - Automatizador de tarefas de front-endGulp - Automatizador de tarefas de front-end
Gulp - Automatizador de tarefas de front-endMario Mendonça
 
Web socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webMario Mendonça
 
Web Storage - Armazenamento de dados
Web Storage - Armazenamento de dadosWeb Storage - Armazenamento de dados
Web Storage - Armazenamento de dadosMario Mendonça
 

Mais de Mario Mendonça (8)

JWT - Json Web Token
JWT - Json Web TokenJWT - Json Web Token
JWT - Json Web Token
 
Gulp - Automatizador de tarefas de front-end
Gulp - Automatizador de tarefas de front-endGulp - Automatizador de tarefas de front-end
Gulp - Automatizador de tarefas de front-end
 
Web socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a web
 
Web Storage - Armazenamento de dados
Web Storage - Armazenamento de dadosWeb Storage - Armazenamento de dados
Web Storage - Armazenamento de dados
 
Vanilla JS
Vanilla JSVanilla JS
Vanilla JS
 
Web components
Web componentsWeb components
Web components
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
If bom é if morto
If bom é if mortoIf bom é if morto
If bom é if morto
 

Integração contínua - Prática de desenvolvimento

  • 2. Sumário O que é Ferramentas Por que usar integração contínua? Testes Build Servidor de Integração Contínua Deploy
  • 3. Integração Contínua Surgiu como parte das práticas da metodologia ágil XP (Extreme Programming). Tem como foco o desenvolvimento de software em ciclos menores, proporcionando melhor resposta a alterações e inclusão de novos requisitos. Integração contínua trata-se de um conjunto de boas práticas que também podem ser adotadas em metodologias de desenvolvimento convencionais.
  • 4. Integração Contínua Tem como ideia principal a diminuição dos riscos através do monitoramento constante das alterações, mantendo a integração frequente do código. Esta atividade passa a fazer parte do processo de desenvolvimento, sendo considerada como um procedimento normal e corriqueiro.
  • 5. Integração Contínua A mesma deve ocorrer com a maior frequência possível, idealmente a cada alteração efetuada(commit), pois em caso de problema, o conjunto de modificações em que a falha está inserida é menor, facilitando a identificação e correção do(s) erro(s).
  • 6. Integração Contínua Para que a integração seja efetiva, é necessário verificar o funcionamento do código após as modificações. Para atender esta necessidade, o desenvolvimento em conjunto com a realização de testes é fundamental, de preferência com a adoção da metodologia TDD (Test Driven Development).
  • 7. Integração Contínua Como resultado da execução de uma integração bem sucedida, conseguimos atingir os seguintes benefícios: Garantia que o código compila e que as funcionalidades testadas mantêm sua integridade e funcionamento esperados; Uma potencial versão do software, que pode ser utilizada, por exemplo, pela equipe de QA para execução de testes.
  • 8. Benefícios - Melhora a produtividade do desenvolvedor A integração contínua ajuda sua equipe a ser mais produtiva ao liberar os desenvolvedores de tarefas manuais e encorajar comportamentos que ajudam a reduzir o número de erros e bugs implantados para os clientes.
  • 9. Benefícios - Encontrar e investigar bugs mais rapidamente Com testes mais frequentes, sua equipe pode descobrir e investigar bugs mais cedo, antes que no futuro os problemas cresçam demais.
  • 10. Benefícios - Distribuir atualizações mais rapidamente A integração contínua ajuda a sua equipe a distribuir atualizações para os clientes mais rapidamente e com maior frequência.
  • 11.
  • 14. Testes Um bom modo para pegar erros mais rápida e eficientemente é incluir testes automáticos no processo de build. Testes não são perfeitos, mas eles podem pegar muitos bugs – o suficiente para ser útil. Os testes necessitam estar aptos para rodarem com um simples comando e serem checados automaticamente. O resultado da suíte dos testes em execução deve indicar se estes falharam. Para uma build ser auto-testável a falha de um teste deve fazer com que a build falhe.
  • 15. Build Com a utilização de teste e o controle de versão centralizado, é necessária para uma boa integração, a automatização dos builds. O processo de build (compilar, preparar o executável, rodar os testes automatizados, etc.) Não automatizar os builds, é um erro, pois diversos problemas ocorrem quando o processo é feito de forma manual, pois cada desenvolvedor acaba realizando o build de forma diferente, podendo criar problemas na integração.
  • 16. Build Um outro ponto importante, é que os builds devem ser auto testáveis, ou seja, durante os builds é necessário ter também os testes automatizados, como mencionados, para melhorar no processo de detecção de erros.
  • 17. Build A automatização do processo de build é possível por meio da criação de scripts, que executam cada uma dessas etapas da construção em sequência, reportando o resultado ao final da execução de cada uma. A automatização de build utilizando scripts traz benefícios para o processo de construção.
  • 18. Build ● Facilidade na execução O script de build geralmente é disparado por um ou poucos comandos, simplificando a execução do build.
  • 19. Build Padronização do build O script de build é compartilhado por toda a equipe de desenvolvimento, sendo executado da mesma forma por cada integrante.
  • 20. Build Parametrização do build O script de build pode ser elaborado para permitir a utilização de parâmetros durante a construção. Um exemplo é o fornecimento de parâmetros para que a versão construída esteja de acordo com os possíveis ambientes de execução da aplicação (ambiente de testes, ambiente de homologação ou ambiente de produção).
  • 21. Build Execução de todas as etapas O script de build executa todas as etapas em sequência, garantindo que elas não sejam esquecidas ou suprimidas. O script de build até pode permitir a supressão da alguma etapa durante a construção, mas esse recurso deve ser usado apenas em casos específicos. A facilidade no disparo do build é aproveitada pelo Servidor de Integração Contínua, para manter a integração e construção frequente do projeto.
  • 22. Servidor de Integração Contínua O Servidor de Integração Contínua é uma aplicação que tem como objetivo principal recuperar as alterações ocorridas no repositório e integrá-las, com a execução do script de build. Para que esta tarefa seja executada, o servidor deve permitir a configuração de planos de build, que armazenam as configurações necessárias para que a integração possa ser executada, como o endereço do repositório para monitoramento das modificações, a frequência da execução, o(s) comando(s) para o disparo do build e as configurações das notificações dos resultados.
  • 23. Servidor de Integração Contínua Uma funcionalidade essencial do Servidor de Integração Contínua é a configuração de mecanismos de notificação. Estes mecanismos divulgam os resultados da integração, sendo importantes para uma ação rápida por parte da equipe de desenvolvimento, em caso de falha na integração. Geralmente, o principal mecanismo de notificação utilizado é o disparo de e-mail, mas alguns mecanismos alternativos podem ser utilizados, como plugins para IDEs, plugins Desktop e o envio de mensagens de texto (SMS).
  • 24. Deploy Em termos gerais, deploy significa colocar em posição. Na prática, geralmente disponibilizar um sistema para uso, seja num ambiente de desenvolvimento, para testes ou em produção. O termo deploy pode significar muitas coisas, dependendo do ambiente e da tecnologia. Um desenvolvedor pode fazer o deploy da aplicação web no seu servidor web local. Pode também fazer o deploy para produção, usado pelos usuários finais.
  • 25. Deploy Nível de automação O deploy pode ser “manual”, parcialmente automatizado ou completamente automatizado.
  • 26. Deploy Uma das principais dores de cabeça que um cliente enfrenta, mesmo em empresas que adotam metodologias ágeis como XP e Scrum, está ligada ao produto ser colocado em produção e não funcionar: a famosa frase “mas no meu computador funcionou”.
  • 27. Deploy A solução está em criar um sistema de homologação. Primeiro o projeto é compilado, depois os testes unitários são executados. Na primeira fase, os testes executam as funcionalidades como o cliente faria e cobrem a maior quantidade de funções plausíveis de automatização. Na segunda fase, os desenvolvedores podem optar por deployar para um sistema de homologação, onde o cliente aprovará com os dados copiados de produção (alterações ligadas a sigilo de dados devem ser aplicadas).
  • 28. Deploy Por fim, quando o sistema está aprovado em homologação, com um clique o desenvolvedor efetua o deploy para produção.
  • 29. Conclusão Toda essa automatização tem um custo inicial de desenvolvimento que é compensado com a minimização de erros humanos no processo de deploy e na lentidão do mesmo. A chance de funcionar em produção é maximizada uma vez que a mesma foi testada em homologação com uma cópia mais fidedigna do sistema de produção possível: menos reclamações e tempo perdido pelo cliente.