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

Continuous delivery with Flutter

Continuous delivery with Flutter

In recent years we see the popularity of new techniques to speed up the delivery of reliable and functional software. Unit testing (TDD) and integration tests, code quality metrics, continuous integration servers (CI), continuous delivery (CD), continuous deployment (CD) and other methods to add value to your software.

With so many options, many are lost on how to do this mixture. In this talk I will discuss all the necessary stages, their minimum requirements and tips for your software deliver quality, speed with flutter.

Google Slides with Animation & Gif: shorturl.at/ip234

Thanks you @KenyaFlutterDev

Jadav Chirag

June 05, 2020
Tweet

More Decks by Jadav Chirag

Other Decks in Programming

Transcript

  1. Continuous integration is a coding philosophy and set of practices

    that drive development teams to implement small changes and check in code to version control repositories frequently. Modern applications require developing code in different platforms and tools, the team needs a mechanism to integrate and validate its changes. Continuous Integration (CI)
  2. • 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) Workflow
  3. Continuous Delivery 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 Continuous Delivery (CD)
  4. Continuous Deployment 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
  5. • Deploying code is seamless, no longer strenuous • Ensured

    quality • Increased productivity • Improves your disaster recovery/business continuity • Improve business agility • Improve speed to market Why should we start doing this ?
  6. • A CI/CD pipeline helps us automate steps in our

    software delivery process, such as initiating code builds, running automated tests, and deploying to a staging or production environment. • Automated pipelines remove manual errors, provide standardized development feedback loops and enable fast product iterations. What is a CI/CD pipeline?
  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. • 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 Benefits of pipelines
  9. Automating these core tasks in a pipeline has many obvious

    advantages. But building a CI/CD (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 for Flutter?
  10. • Travis CI • Circle CI • Jenkins • GitLab

    CI • GitHub Actions • Fastlane Which CI is good for Flutter? • Code Magic • Never Code • Fledge • Bitrise
  11. Which CI/CD tools is best for Mobile App ? •

    Does it support Android and iOS? • Does it have signIn with Github and Bitbucket support? • Can I try it out for Android and iOS during the free trial? • Is it easy to set up? • What kind of integrations does it have? • Does it support different workflows? • How many parallel builds can be done?
  12. Basic Requirements • Console App Setup on CI Tools. •

    Flutter app with some tests. • Any Version Controlling tool like GitHub, GitLab or Bitbucket. • Code signing details, like certificates and provisioning profiles, if you want to publish to App Store or Play Store. • Slack workspace for sending build reports and artefacts.
  13. // Copyright (c) 2018, the Dart project authors. Please see

    the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'dart:math' as math; class Circle { double radius; Circle(this.radius); double get area => math.pi * math.pow(radius, 2); } void main() { // Before Dart 2.1, you had to provide a trailing `.0` – `42.0` – when // assigning to fields or parameters of type `double`. // A value like `42` was not allowed. print(Circle(2.0).area); // Before Dart 2.1, the trailing `.0` is required. // With Dart 2.1, you can provide whole-number values when assigning to // a double without the trailing `.0`. print(Circle(2).area); // Legal with Dart 2.1 }