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

Peter-John Welcome

July 25, 2019
Tweet

More Decks by Peter-John Welcome

Other Decks in Programming

Transcript

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

    Peter-John Welcome @pjapplez Mobile Engineering Lead
  2. Our Road Map to Success • Reliability • Maintainability •

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

    Strategies • Code Reviews • Architecture • Code Coverage • Static Code Analysis • CI/CD • Automated releases
  4. 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
  5. 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
  6. 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.
  7. Static Code Analysis • Linting • Code grading • Style

    guides • Tech Debit and maintenance analysing • Automatic code reviews
  8. 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.
  9. 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.
  10. 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.
  11. 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
  12. Types of CI/CD Platforms • Jenkins • Bitrise • SemaphoreCI

    • CircleCI • TeamCity • Travis • Bamboo • Codeship