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

Continuous Integration(CI) & Continuous Deploym...

Continuous Integration(CI) & Continuous Deployment(CD) with Flutter

A talk on Continuous Integration(CI) & Continuous Deployment(CD) with Flutter, in which you can learn what is CI/CD and which tool is good for flutter mobile app.

Talk delivered at DevFest Gandhinagar 2019

Google Slides with Animation & Gif: http://tiny.cc/tregez

Reference of gif from Dhrumil Shah & Parth Jansari Presentation
Thanks both of you

Jadav Chirag

October 13, 2019
Tweet

More Decks by Jadav Chirag

Other Decks in Programming

Transcript

  1. Hello! Chirag Jadav Udacity Certified Developer | Flutter Developer Software

    Engineer Twitter: @JadavRadhe Github: @JadavChirag LinkedIn: Jadav Chirag
  2. Continuous integration is a software development practice where developers regularly

    merge their code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates. Continuous Integration (CI)
  3. • What is Continuous Integration? • A workflow where after

    you commits the code, a server process it and automate things • Unit tests • Integration Tests • Code Metrics & Quality • Reports Generation • A barrier when your app breaks something Continuous Integration (CI)
  4. Continuous delivery (CD) generally refers to the overall chain of

    processes (pipeline) that automatically gets source code changes and runs them through build, test, packaging, and related operations to produce a deployable release, largely without any human intervention The goals of CD in producing software releases are automation, efficiency, reliability, reproducibility, and verification of quality (through continuous testing). Continuous Delivery (CD)
  5. Continuous deployment (CD) refers to the idea of being able

    to automatically take a release of code that has come out of the CD pipeline and make it available for end users. Depending on the way the code is "installed" by users, that may mean automatically deploying something in a cloud, making an update available (such as for an app on a phone), updating a website, or simply updating the list of available releases. Continuous deployment
  6. • Improve speed to market • Ensured quality • Deploying

    code is seamless, no longer strenuous • Improves your disaster recovery/business continuity • Improve business agility Why should we start doing this ?
  7. A CI/CD pipeline may sound like overhead but it really

    isn’t. It’s essentially a runnable specification of the steps that need to be performed in order to deliver a new version of a software product. In the absence of an automated pipeline, engineers would still need to perform these steps manually, and hence far less productively. CI steps • - Build app • - Run unit tests • - Run UI tests Elements of a CI/CD pipeline
  8. Pipelines are created frequently, an important responsibility of pipelines is

    to be consistent and reproducible. • Developers can stay focused on writing code and monitoring the behavior of the system in production. • QA and product stakeholders have easy access to the latest, or any, version of the system. • Product updates are not stressful. • Logs of all code changes, test and deployments are available for inspection at any time. • Rolling back to a previous version in the event of a problem is a routine push-button action. • A fast feedback loop helps build an organizational culture of learning and responsibility What’s in a pipeline? & benefits of pipelines
  9. • Android Emulator required for Instrumentation Tests • iOS Simulator

    required for iOS UI Tests • iOS apps can’t be build on linux Jenkins, one of the few solutions offering, runners on OSX Difficulties of CI in Mobile Development
  10. Automating these core tasks in a pipeline has many obvious

    advantages. But building a CICD (Continuous Integration/Continuous Delivery) solution that works out-of-the-box, to meet the needs of all possible apps, may be a bit of a stretch. Flutter CI/CD Tools Requirements : • Building/Testing embedder apps requires embedder SDK tools • - For iOS/Mac apps you need macOS • - For Android you need the Android SDK • - For Windows you need new hardware every year What’s a good CI/CD solution for Flutter?
  11. • Travis CI • Circle CI • Jenkins • GitLab

    CI • GitHub Actions • Fastlane Which CI is good for Flutter? • Code Magic • Never Code • Fledge • Bitrise
  12. Why Fastlance ? • Capture screenshots automatically • Distribute beta

    builds • Publish your app with the push of a button • Automatic code signing for iOS