Top Banner
Android Apps Continuous Integration Eduardo Carrara @DuCarrara Android Developer @ TradeForce Desafios e Soluções
22

Android apps ci

Jan 22, 2018

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android apps ci

Android Apps Continuous Integration

Eduardo Carrara

@DuCarrara

Android Developer @ TradeForce

Desafios e Soluções

Page 2: Android apps ci

“Once you stop learning you start dying”- Albert Einstein

Page 3: Android apps ci

Continuous Integration (CI)

Page 4: Android apps ci

"Sempre que um membro do time fizer um commit, toda a aplicação deve ser

construída e testada por um conjunto de testes automatizados; se a build ou testes

falharem o time deve parar e resolver o problema imediatamente."

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

Page 5: Android apps ci

BenefíciosRedução de riscos pré-release

Aumento na velocidade e qualidade das entregas

Detecção e correção prematura de bugs

Feedback rápidos aos desenvolvedores time

Page 6: Android apps ci

Antes de Começar...Tenha um sistema para controle do versionamento

Automatize seu processo de build

Page 7: Android apps ci

Práticas de CI: DesenvolvimentoFaça check in regularmente (diariamente no mínimo)

Sempre esteja pronto para reverter suas alterações

Faça uma gestão adequada do seu ambiente de desenvolvimento

Tente corrigir por um tempo determinado antes de reverter

Page 8: Android apps ci

Práticas de CI: TestesCrie testes automatizados

Espere o resultado dos testes antes de iniciar uma nova atividade

Sempre rode os testes antes de integrar as alterações

Não comente/desative testes que estão falhando

Page 9: Android apps ci

Práticas de CI: BuildMantenha o processo de testes e build curtos e rápidos

Nunca vá para casa com uma build quebrada

Não faça check in de uma build quebrada

Assuma a responsabilidade por quebras causadas por suas mudanças

Page 10: Android apps ci

Dicas e Cuidados para Android

Page 11: Android apps ci

AndroidAmbiente, API Level e Build Tools

Dependências e Velocidade das Builds

Lint

Automatize o Release e Utilize Ferramentas de Beta

Page 12: Android apps ci

Rode seus TestesRode seus testes localmente e no CI

check, connectedAndroidTest, testReleaseUnitTest

As tasks do Gradle são suas amigas

Page 13: Android apps ci

Ferramentas

Page 14: Android apps ci
Page 15: Android apps ci

Um caso

Page 16: Android apps ci

SituaçãoLegado de ~4 anos com um time novo <1 ano de projeto

Medo de refactoring, baixa cobertura de testes

Github + TeamCity (self hosted)

Falta de visibilidade e rastreabilidade

Page 17: Android apps ci

AçõesAdoção do Git Flow

Uso do Crashlytics Beta

Troca do TeamCity pelo Bitrise.io

Melhoria na cobertura de testes

Page 18: Android apps ci

Desafios & FuturoMelhorar a cobertura de Testes

Incluir mais ferramentas de análise estática (FindBugs, CheckStyle)

Criar suites de testes de integração e adicioná-los ao Bitrise.io

Page 19: Android apps ci

Pensamentos FinaisPrática simples mas a implementação pode ser complexaDisciplina e persistência são chave

Android tem suas peculiaridades, fique atento!

Page 20: Android apps ci

“… if you are afraid to change something it is clearly poorly designed.”

- Martin Fowler

Perguntas?

Page 21: Android apps ci

Eduardo Carrara

@DuCarrara

Obrigado!

github.com/ecarrara-araujo

Page 22: Android apps ci

Referências1. Continuous Integration by Martin Fowler2. Continuous Integration by ContinuousDelivery.com3. CI Links by Paul Hammant4. Large-Scale Continuous Testing in the Cloud by John Penix from Google5. Continuous Integration: Improving Software Quality and Reducing Risk6. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment

Automation7. Why Continuous Integration is so Important by Walmyr Filho8. Android Apps Continuous Integration (CI) by Eduardo Carrara