Integração Contínua tem se mostrado fundamental para o desenvolvimento de software ágil, tendo em vista que “software funcionando deve ser mais valorizado que documentação abrangente”, defendido pelo Manifesto, é o principal benefício dessa prática. Além de ser a base para a prática de Entrega Contínua, juntamente com práticas como migração de banco de dados e uso de feature toggle.
O fato de ter um servidor de Integração Contínua (CI) configurado não significa que o time esteja integrando o código continuamente, o que pode acarretar em dores de cabeça e risco para a entrega do projeto.
Nesta palestra, exemplos com falhas de CI — situações vividas frequentemente por times de desenvolvimento — serão apresentados, bem como formas de resolvê-los e evitá-los; além de técnicas que podem ajudar a educar a si mesmo e ao time em relação à prática, visando o alcance do maior benefício de CI: Software funcionando* a qualquer momento.
* A definição de software funcionando abrange mais que código compilando. Além de compilar, o software deve fazer corretamente o que se propõe. Por isso, testes automatizados — em diferentes níveis na pirâmide de testes — são tão importantes.
7. 1. Versionamento de Código
2. Repositório Compartilhado: Linha
Principal de Desenvolvimento –
Master – Trunk
3. Branch: Cópia do repositório
compartilhado
4. Processo de compilação e execução
de testes – Build
5. Check-in de código – Push – Commit
no master
VOCABULÁRIO COMUM
9. Ferramenta de versionamento de código
Cada check-in de mudanças é compilado
Testes automáticos
Testes automáticos são executados a
cada check-in de mudanças
Cada desenvolvedor faz check-in pelo
menos uma vez por dia
Se a compilação ou testes falhar, o
problema é resolvido em menos de 10
minutos
10. TESTE DE CERTIFICAÇÃO
DE INTEGRAÇÃO
CONTÍNUA
MARTIN FOWLER
https://martinfowler.com/bliki/ContinuousIntegrationCertification.html
JEZ HUMBLE
14. Uma nova funcionalidade deve
ser desenvolvida
As an online customer of Pune Discounts
I want to see the items in my shopping cart
So that I know what I am ordering.
15. “Faço uma branch nova.
Desenvolvo a fucionalidade.
Integro com a master”
16. Várias novas funcionalidades
devem ser desenvolvidas
As an online customer of Pune Discounts
I want to see the items in my shopping cart
So that I know what I am ordering.
As an online customer of Pune Discounts
I want to see the items in my shopping cart
So that I know what I am ordering.
As an online customer of Pune Discounts
I want to see the items in my shopping cart
So that I know what I am ordering.
As an online customer of Pune Discounts
I want to see the items in my shopping cart
So that I know what I am ordering.
É muito comum confundir a prática com a ferramenta de servidor de integração usada.
Ferramenta de controle de versão – versionamento – de código: SVN / Git
… se você respondeu não a alguma dessas perguntas. Você não passou no teste de certificação de integração contínua...
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
É muito comum confundir a prática com a ferramenta de servidor de integração usada.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
É muito comum confundir a prática com a ferramenta de servidor de integração usada.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
É muito comum confundir a prática com a ferramenta de servidor de integração usada.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
A intenção de integração contínua é saber o quanto antes se ao juntar as mudanças o software continua funcionando
Build é de responsabilidade de todos, como eu disse anteriormente. Se falhou, o time tem que trabalhar junto pra descobrir o problema e consertar.
A intenção de integração contínua é saber o quanto antes se ao juntar as mudanças o software continua funcionando
Build é de responsabilidade de todos, como eu disse anteriormente. Se falhou, o time tem que trabalhar junto pra descobrir o problema e consertar.
É muito comum confundir a prática com a ferramenta de servidor de integração usada.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
Você não faz CI, você acha que faz CI porque tem um servidor de CI configurado e… bem, chamamos isso de CI-de-faz-de conta. E... Não é CI.
Isso vai garantir que o seu software esteja funcionando a qualquer momento.
Talvez falar de como quebrar uma user story – Citar feature flag
Isso vai garantir que o seu software esteja funcionando a qualquer momento.