ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540c645add0c3eef1de0c-poli-161216180832.pdf

Antonio Lobato
Antonio LobatoSystems Analyst
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.
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540c645add0c3eef1de0c-poli-161216180832.pdf
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

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

Mais conteúdo relacionado

Similar a ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540c645add0c3eef1de0c-poli-161216180832.pdf

TDD (Test-Driven Development) por
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
3.8K visualizações37 slides
Integracao Continua em projetos .NET por
Integracao Continua em projetos .NETIntegracao Continua em projetos .NET
Integracao Continua em projetos .NETLuthiano Vasconcelos
1.4K visualizações36 slides
Subm_SamuelPereira_FINAL por
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALND Engineering and Software - Health Technology
182 visualizações25 slides
Integração Contínua por
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
652 visualizações43 slides
Continuous Deployment por
Continuous DeploymentContinuous Deployment
Continuous DeploymentWelington Oliveira da Silva
184 visualizações25 slides
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix por
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
639 visualizações68 slides

Similar a ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540c645add0c3eef1de0c-poli-161216180832.pdf(20)

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 Fidelix639 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
Integracao Continua com CruiseControl por Luthiano Vasconcelos
Integracao Continua com CruiseControlIntegracao Continua com CruiseControl
Integracao Continua com CruiseControl
Luthiano Vasconcelos1.1K visualizações
Tdc continuous testing por Walter Farias
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing
Walter Farias986 visualizações
Como aumentar a produtividade da sua equipe por Wende Mendes
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
Wende Mendes637 visualizações
Testes automatizados.pptx por Carlos Gonzaga
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga33 visualizações
Integração Contínua por Lu
Integração ContínuaIntegração Contínua
Integração Contínua
Lu 907 visualizações
DEV-OPS para teste de software por Qualister
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
Qualister1.4K visualizações
Teste em times ageis por Dover H
Teste em times ageisTeste em times ageis
Teste em times ageis
Dover H444 visualizações
Lista de Práticas Ágeis por Julio Cezar Silva
Lista de Práticas ÁgeisLista de Práticas Ágeis
Lista de Práticas Ágeis
Julio Cezar Silva382 visualizações

Mais de Antonio Lobato

kubernetes-devops.pptx por
kubernetes-devops.pptxkubernetes-devops.pptx
kubernetes-devops.pptxAntonio Lobato
2 visualizações21 slides
aula03_uml_diagrama_classe.pdf por
aula03_uml_diagrama_classe.pdfaula03_uml_diagrama_classe.pdf
aula03_uml_diagrama_classe.pdfAntonio Lobato
4 visualizações35 slides
3-BasesNumericas.ppt por
3-BasesNumericas.ppt3-BasesNumericas.ppt
3-BasesNumericas.pptAntonio Lobato
4 visualizações20 slides
aula02_uml.pdf por
aula02_uml.pdfaula02_uml.pdf
aula02_uml.pdfAntonio Lobato
3 visualizações31 slides
slide engenharia.pdf por
slide engenharia.pdfslide engenharia.pdf
slide engenharia.pdfAntonio Lobato
5 visualizações5 slides
aula01_computador_Info_Cont.pdf por
aula01_computador_Info_Cont.pdfaula01_computador_Info_Cont.pdf
aula01_computador_Info_Cont.pdfAntonio Lobato
12 visualizações51 slides

Mais de Antonio Lobato(8)

kubernetes-devops.pptx por Antonio Lobato
kubernetes-devops.pptxkubernetes-devops.pptx
kubernetes-devops.pptx
Antonio Lobato2 visualizações
aula03_uml_diagrama_classe.pdf por Antonio Lobato
aula03_uml_diagrama_classe.pdfaula03_uml_diagrama_classe.pdf
aula03_uml_diagrama_classe.pdf
Antonio Lobato4 visualizações
3-BasesNumericas.ppt por Antonio Lobato
3-BasesNumericas.ppt3-BasesNumericas.ppt
3-BasesNumericas.ppt
Antonio Lobato4 visualizações
aula02_uml.pdf por Antonio Lobato
aula02_uml.pdfaula02_uml.pdf
aula02_uml.pdf
Antonio Lobato3 visualizações
slide engenharia.pdf por Antonio Lobato
slide engenharia.pdfslide engenharia.pdf
slide engenharia.pdf
Antonio Lobato5 visualizações
aula01_computador_Info_Cont.pdf por Antonio Lobato
aula01_computador_Info_Cont.pdfaula01_computador_Info_Cont.pdf
aula01_computador_Info_Cont.pdf
Antonio Lobato12 visualizações
aula1introducaoarquitetura.pdf por Antonio Lobato
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdf
Antonio Lobato8 visualizações
Aula02-RI-Modelo-Booleano.pdf por Antonio Lobato
Aula02-RI-Modelo-Booleano.pdfAula02-RI-Modelo-Booleano.pdf
Aula02-RI-Modelo-Booleano.pdf
Antonio Lobato11 visualizações

Último

APRESENTAÇÃO PADRÃO.pdf por
APRESENTAÇÃO PADRÃO.pdfAPRESENTAÇÃO PADRÃO.pdf
APRESENTAÇÃO PADRÃO.pdfDenise Varela
12 visualizações10 slides
O Atletismo precisa ser compreendido como uma expressão do movimento humano i... por
O Atletismo precisa ser compreendido como uma expressão do movimento humano i...O Atletismo precisa ser compreendido como uma expressão do movimento humano i...
O Atletismo precisa ser compreendido como uma expressão do movimento humano i...mariaclarinhaa2723
6 visualizações4 slides
Onde Encontrar.pdf por
Onde Encontrar.pdfOnde Encontrar.pdf
Onde Encontrar.pdfpastificiomontecrist
12 visualizações1 slide
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ... por
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...dlalicia08
21 visualizações4 slides
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi... por
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...dlalicia08
8 visualizações2 slides
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ... por
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...dlalicia08
6 visualizações2 slides

Último(9)

APRESENTAÇÃO PADRÃO.pdf por Denise Varela
APRESENTAÇÃO PADRÃO.pdfAPRESENTAÇÃO PADRÃO.pdf
APRESENTAÇÃO PADRÃO.pdf
Denise Varela12 visualizações
O Atletismo precisa ser compreendido como uma expressão do movimento humano i... por mariaclarinhaa2723
O Atletismo precisa ser compreendido como uma expressão do movimento humano i...O Atletismo precisa ser compreendido como uma expressão do movimento humano i...
O Atletismo precisa ser compreendido como uma expressão do movimento humano i...
mariaclarinhaa27236 visualizações
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ... por dlalicia08
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...
O que é um Almoxarifado Central? Como funciona um Almoxarifado Central? Qual ...
dlalicia0821 visualizações
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi... por dlalicia08
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...
O Brasil possui uma diversidade de regiões produtoras de commodities. As regi...
dlalicia088 visualizações
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ... por dlalicia08
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...
Entender e saber distinguir conceitos rotineiramente utilizados no cotidiano ...
dlalicia086 visualizações
ATIVIDADE 1 - PSICOLOGIA ORGANIZACIONAL - 54/2023 por AcademiaDlassessoria
ATIVIDADE 1 - PSICOLOGIA ORGANIZACIONAL - 54/2023ATIVIDADE 1 - PSICOLOGIA ORGANIZACIONAL - 54/2023
ATIVIDADE 1 - PSICOLOGIA ORGANIZACIONAL - 54/2023
AcademiaDlassessoria8 visualizações
O Livreiro de Cabul - Cópia (2).pptx por ivanzeco05
O Livreiro de Cabul - Cópia (2).pptxO Livreiro de Cabul - Cópia (2).pptx
O Livreiro de Cabul - Cópia (2).pptx
ivanzeco055 visualizações
020087000101011 (13).pdf por Renandantas16
020087000101011 (13).pdf020087000101011 (13).pdf
020087000101011 (13).pdf
Renandantas16594 visualizações

ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540c645add0c3eef1de0c-poli-161216180832.pdf

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