Integração Contínua

Jackson Veroneze
Jackson VeronezeSoftware Developer na Inovadora Sistemas
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.
Integração Contínua
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/
1 de 30

Recomendados

Metodologias Ágeis para o Desenvolvimento de Software por
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
20.3K visualizações178 slides
Gestão de Produtos de Software - muito além do product ownership e das startups por
Gestão de Produtos de Software - muito além do product ownership e das startupsGestão de Produtos de Software - muito além do product ownership e das startups
Gestão de Produtos de Software - muito além do product ownership e das startupsJoaquim Torres
17.8K visualizações68 slides
Gerência de configuração ágil por
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágilClaudia Melo
1.2K visualizações25 slides
Metodologias de Desenvolvimento de Software por
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
3.6K visualizações16 slides
Teste de software por
Teste de softwareTeste de software
Teste de softwareRafael Sanches
1.3K visualizações25 slides
A Evolucao dos Processos de Desenvolvimento de Software por
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
9.5K visualizações17 slides

Mais conteúdo relacionado

Mais procurados

Virtualização - Máquinas Virtuais por
Virtualização - Máquinas VirtuaisVirtualização - Máquinas Virtuais
Virtualização - Máquinas VirtuaisAndré Felipe Santos Martins
1.9K visualizações8 slides
Introdução ao Teste de Software - Uma abordagem prática por
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
30.8K visualizações110 slides
XP - Extreme Programming por
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
3K visualizações239 slides
Engenharia de Requisitos por
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosEstêvão Bissoli Saleme
2.3K visualizações72 slides
Metodologia Ágil por
Metodologia ÁgilMetodologia Ágil
Metodologia ÁgilElaine Cecília Gatto
846 visualizações61 slides
Introdução à Qualidade e Testes Ágeis de Software por
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareClaudia Melo
1.2K visualizações68 slides

Mais procurados(20)

Introdução ao Teste de Software - Uma abordagem prática por Fabrício Campos
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
Fabrício Campos30.8K visualizações
XP - Extreme Programming por Rodrigo Branas
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
Rodrigo Branas3K visualizações
Introdução à Qualidade e Testes Ágeis de Software por Claudia Melo
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de Software
Claudia Melo1.2K visualizações
Testes de Software por Capgemini
Testes de SoftwareTestes de Software
Testes de Software
Capgemini3.2K visualizações
Validação e Testes de software por Rondinelli Mesquita
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
Rondinelli Mesquita2.8K visualizações
Desenvolvimento Mobile por Elton Minetto
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
Elton Minetto2.5K visualizações
Metodologia SCRUM por Rafael Pinheiro
Metodologia SCRUMMetodologia SCRUM
Metodologia SCRUM
Rafael Pinheiro3.2K visualizações
Sistemas Operativos por Pmpc10
Sistemas OperativosSistemas Operativos
Sistemas Operativos
Pmpc102.6K visualizações
Como integrar um Agile Tester no seu time por Elias Nogueira
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu time
Elias Nogueira2.1K visualizações
Levantamento Ágil de Requisitos por Paulo Furtado
Levantamento Ágil de RequisitosLevantamento Ágil de Requisitos
Levantamento Ágil de Requisitos
Paulo Furtado5.4K visualizações
Software livre x software proprietário por professsorcarlinho
Software livre x software proprietárioSoftware livre x software proprietário
Software livre x software proprietário
professsorcarlinho6.3K visualizações
Fundamentos de Testes de Software por Álvaro Farias Pinheiro
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
Álvaro Farias Pinheiro3.4K visualizações
Política de Grupo - Active Directory por Joeldson Costa Damasceno
Política de Grupo - Active DirectoryPolítica de Grupo - Active Directory
Política de Grupo - Active Directory
Joeldson Costa Damasceno4.7K visualizações
Modelo cascata por Priscila Comparsi
Modelo cascataModelo cascata
Modelo cascata
Priscila Comparsi1.9K visualizações
Ferramentas para testes de software por Norton Guimarães
Ferramentas para testes de softwareFerramentas para testes de software
Ferramentas para testes de software
Norton Guimarães2.3K visualizações

Destaque

WritingAssignment2 por
WritingAssignment2WritingAssignment2
WritingAssignment2Sarah Coleman
194 visualizações3 slides
Доклад - навигатор 2016 por
Доклад - навигатор 2016 Доклад - навигатор 2016
Доклад - навигатор 2016 44Vladimir44
76 visualizações33 slides
The Ideal Body of Fashion por
The Ideal Body of FashionThe Ideal Body of Fashion
The Ideal Body of FashionSarah Coleman
576 visualizações10 slides
2. mego presentasi standard waktu-31_okt2016 por
2. mego presentasi standard waktu-31_okt20162. mego presentasi standard waktu-31_okt2016
2. mego presentasi standard waktu-31_okt2016direktoratkaminfo
558 visualizações29 slides
Brochure, Ammon Painting and Restoration LLC por
Brochure, Ammon Painting and Restoration LLCBrochure, Ammon Painting and Restoration LLC
Brochure, Ammon Painting and Restoration LLCDavid Ammon
366 visualizações21 slides
Sex education in Vietnam por
Sex education in VietnamSex education in Vietnam
Sex education in VietnamHang Nguyen
6.7K visualizações28 slides

Destaque(11)

WritingAssignment2 por Sarah Coleman
WritingAssignment2WritingAssignment2
WritingAssignment2
Sarah Coleman194 visualizações
Доклад - навигатор 2016 por 44Vladimir44
Доклад - навигатор 2016 Доклад - навигатор 2016
Доклад - навигатор 2016
44Vladimir4476 visualizações
The Ideal Body of Fashion por Sarah Coleman
The Ideal Body of FashionThe Ideal Body of Fashion
The Ideal Body of Fashion
Sarah Coleman576 visualizações
2. mego presentasi standard waktu-31_okt2016 por direktoratkaminfo
2. mego presentasi standard waktu-31_okt20162. mego presentasi standard waktu-31_okt2016
2. mego presentasi standard waktu-31_okt2016
direktoratkaminfo558 visualizações
Brochure, Ammon Painting and Restoration LLC por David Ammon
Brochure, Ammon Painting and Restoration LLCBrochure, Ammon Painting and Restoration LLC
Brochure, Ammon Painting and Restoration LLC
David Ammon366 visualizações
Sex education in Vietnam por Hang Nguyen
Sex education in VietnamSex education in Vietnam
Sex education in Vietnam
Hang Nguyen6.7K visualizações
sertifikasi personil dalam iso 27001-fetri miftach workshop 7 desember por direktoratkaminfo
sertifikasi personil dalam iso 27001-fetri miftach workshop 7 desembersertifikasi personil dalam iso 27001-fetri miftach workshop 7 desember
sertifikasi personil dalam iso 27001-fetri miftach workshop 7 desember
direktoratkaminfo529 visualizações
Live Younger Longer - Shaklee Vivix por Cindy McAsey
Live Younger Longer - Shaklee VivixLive Younger Longer - Shaklee Vivix
Live Younger Longer - Shaklee Vivix
Cindy McAsey1.3K visualizações
L'expérience de marque transformée par la connaissance client - la matinale l... por Kiss The Bride
L'expérience de marque transformée par la connaissance client - la matinale l...L'expérience de marque transformée par la connaissance client - la matinale l...
L'expérience de marque transformée par la connaissance client - la matinale l...
Kiss The Bride2.2K visualizações
Stratégie d'engagement sur les réseaux sociaux : osez ! - la matinale le fil ... por Kiss The Bride
Stratégie d'engagement sur les réseaux sociaux : osez ! - la matinale le fil ...Stratégie d'engagement sur les réseaux sociaux : osez ! - la matinale le fil ...
Stratégie d'engagement sur les réseaux sociaux : osez ! - la matinale le fil ...
Kiss The Bride1K visualizações

Similar a Integração Contínua

Keynote Visual Studio Summit 2016 por
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
624 visualizações39 slides
Automação de Testes: Ferramentas e Aplicação com Integração Contínua por
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
5.3K visualizações37 slides
Cloud Computing e Integração Contínua com o Windows Azure por
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
347 visualizações18 slides
Phprs meetup - deploys automatizados com gitlab por
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
339 visualizações106 slides
Arquitetura de Software para a Entrega Continua por
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
1.7K visualizações49 slides
Gerenciamento da Qualidade de Software 4.pptx por
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
53 visualizações33 slides

Similar a Integração Contínua(20)

Keynote Visual Studio Summit 2016 por Ramon Durães
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
Ramon Durães624 visualizações
Automação de Testes: Ferramentas e Aplicação com Integração Contínua por Gabriela Patuci
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
Gabriela Patuci5.3K visualizações
Cloud Computing e Integração Contínua com o Windows Azure por Grupo de Testes Carioca
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
Grupo de Testes Carioca347 visualizações
Phprs meetup - deploys automatizados com gitlab por Jackson F. de A. Mafra
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
Jackson F. de A. Mafra339 visualizações
Arquitetura de Software para a Entrega Continua por Otávio Calaça Xavier
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
Otávio Calaça Xavier1.7K visualizações
Gerenciamento da Qualidade de Software 4.pptx por Roberto Nunes
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
Roberto Nunes53 visualizações
Descomplicando CI/CD com Jenkins, Docker Swarm e Github por Marcelo Souza Vieira
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
Marcelo Souza Vieira97 visualizações
TDD (Test-Driven Development) por Renato Groff
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
Renato Groff3.8K visualizações
Integracao Continua em projetos .NET por Luthiano Vasconcelos
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NET
Luthiano Vasconcelos1.4K visualizações
Integração Contínua por ScrumHalf Tool
Integração ContínuaIntegração Contínua
Integração Contínua
ScrumHalf Tool652 visualizações
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix por Cris 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
Cris Fidelix637 visualizações
Brateste 2013: Testes Agile em Processos Agile por ananegrello
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
ananegrello864 visualizações
Entrega contínua com arquitetura distribuida por Leonardo Kobus
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
Leonardo Kobus152 visualizações
Implantação de Ambiente de Integração contínua para projeto que usa Java e C por Eliane Collins
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
Eliane Collins1.9K visualizações
Implementando Implementando eXtreme treme Programming rogramming em em Java Java por elliando dias
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
elliando dias739 visualizações
[.NET Community Summit] CI & CD com ASP.NET Core, VSTS e Azure por Jaqueline Ramos
[.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
Jaqueline Ramos66 visualizações
.Net Community Summit 2018 - CI/CD com ASP.NET Core, VSTS e Azure - Jaqueline... por iMasters
.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...
iMasters138 visualizações

Mais de Jackson Veroneze

Angular 4 - Introdução por
Angular 4 - IntroduçãoAngular 4 - Introdução
Angular 4 - IntroduçãoJackson Veroneze
1.6K visualizações17 slides
Regex javascript por
Regex   javascriptRegex   javascript
Regex javascriptJackson Veroneze
370 visualizações15 slides
Map, filter e reduce por
Map, filter e reduceMap, filter e reduce
Map, filter e reduceJackson Veroneze
126 visualizações16 slides
Expressões Regulares - Final por
Expressões Regulares - FinalExpressões Regulares - Final
Expressões Regulares - FinalJackson Veroneze
481 visualizações27 slides
Expressões Regulares - Parte II por
Expressões Regulares - Parte IIExpressões Regulares - Parte II
Expressões Regulares - Parte IIJackson Veroneze
415 visualizações40 slides
Expressões Regulares - Introdução por
Expressões Regulares - IntroduçãoExpressões Regulares - Introdução
Expressões Regulares - IntroduçãoJackson Veroneze
239 visualizações30 slides

Mais de Jackson Veroneze(13)

Angular 4 - Introdução por Jackson Veroneze
Angular 4 - IntroduçãoAngular 4 - Introdução
Angular 4 - Introdução
Jackson Veroneze1.6K visualizações
Regex javascript por Jackson Veroneze
Regex   javascriptRegex   javascript
Regex javascript
Jackson Veroneze370 visualizações
Map, filter e reduce por Jackson Veroneze
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
Jackson Veroneze126 visualizações
Expressões Regulares - Final por Jackson Veroneze
Expressões Regulares - FinalExpressões Regulares - Final
Expressões Regulares - Final
Jackson Veroneze481 visualizações
Expressões Regulares - Parte II por Jackson Veroneze
Expressões Regulares - Parte IIExpressões Regulares - Parte II
Expressões Regulares - Parte II
Jackson Veroneze415 visualizações
Expressões Regulares - Introdução por Jackson Veroneze
Expressões Regulares - IntroduçãoExpressões Regulares - Introdução
Expressões Regulares - Introdução
Jackson Veroneze239 visualizações
GULP - Automatizador de tarefas por Jackson Veroneze
GULP - Automatizador de tarefasGULP - Automatizador de tarefas
GULP - Automatizador de tarefas
Jackson Veroneze231 visualizações
Web socket - Trazendo soquetes para a web por Jackson Veroneze
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a web
Jackson Veroneze233 visualizações
Conhecendo a API Geolocation por Jackson Veroneze
Conhecendo a API GeolocationConhecendo a API Geolocation
Conhecendo a API Geolocation
Jackson Veroneze124 visualizações
Vanilla js por Jackson Veroneze
Vanilla jsVanilla js
Vanilla js
Jackson Veroneze243 visualizações
Web components por Jackson Veroneze
Web componentsWeb components
Web components
Jackson Veroneze560 visualizações
Progressive apps por Jackson Veroneze
Progressive appsProgressive apps
Progressive apps
Jackson Veroneze119 visualizações
If bom é if morto por Jackson Veroneze
If bom é if mortoIf bom é if morto
If bom é if morto
Jackson Veroneze467 visualizações

Integração Contínua

  • 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.
  • 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.