Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automating and upholding quality of your Mobile App with CI/CD

Automating and upholding quality of your Mobile App with CI/CD

This is a presentation that I gave at the I Code Java Conference 2019, South Africa

7cfaab5ac5113201604c3ad16d9a293b?s=128

Peter-John Welcome

July 25, 2019
Tweet

Transcript

  1. Automating and upholding quality of your mobile app with CI/CD

    Peter-John Welcome @pjapplez Mobile Engineering Lead
  2. About me

  3. Our Road Map to Success • Reliability • Maintainability •

    Testability • Portability • Reusability • Automate Everything • Avoid Human Error
  4. Our Road Map to Success • Branching Strategies • Release

    Strategies • Code Reviews • Architecture • Code Coverage • Static Code Analysis • CI/CD • Automated releases
  5. Branching Strategies

  6. GitFlow: Source: https://tinyurl.com/y5xjsc4l

  7. Trunk based: Source: https://tinyurl.com/y3xb8okn

  8. Architecture

  9. Architecture • Consistency • Code Maintainability • Loosely coupled code

    • Testability • Design Patterns (Solving Complex Problems and reusability) • New developer Ramp up time is faster • Can build features faster with quality and bug free code in mind
  10. Code Reviews (Pull Requests)

  11. None
  12. Code Reviews • Code reviews can get messy • Should

    be there to validate the business requirement • Validate unit testing • Good practices are being followed (Linting, Style Guides) • A safe place to make mistakes but also learn from team members • A place to congratulate team members on awesome work
  13. Code Coverage

  14. Code Coverage

  15. Code Coverage

  16. Static Code Analysis tools

  17. Static Code Analysis: This is the analysing of software without

    executing it. Usually performed on source code that is not being executed. It’s basically code reviewing by an automated tool.
  18. Static Code Analysis • Linting • Code grading • Style

    guides • Tech Debit and maintenance analysing • Automatic code reviews
  19. Static Code Analysis

  20. Static Code Analysis

  21. What is CI?

  22. What is CI: Continuous Integration (CI) is a development practice

    that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
  23. CI Workflows:

  24. What is CD?

  25. What is CD? 1. Continuous delivery 2. Continuous deployment

  26. What is CD (Delivery): Continuous delivery is an extension of

    continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.
  27. What is CD(deployment): Continuous deployment goes one step further than

    continuous delivery. With this practice, every change that passes all stages of your production pipeline is released to your customers. There's no human intervention, and only a failed test will prevent a new change to be deployed to production.
  28. None
  29. None
  30. Main reasons for CI/CD

  31. Reasons for CI/CD • Maintain a single source repository •

    Automate the build • Make your build self-testing • Every commit should build on an integration machine • Enforce rules on codebases • Test in a clone of the production environment • Make it easy for anyone to get the latest executable version • Everyone can see what’s happening • Automate deployment
  32. Types of CI/CD Platforms • Jenkins • Bitrise • SemaphoreCI

    • CircleCI • TeamCity • Travis • Bamboo • Codeship
  33. Automating everything (Fastlane)

  34. Fastlane

  35. Alternatives to Fastlane

  36. Cool things we can do

  37. Source: https://tinyurl.com/y5g9t49h

  38. End Goal Source: https://tinyurl.com/y4wva4v9

  39. Thanks! Contact me: https://medium.com/@pjwelcome @pjapplez pjwelcome@gmail.com Peter-johnwelcome.co.za https://github.com/pjwelcome