estratégias para o uso de integração e entrega contínua...

62
Estratégias para o uso de integração e entrega contínua com gocd por Walmyr Filho Engenheiro de software @appear.in

Upload: others

Post on 19-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Estratégias para o uso de integração e entrega contínua com gocd

por Walmyr FilhoEngenheiro de software @appear.in

Page 3: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Exercício● Fundamentos básicos● Problemas antes do gocd● Experimentos● Migrando do Jenkins para o gocd● Comunidade● Mão na massa● Q&A

Agenda

Page 4: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Quem aqui faz integração/entrega contínua?

Exercício

Page 5: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Quem aqui faz integração/entrega contínua?● O time todo faz commit/merge para o master branch

diariamente?

Exercício

Page 6: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Quem aqui faz integração/entrega contínua?● O time todo faz commit/merge para o master branch

diariamente?● Cada push dispara build e testes automatizados?

Exercício

Page 7: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Quem aqui faz integração/entrega contínua?● O time todo faz commit/merge para o master branch

diariamente?● Cada push dispara build e testes automatizados?● E se o build falhar, volta a passar em até 10 minutos?

Exercício

Page 8: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Agile / Lean / DevOps

Agile Lean

DevOps

Page 9: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Integração contínua

https://talkingabouttesting.com/2016/07/04/porque-integracao-continua-e-tao-importante/

Integração contínua, ou CI, é uma prática de desenvolvimento de software onde o código é continuamente integrado (ao menos uma vez por dia, por desenvolvedor), e de forma automatizada. CI também diz respeito a verificar se o novo código que você escreveu quebrou ou não o que já estava funcionando, uma vez que testes automatizados e outras tarefas automatizadas (tais como verificações de sintaxe) são executadas quando integrando o código.

Page 11: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso

Porquê decidimos usar o gocd?

Page 12: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)

Porquê decidimos usar o gocd?

Page 13: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)● Experimento para testes de interoperabilidade

Porquê decidimos usar o gocd?

Page 14: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)● Experimento para testes de interoperabilidade● Versão antiga do Jenkins e ninguém disposto a

atualizá-lo

Porquê decidimos usar o gocd?

Page 15: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)● Experimento para testes de interoperabilidade● Versão antiga do Jenkins e ninguém disposto a

atualizá-lo● Dificuldades de criação de pipelines com o antigo CI

Porquê decidimos usar o gocd?

Page 16: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)● Experimento para testes de interoperabilidade● Versão antiga do Jenkins e ninguém disposto a

atualizá-lo● Dificuldades de criação de pipelines com o antigo CI● Muitos plugins necessários no antigo CI

Porquê decidimos usar o gocd?

Page 17: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Casos de sucesso● Experimento para testes de mobile (iOS)● Experimento para testes de interoperabilidade● Versão antiga do Jenkins e ninguém disposto a

atualizá-lo● Dificuldades de criação de pipelines com o antigo CI● Muitos plugins necessários no antigo CI● Utilização de uma ferramenta pensada com conceitos

modernos voltados a entrega contínua de software

Porquê decidimos usar o gocd?

Page 18: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Experimentação - iOS testing

Page 19: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Experimentação - interoperability testing (WebRTC)

Page 20: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Experimentação - interoperability testing (WebRTC)

Page 21: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Do Jenkins para o gocd

Page 22: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Servidor x agentes

Conceitos básicos do gocd

Page 23: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Servidor x agentes● Pipelines (paralelização)

Conceitos básicos do gocd

Page 24: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Servidor x agentes● Pipelines (paralelização)

○ 1 ou mais stages (em sequencia)

Conceitos básicos do gocd

Page 25: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Servidor x agentes● Pipelines (paralelização)

○ 1 ou mais stages (em sequencia)■ 1 ou mais jobs (paralelização)

Conceitos básicos do gocd

Page 26: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Conceitos básicos do gocd

● Servidor x agentes● Pipelines (paralelização)

○ 1 ou mais stages (em sequencia)■ 1 ou mais jobs (paralelização)

● 1 ou mais tasks (em sequencia)

Page 27: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

External storage volume

Infraestrutura como código

go-server

go-agente2e, node-v6

go-agentnode-v6

go-agentnode-v6

go-agentnode-v6

go-agentnode-v7

Page 28: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Agrupando pipelines - pull requests

Page 29: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Agrupando pipelines - merges to master

Page 30: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Agrupando pipelines - deployments

Page 31: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 32: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 33: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 34: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 35: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 36: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Recursos

Page 37: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Variáveis de ambiente

Page 38: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins

Page 39: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins- GitHub OAuth Login

Page 40: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins- GitHub PRs builder/status notifier

Page 41: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins- GitHub PRs builder/status notifier

Page 42: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins - Slack notification

Page 43: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins - Slack notification

Page 44: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Plugins - YAML configuration

Page 45: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos

Page 46: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos

Page 47: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - Protractor tests report

Page 48: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - Screenshots on failures

Page 49: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - Screenshots on failures

Page 50: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - e2e performance tests

Page 51: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - relatório de cobertura de código (server)

Page 52: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - relatório de cobertura de código (frontend)

Page 53: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - lighthouse reports

Page 54: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - lighthouse reports (frontpage)

Page 55: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Artefatos - lighthouse reports (inside the room)

Page 56: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Comunidade

Page 57: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Agentes elasticos (instancias spot/containers)

Próximos passos

Page 58: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Agentes elasticos (instancias spot/containers)● Artefatos entre estágios e pipelines

Próximos passos

Page 59: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

● Agentes elasticos (instancias spot/containers)● Artefatos entre estágios e pipelines● Contribuições de volta para a comunidade

Próximos passos

Page 60: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Mão na massa

Page 61: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Q&A

Page 62: Estratégias para o uso de integração e entrega contínua ...sucesurs.org.br/sites/default/files/2019-04/...Experimento para testes de interoperabilidade Versão antiga do Jenkins

Obrigado!

https://about.me/walmyr-filho