23
Desenvolvemos produtos digitais

Intercon Android - Integração e entrega contínua para Android

Embed Size (px)

DESCRIPTION

Palestra apresentada por Victor Nascimento durante o Intercon Android, no dia 20/09/2014.

Citation preview

Page 1: Intercon Android - Integração e entrega contínua para Android

Desenvolvemos produtos digitais

Page 2: Intercon Android - Integração e entrega contínua para Android

Continuous Mobile: Entrega e Integração Contínuas em Android

Page 3: Intercon Android - Integração e entrega contínua para Android

Integração Contínua (IC)?

Temas

Deployment Continuo(DC)?

Topologia IC/DC Mobile

Desafios Mobile

QA & comentários

Page 4: Intercon Android - Integração e entrega contínua para Android

Um projeto qualquer...

Page 5: Intercon Android - Integração e entrega contínua para Android

O problema...

Page 6: Intercon Android - Integração e entrega contínua para Android

Como detectar o problema antes? Automatização!

Git Server

CI Server

CI faz um polling do git

Emulador 1 Emulador n

...Relatórios

Mobiledev - CD Server(Concrete Solutions)

Page 7: Intercon Android - Integração e entrega contínua para Android

Benefícios IC/DC

● Aumento da inspeção e consequente aumento da transparência● Garantia de execução de testes a cada commit (polling do SIC)● Dar mais confiança para o time em atualizações de versões● Repetibilidade da verificação de erros reais● One click Deploy (até produção se quiser!)● Scare Friday ? Deploys de sexta-feira

Page 8: Intercon Android - Integração e entrega contínua para Android

Automatização = !ADT && !Studio

Page 9: Intercon Android - Integração e entrega contínua para Android

Build automatizado - Android

Provavelmente será depreciado logo…

Opção para quem já está acostumado com Java e Eclipse. Comunidade altamente ativa!

Muito bom se você não usa o Eclipse, maaaas ainda não está completo…

Page 10: Intercon Android - Integração e entrega contínua para Android

● Famoso no Java Backend● Suporte a AAR está em beta (para o Eclipse não é

possível por enquanto)● Suporte ruim a bibliotecas fechadas (bem melhor no

4.x-rc1● Zilhões de plugins (Checkstyle, PMD, JaCoCo, Emma,

Sonar, etc)

Page 11: Intercon Android - Integração e entrega contínua para Android

● Sistema que o Google escolheu● Estrutura do pojeto mais simples (BuildVariants +

Project Flavors)● Maiores facilidades (ManifestMerger, controle da

versão e etc)● Ainda está em beta!

Page 12: Intercon Android - Integração e entrega contínua para Android

● Matriz de problemas: vértice A (versões do Android) x vértice B (densidades de telas) x vértice C (hardware? 3g?) x ...

● http://square.github.io/spoon/ execução do projeto em todos os devices que o adb encontrar

● Jenkins Matrix Parameter Job● Android Maven Plugin RC | Gradle

Emuladores - Android

Page 13: Intercon Android - Integração e entrega contínua para Android

Android Jenkins Plugin

● Emuladores por meio do plugin Android Emulator Plugin

Page 14: Intercon Android - Integração e entrega contínua para Android

Android Jenkins Plugin

Page 15: Intercon Android - Integração e entrega contínua para Android

Android Jenkins Plugin | Problemas?

● Startup de emuladores● Imprevisível em ambientes virtualizados (AWS)● Como fazer com devices físicos?

Page 16: Intercon Android - Integração e entrega contínua para Android

● Master: na núvem (o mesmo para iOS, Android e etc)

● Slaves: máquinas físicas Podem ter vários devices

conectados Podem ter os emuladores já

inicializados Podem ser otimizados (placa

gráfica, usar KVM, etc)

Jenkins - Master -> Slave

Page 17: Intercon Android - Integração e entrega contínua para Android

Jenkins - Master -> Slave

● Pode-se publicar relatórios da branch remota

● Para os builds de Maven com o plugin 3.9.0-rcX e Gradle recentes, executar em tudo que estiver disponível para o ADB

Page 18: Intercon Android - Integração e entrega contínua para Android

Jenkins - Master -> Slave | Problemas?

● Se puder, faça o setup com um DevOps!● Conheça os comandos mais avançados do ADB (port

forwarding para devices sem cabos USBs, AAPT para descobrir a versão do manifest, etc)

● Pré & Post build actions com scripts (por exemplo para guardar os logcats de cada device na workspace do seu job)

Page 19: Intercon Android - Integração e entrega contínua para Android

Jenkins - Branching & Fluxo de jobs

● Não tem um único modelo correto● Faça como achar melhor, apenas

não complique muito. Exemplo: desenvolvimento na branch MASTER, e todos os releases na branch RELEASE com versões TAGGEADAS

Page 20: Intercon Android - Integração e entrega contínua para Android

● Testes Unitários: faça-os serem unitários mesmo! (faça um mock da API, por exemplo…)

● Testes Integrados: use ferramentas como Calabash ou Selendroid

Testes

Page 21: Intercon Android - Integração e entrega contínua para Android

Testes - Problemas?

● Desliguem as animações dos targets!● Use um outro InstrumentationRunner (ver

documentação do Espresso)● Procure a implementação das bibliotecas que usa

para mockar. Exemplo: retrofit -> retrofit-mock

Page 22: Intercon Android - Integração e entrega contínua para Android

Soluções Deployment Continuo

● Solução Interna MobRelease● Appaloosa (https://www.appaloosa-store.com/)● Appblade (https://appblade.com/)● Google Play Native App Beta Testing Alternativas

Page 23: Intercon Android - Integração e entrega contínua para Android

blog.concretesolutions.com.br@ConcreteS

facebook.com/ConcreteS

[email protected]