Android apps ci

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

Transcript of Android apps ci

Android Apps Continuous Integration

Eduardo Carrara

@DuCarrara

Android Developer @ TradeForce

Desafios e Soluções

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

Continuous Integration (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

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

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

Automatize seu processo de build

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

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

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

Dicas e Cuidados para Android

AndroidAmbiente, API Level e Build Tools

Dependências e Velocidade das Builds

Lint

Automatize o Release e Utilize Ferramentas de Beta

Rode seus TestesRode seus testes localmente e no CI

check, connectedAndroidTest, testReleaseUnitTest

As tasks do Gradle são suas amigas

Ferramentas

Um caso

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

AçõesAdoção do Git Flow

Uso do Crashlytics Beta

Troca do TeamCity pelo Bitrise.io

Melhoria na cobertura de testes

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

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

Android tem suas peculiaridades, fique atento!

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

- Martin Fowler

Perguntas?

Eduardo Carrara

@DuCarrara

Obrigado!

github.com/ecarrara-araujo

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