Palestra ministrada no Join Community 2017.
Nessa palestra mostramos exemplos de projetos com o mínimo de Integração Contínua necessária para iniciar uma mudança na cultura de geração de binários, implantações e entregas de software.
O projeto em que você trabalha efetua a geração de binários em um ambiente diferente do ambiente de produção? É necessário vários recursos e horas, ou até mesmo dias, para efetuar uma implantação? É recorrente problemas causados por erro humano durante uma entrega? A comunicação entre as equipes da empresa só é feita por meio de canais burocráticos e protocolos como abertura de issues? O ciclo de vida de uma entrega do sistema dura até meses? Se para alguma dessas perguntas a resposta for SIM, seu projeto precisa do mínimo de Integração Contínua.
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
Mínimo IC projetos
1. O mínimo de Integração Contínua que todo
projeto deveria ter
2. - Quem somos
- Entendendo a problemática
- O que é IC ?
- Por onde começar ?
- Entendendo a dinâmica e o processo por trás da IC
- Onde podemos chegar ?
- Dúvidas
Roteiro
3. QUEM SOMOS
Dois caras normais
que amam estudar,
trabalham muito e
ganham pouco
Átilla Barros
Dev
Bla bla bla
Bla bla
Bla bla bla
Rodolfo Bueno
Dev
Bla bla bla
Bla bla
Bla bla bla
14. 20 dias depois...
Tudo pronto e commit realizado !!
Também acabei.. ‘Bora commitar’.
pqp.. três conflitos.. dev 1 maldito!!
15. 20 dias depois...
Tudo pronto e commit realizado !!
Também acabei.. ‘Bora commitar’.
pqp.. três conflitos.. dev 1 maldito!!
MEU DEUS.. vcs estão me
sacaneando ? Vou ficar mais
tempo resolvendo conflito do que
levei para codificar.
16. No dia seguinte...
Conflitos resolvidos, aparentemente
está tudo OK..
Agora é só solicitar para o “caboco”
da Infra fazer o deploy no servidor
de testes e correr para o abraço.
17. Na sala de Operações...
Opa.. SERVIÇO!! YES, "fazer deploy
do SIS no ambiente de testes".
Humnnn, mamão com açúcar !!!!
18. Na sala de Operações...
- Só compilar essa parada!!!
PEW
- Aff.. versão do JAVA deve estar
diferente no servidor.
19. Na sala de Operações...
… Atualizando JAVA.
PEW
- Eita, e agora ? Será que está
faltando alguma lib no servidor ?
22. O pior acontece...
Nada funciona como o esperado.
Funcionalidade X: Não abre.
Funcionalidade Y: Com erro em três fluxos.
Funcionalidade Z: Não integra corretamente com o restante do
sistema.
24. Alguns itens...
1 - Demora para integrar o trabalho dos devs
2 - Processo de geração de binários e deploy feito de forma
manual
3 - Complexidade do processo
25. Alguns itens...
1 - Demora para integrar o trabalho dos devs
2 - Processo de geração de binários e deploy feito de forma
manual
3 - Complexidade do processo
E como resolver esses problemas ?
28. Desafio
É preciso descobrir uma forma de garantir que o software
esteja funcionando corretamente a todo momento e com o
máximo de qualidade possível.
29. Desafio
INTEGRAÇÃO CONTÍNUA
É preciso descobrir uma forma de garantir que o software
esteja funcionando corretamente a todo momento e com o
máximo de qualidade possível.
30. O que é ?
É uma prática que consiste na integração do código-fonte, com
o processo de build de executáveis e a execução de testes
automatizados durante o processo de construção do software.
37. Passo 4: Automatize Seu Build
Parte boa: Jenkins nos permite
automatizar o build
38. Passo 4: Automatize Seu Build
Parte melhor ainda: Integração
Contínua é muito mais que um Jenkins
Vc ainda precisa automatizar o build
39. Passo 4: Automatize Seu Build
Parece muito trabalho? Usa a IDE?
- Ok! É difícil, eu sei..
- Crie um arquivo batch
That’s okay for now
40. Passo 4: Automatize Seu Build
- Usar a IDE será insuficiente
- Volte atrás e faça direito
- Se possui algum teste unitário,
inclua no build também!
41. Passo 4: Automatize Seu Build
Mas antes..
- Vá até o PC Xuxa
- Garanta o build 100% (Passo 1)
- Garanta que o código é o mais
recente do controle de versão
43. Passo 4: Automatize Seu Build
NÃO USA CONTROLE DE VERSÃO?
- Levante-se
- Coloque a mão direita sobre o peito
- Repita comigo
44. Perdão pelo vacilo
Perdoe-me, universo, pelo vacilo.
Eu nunca mais irei programar sem
controle de versão novamente.
Eu vou imediatamente até o
TortoiseSVN, baixa-lo e usa-lo.
Eu renuncio todo o mal dentro de mim.
45. Passo 4: Automatize Seu Build
- Build demorando +10 min? PARE!
- Você não está pronto pra I.C. ainda
- Volte atrás e aprimore seu build
46. Passo 4: Automatize Seu Build
- Build demorando +10 min? PARE!
- Você não está pronto pra I.C. ainda
- Volte atrás e aprimore seu build
- Agora vc pode usar o Jenkins, mas..
47. Passo 5: Juramento de Sangue
Absolutamente, inquestionavelmente,
o principal e mais importante passo
- Todos os desenvolvedores de pé
- Não é uma reunião
48. O Juramento
De agora em diante,
nosso código
no controle de versão
vai SEMPRE
buildar (ser construído) com sucesso
e os testes
passarão.
49. Passo 5: Juramento de Sangue
- Se alguém reclamar..
- Com I.C. vai ser fácil..
- Ou pelo menos mais fácil.
- Mas o emprego dele também é..
- Construir software, sabe como é!?
Olha! 10 clientes em potencial.. ops!
50. Passo 5: Juramento de Sangue
- Todo mundo concordar que a idea é
boa é, de verdade, a parte principal
- A parte mais revolucionária da I.C. é
o código apto para liberar versão
52. Passo 5: Juramento de Sangue
- Convencer pessoas?
“Oh, what a pain in the ass”
- Porque faz bem!
Ops! 11 clientes em potencial..
Eita! 12.. 131415.. Ahhhhhhhh
53. Status
- Computador de Build: Ok!
- Brinquedo ridículo: Ok!
- Sino de Mesa: Ok!
- Build automatizado: Ok!
- Acordo coletivo: Ok!
Here we go!!!
54. Passo 6: Iniciar
- Faça check in pelo menos 2x por dia
- Essa é a parte “contínua”
- daqui a pouco será a cada hora
55. Passo 6: Iniciar
Antes de fazer check in
- Veja se alguém tá com a galinha
- Espere-o até finalizar o check in
- Agora é sua vez
56. Passo 6: Iniciar - Passo A
- Execute o build/test localmente
- Garanta que tá tudo 100%
57. Passo 6: Iniciar - Passo B
- Pegue a galinha para você
- Se tiver com alguém, atormente-o
até finalizar o check in
58. Passo 6: Iniciar - Passo C
- Puxe o código mais atual do repo
- Execute o build/test local outra vez
- Se não passar, engula seco
- Devolva a galinha
- Peça ajuda pra resolver
- Comece denovo
60. Passo 6: Iniciar - Passo E
- Vá até o PC Xuxa
- Puxe o código mais atual do repo
- Execute o script de build/test
61. Passo 6: Iniciar - Passo E
Se o build falhar
- Reverta seu check-in
- Você deve ter feito mer**
- Resolva NO SEU PC e tente denovo
- Ah, e devolva a galinha..
62. Passo 6: Iniciar - Passo F
Se der sucesso
- BATA O SINO, JÁ É ANO NOVO
- Uhuuuuuuuuul
- Peça uma salma de palmas
- Devolva a galinha
63. Passo 6: Iniciar - Passo F
Observações
- Se o build demorar, as pessoas não
vão executar
- Build rápido “faz bem pra vc”
64. Aula Avançada
- Deixe seu build standalone
- Faça testes TOP!
- Faça build e teste os instaladores
- Finalmente bote um Servidor de IC
67. Otimizando...
- Servidor de IC enviando e-mail assim que uma build
quebrar ou voltar a ficar estável.
- Monitor informando em tempo real o status dos sistemas.
68. Processo repetível e confiável
https://pt.slideshare.net/rodolfox109/uma-abordagem-de-entrega-contnua-para-empresas-de-desenvolvimento-de-software
69. O que mais seria possível fazer ?
- Automação da Infra
- Entrega contínua
- Deploy contínuo
70. O que mais seria possível fazer ?
- Automação da Infra
- Entrega contínua
- Deploy contínuo
72. Referências
- Duvall, P., Matyas, S., and Glover, A. (2007). Continuous Integration: Improving Software
Quality and Reducing Risk. Addison-Wesley Professional.
- Humble, J. and Farley, D. (2014). Entrega Contínua: Como entregar software de forma rápida
e confiável. Bookman.
- Sato, D. (2013). DevOps na prática: entrega de software confiável e automatizada. Casa do
código.
- Fowler, M. (2006). Continuous Integration.
http://martinfowler.com/articles/continuousIntegration.html.
- http://www.jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html
- https://pt.slideshare.net/minastestingconference/alcanando-qualidade-de-software-entrega-
contnua-samanta-cicilia