Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Continuous Delivery With Flutter Chirag Jadav

Slide 3

Slide 3 text

Hello! Chirag Jadav Udacity Certified Developer | Flutter Developer Software Engineer Twitter: @JadavRadhe Github: @JadavChirag LinkedIn: Jadav Chirag

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

nobody Understands my pain

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Bhai Jayada natak matkar release krva de..

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Continuous Integration (CI) & Continuous Delivery (CD)

Slide 17

Slide 17 text

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)

Slide 18

Slide 18 text

● 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)

Slide 19

Slide 19 text

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)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

● 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 ?

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Stages of a CI/CD pipeline

Slide 24

Slide 24 text

Stages of a CI/CD pipeline

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

● 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

Slide 27

Slide 27 text

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?

Slide 28

Slide 28 text

● Travis CI ● Circle CI ● Jenkins ● GitLab CI ● GitHub Actions ● Fastlane Which CI is good for Flutter? ● Code Magic ● Never Code ● Fledge ● Bitrise

Slide 29

Slide 29 text

Which CI ? Any CI, but i’ll suggest fastlane for flutter mobile app

Slide 30

Slide 30 text

Why Fastlance ? ● Capture screenshots automatically ● Distribute beta builds ● Publish your app with the push of a button ● Automatic code signing for iOS

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

References @parthJasani @dhuma1981 https://fastlane.tools https://flutter.dev/docs/deployment/cd https://github.com/features/actions https://codemagic.io/start/ https://nevercode.io/

Slide 34

Slide 34 text

Chirag Jadav | Flutter Developer & GDG Ahm @JadavRadhe @Flutter_Hack_Series Thank you!