Upload
eduardo-carrara-de-araujo
View
305
Download
0
Embed Size (px)
Citation preview
Android Apps Continuous Integration
Eduardo Carrara
@DuCarrara
Android Developer @ TradeForce
Desafios e Soluções
"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
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
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
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!
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