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

Post on 19-Aug-2020

8 views 0 download

Transcript of Estratégias para o uso de integração e entrega contínua...

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

por Walmyr FilhoEngenheiro de software @appear.in

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

Agenda

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

Exercício

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

diariamente?

Exercício

● 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

● 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

Agile / Lean / DevOps

Agile Lean

DevOps

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.

● Casos de sucesso

Porquê decidimos usar o gocd?

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

Porquê decidimos usar o gocd?

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

Porquê decidimos usar o gocd?

● 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?

● 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?

● 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?

● 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?

Experimentação - iOS testing

Experimentação - interoperability testing (WebRTC)

Experimentação - interoperability testing (WebRTC)

Do Jenkins para o gocd

● Servidor x agentes

Conceitos básicos do gocd

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

Conceitos básicos do gocd

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

○ 1 ou mais stages (em sequencia)

Conceitos básicos do gocd

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

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

Conceitos básicos do gocd

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)

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

Agrupando pipelines - pull requests

Agrupando pipelines - merges to master

Agrupando pipelines - deployments

Recursos

Recursos

Recursos

Recursos

Recursos

Recursos

Variáveis de ambiente

Plugins

Plugins- GitHub OAuth Login

Plugins- GitHub PRs builder/status notifier

Plugins- GitHub PRs builder/status notifier

Plugins - Slack notification

Plugins - Slack notification

Plugins - YAML configuration

Artefatos

Artefatos

Artefatos - Protractor tests report

Artefatos - Screenshots on failures

Artefatos - Screenshots on failures

Artefatos - e2e performance tests

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

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

Artefatos - lighthouse reports

Artefatos - lighthouse reports (frontpage)

Artefatos - lighthouse reports (inside the room)

Comunidade

● Agentes elasticos (instancias spot/containers)

Próximos passos

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

Próximos passos

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

Próximos passos

Mão na massa

Q&A

Obrigado!

https://about.me/walmyr-filho