Estratégias para o uso de integração e entrega contínua com gocd por Walmyr Filho Engenheiro de software @appear.in
Estratégias para o uso de integração e entrega contínua com gocd
por Walmyr FilhoEngenheiro de software @appear.in
https://about.me/walmyr-filho
● 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?● 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
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.
Entrega contínua
https://medium.com/the-making-of-appear-in/what-is-a-deployment-pipeline-and-how-it-helps-software-development-teams-6cb29917ceea
● 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● 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)● 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