SlideShare a Scribd company logo
1 of 17
Building CI / CD for Mobile
Development
● Nihal Shrestha
Gurzu Confidential
2
CI/CD
Continuous integration (CI) and continuous delivery
(CD) embody a culture, set of operating principles,
and collection of practices that enable application
development teams to deliver code changes more
frequently and reliably.
Gurzu Confidential
3
Mobile Tech Stack
React Native
React Native is a JavaScript framework
for writing real, natively rendering
mobile applications for iOS and
Android.
Two ways we can start building mobile
apps using React Native:
● Expo [Previously Used]
● Core React Native [Currently using]
Gurzu Confidential
Expo is a set of tools built and a wrapper around React Native.
● No need to setup tedious environment setup like Android Studio and Xcode.
● No need to have Mac for iOS development.
● Able to start building apps within a couple of minutes.
● Provides their own servers for building both Android and iOS apps. [Pipeline]
Limitations (Why we needed to shift to Core RN):
● Less control over both platforms.
● Limited number of native features inbuilt within expo. [like bluetooth services]
● Similarly, integrating with third parties native libraries that are not yet
supported by expo. [Esewa SDK, Khalti SDK]
● Larger build sizes.
4
Expo
Journey from Expo to Core RN
Fig 1: Expo
Fig 2: React Native
Gurzu Confidential
Expo provided us their own build server, where we used to build our apps
[Android & iOS]. The process of building and deploying was fairly easy and
faster.
But,
As we shifted to Core RN, each build became dependent upon dev’s local
machine. So, as the project moved ahead, developer had to build and
deploy every new release from their own system and, also the whole
development team became dependent upon it.
5
So, Why we didn’t need CI/CD previously and Why do
we need it now?
Gurzu Confidential
One key point to be noted before diving into the detailed
explanation of CI/CD:
● iOS apps can only be build on macOS system. i.e, We
somehow needed to make our CI system around a macOS
computer.
○ Meaning, We will be using an iMac as a build server for both Android and iOS.
6
Gurzu Confidential
7
General Flow Diagram
Gurzu Confidential
● Fastlane:
○ Fastlane is the easiest way to automate deployments and releases for your iOS and
Android apps. It handles all tedious tasks, like dealing with code signing, and releasing
your application.
○ All we have to do is configure a Fastfile that defines the steps needed to build and deploy
your mobile application.
○ Fastfile is written in ruby.
● Gitlab Runner:
○ GitLab Runner is an application that works with GitLab CI/CD
to run jobs in a pipeline.
○ A GitLab runner clones the project, reads the gitlab-ci.yml file
and do what it is instructed to do.
○ In our case, Gitlab runner is installed and used in
macOS(iMac).
[Supported OS: Linux, Windows, macOS]
8
Gurzu Confidential
● Firebase App Distribution:
Firebase App Distribution makes distributing your apps to trusted testers and teammates
painless. By getting your apps onto testers' devices quickly, you can get feedback early and
often.
Steps:
- Upload your latest pre-release build
- Invite testers
- Get feedback
- Release new beta builds
Firebase app distribution is fully supported with Fastlane. So, all of the task can be
automated using Fastlane ( from uploading the build files to sending an invitations ).
● Detailed Architectural Diagram for each platform:
9
Gurzu Confidential
10
Gurzu Confidential
● Main Steps to follow for Android (One time setup):
○ Fastfile configuration. Set of instructions for running build.
○ Certificate generation. (Keystore using keytool)
■ Key store password
■ Key alias
■ Key password
○ Generating firebase token.
All of these keys needs to be configured as an ENV variable in Gitlab CI which will be
used during build process.
11
Gurzu Confidential
12
Gurzu Confidential
● Main Steps to follow for iOS (One time setup):
○ Fastfile configuration. Set of instructions for running build.
○ Certificate generation using MATCH.
■ Type
■ App identifier
■ Keychain password
■ Team id
■ Profile name
○ Generating firebase token.
All of these keys needs to be configured as an ENV variable in Gitlab CI which will be
used during build process.
13
Gurzu Confidential
14
Results
We are currently achieving the following build time(avg):
1. Android: ~ 8 min
2. iOS: ~ 20 min
Note: Build time may vary according to the project requirements.
Gurzu Confidential
15
Different Mobile CI available in the market
1. Android: ~ 7 min [Gurzu]
2. iOS: ~ 20 min [Gurzu]
Gurzu Confidential
16
Special thanks to:
● Avash Mulmi
● Sanjeev Tamang
● Aman Maharjan
Gurzu Confidential
17
Thank You

More Related Content

What's hot

GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturaGitOps: Git come unica fonte di verità per applicazioni e infrastruttura
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturasparkfabrik
 
WWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionWWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionMasayuki Iwai
 
Continuous Integration with Puppet
Continuous Integration with PuppetContinuous Integration with Puppet
Continuous Integration with PuppetMiguel Zuniga
 
Continious integration pipeline
Continious integration pipelineContinious integration pipeline
Continious integration pipelineGomathiNayagam S
 
WWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionWWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionMasayuki Iwai
 
Web development, from git flow to github flow
Web development, from git flow to github flowWeb development, from git flow to github flow
Web development, from git flow to github flowCaesar Chi
 
Building OSGi Projects with bnd in Maven -- Ray Augé, Liferay
Building OSGi Projects with bnd in Maven -- Ray Augé, LiferayBuilding OSGi Projects with bnd in Maven -- Ray Augé, Liferay
Building OSGi Projects with bnd in Maven -- Ray Augé, LiferayOSGi Alliance
 
Devs are from Mars, Ops are from Venus
Devs are from Mars, Ops are from VenusDevs are from Mars, Ops are from Venus
Devs are from Mars, Ops are from VenusMaish Saidel-Keesing
 
Continuous Integration - What even is it?
Continuous Integration - What even is it?Continuous Integration - What even is it?
Continuous Integration - What even is it?Rob Jacoby
 
Deploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and KubernetesDeploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and KubernetesJessica Deen
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOpsNicola Baldi
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scalatakezoe
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshopAssaf Gannon
 
GitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabGitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabFatih Acet
 
Live development & tools
Live development & toolsLive development & tools
Live development & toolsbotsplash.com
 
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014Endava
 
Nextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsNextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsAndy Scherzinger
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainingsHaufe-Lexware GmbH & Co KG
 

What's hot (20)

Build testable react app
Build testable react appBuild testable react app
Build testable react app
 
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturaGitOps: Git come unica fonte di verità per applicazioni e infrastruttura
GitOps: Git come unica fonte di verità per applicazioni e infrastruttura
 
Gitlab CI/CD
Gitlab CI/CDGitlab CI/CD
Gitlab CI/CD
 
WWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionWWDC 2016 Personal Recollection
WWDC 2016 Personal Recollection
 
Continuous Integration with Puppet
Continuous Integration with PuppetContinuous Integration with Puppet
Continuous Integration with Puppet
 
Continious integration pipeline
Continious integration pipelineContinious integration pipeline
Continious integration pipeline
 
WWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionWWDC 2016 Personal Recollection
WWDC 2016 Personal Recollection
 
Web development, from git flow to github flow
Web development, from git flow to github flowWeb development, from git flow to github flow
Web development, from git flow to github flow
 
Building OSGi Projects with bnd in Maven -- Ray Augé, Liferay
Building OSGi Projects with bnd in Maven -- Ray Augé, LiferayBuilding OSGi Projects with bnd in Maven -- Ray Augé, Liferay
Building OSGi Projects with bnd in Maven -- Ray Augé, Liferay
 
Devs are from Mars, Ops are from Venus
Devs are from Mars, Ops are from VenusDevs are from Mars, Ops are from Venus
Devs are from Mars, Ops are from Venus
 
Continuous Integration - What even is it?
Continuous Integration - What even is it?Continuous Integration - What even is it?
Continuous Integration - What even is it?
 
Deploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and KubernetesDeploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and Kubernetes
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOps
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
 
Fullstack workshop
Fullstack workshopFullstack workshop
Fullstack workshop
 
GitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLabGitLab Frontend and VueJS at GitLab
GitLab Frontend and VueJS at GitLab
 
Live development & tools
Live development & toolsLive development & tools
Live development & tools
 
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014
Continuos integration with Jenkins for iOS | SuperSpeakers@CodeCamp Iasi, 2014
 
Nextcloud Android App Development Process Insights
Nextcloud Android App Development Process InsightsNextcloud Android App Development Process Insights
Nextcloud Android App Development Process Insights
 
2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings2015 05-06-karsten gaebert-akademie-etrainings
2015 05-06-karsten gaebert-akademie-etrainings
 

Similar to Mobile CICD

Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxGurzuInc
 
Serverless java
Serverless   javaServerless   java
Serverless javaVishwas N
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile ReleasesDrew Hannay
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainedSemaphore
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentBintang Thunder
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014Oliver N
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxPankaj Goyal
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformAngus Fox
 
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...Teodoro Cipresso
 
Automation in iOS development
Automation in iOS developmentAutomation in iOS development
Automation in iOS developmentCong Nguyen
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & SalesforceAbhinav Gupta
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Giovanni Toraldo
 
flutter_bootcamp_MUGDSC_Presentation.pptx
flutter_bootcamp_MUGDSC_Presentation.pptxflutter_bootcamp_MUGDSC_Presentation.pptx
flutter_bootcamp_MUGDSC_Presentation.pptxRakshaAgrawal21
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard
 
Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3Bruce Pentreath
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoSzczepan Faber
 

Similar to Mobile CICD (20)

Building CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptxBuilding CI_CD for Mobile Development.pptx
Building CI_CD for Mobile Development.pptx
 
Serverless java
Serverless   javaServerless   java
Serverless java
 
3x3 Speeding Up Mobile Releases
3x3 Speeding Up Mobile Releases3x3 Speeding Up Mobile Releases
3x3 Speeding Up Mobile Releases
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
 
CI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift DeploymentCI CD Jenkins for Swift Deployment
CI CD Jenkins for Swift Deployment
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptxDeploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
Deploying Mule Applications with Jenkins, Azure and BitBucket (1).pptx
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
 
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
Innovate 2014: Get an A+ on Testing Your Enterprise Applications with Rationa...
 
Automation in iOS development
Automation in iOS developmentAutomation in iOS development
Automation in iOS development
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
 
flutterbootcamp
flutterbootcampflutterbootcamp
flutterbootcamp
 
flutter_bootcamp_MUGDSC_Presentation.pptx
flutter_bootcamp_MUGDSC_Presentation.pptxflutter_bootcamp_MUGDSC_Presentation.pptx
flutter_bootcamp_MUGDSC_Presentation.pptx
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
 
Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3Angular JS 2_0 BCS CTO_in_Res V3
Angular JS 2_0 BCS CTO_in_Res V3
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
 
Serverless
ServerlessServerless
Serverless
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Mobile CICD

  • 1. Building CI / CD for Mobile Development ● Nihal Shrestha
  • 2. Gurzu Confidential 2 CI/CD Continuous integration (CI) and continuous delivery (CD) embody a culture, set of operating principles, and collection of practices that enable application development teams to deliver code changes more frequently and reliably.
  • 3. Gurzu Confidential 3 Mobile Tech Stack React Native React Native is a JavaScript framework for writing real, natively rendering mobile applications for iOS and Android. Two ways we can start building mobile apps using React Native: ● Expo [Previously Used] ● Core React Native [Currently using]
  • 4. Gurzu Confidential Expo is a set of tools built and a wrapper around React Native. ● No need to setup tedious environment setup like Android Studio and Xcode. ● No need to have Mac for iOS development. ● Able to start building apps within a couple of minutes. ● Provides their own servers for building both Android and iOS apps. [Pipeline] Limitations (Why we needed to shift to Core RN): ● Less control over both platforms. ● Limited number of native features inbuilt within expo. [like bluetooth services] ● Similarly, integrating with third parties native libraries that are not yet supported by expo. [Esewa SDK, Khalti SDK] ● Larger build sizes. 4 Expo Journey from Expo to Core RN Fig 1: Expo Fig 2: React Native
  • 5. Gurzu Confidential Expo provided us their own build server, where we used to build our apps [Android & iOS]. The process of building and deploying was fairly easy and faster. But, As we shifted to Core RN, each build became dependent upon dev’s local machine. So, as the project moved ahead, developer had to build and deploy every new release from their own system and, also the whole development team became dependent upon it. 5 So, Why we didn’t need CI/CD previously and Why do we need it now?
  • 6. Gurzu Confidential One key point to be noted before diving into the detailed explanation of CI/CD: ● iOS apps can only be build on macOS system. i.e, We somehow needed to make our CI system around a macOS computer. ○ Meaning, We will be using an iMac as a build server for both Android and iOS. 6
  • 8. Gurzu Confidential ● Fastlane: ○ Fastlane is the easiest way to automate deployments and releases for your iOS and Android apps. It handles all tedious tasks, like dealing with code signing, and releasing your application. ○ All we have to do is configure a Fastfile that defines the steps needed to build and deploy your mobile application. ○ Fastfile is written in ruby. ● Gitlab Runner: ○ GitLab Runner is an application that works with GitLab CI/CD to run jobs in a pipeline. ○ A GitLab runner clones the project, reads the gitlab-ci.yml file and do what it is instructed to do. ○ In our case, Gitlab runner is installed and used in macOS(iMac). [Supported OS: Linux, Windows, macOS] 8
  • 9. Gurzu Confidential ● Firebase App Distribution: Firebase App Distribution makes distributing your apps to trusted testers and teammates painless. By getting your apps onto testers' devices quickly, you can get feedback early and often. Steps: - Upload your latest pre-release build - Invite testers - Get feedback - Release new beta builds Firebase app distribution is fully supported with Fastlane. So, all of the task can be automated using Fastlane ( from uploading the build files to sending an invitations ). ● Detailed Architectural Diagram for each platform: 9
  • 11. Gurzu Confidential ● Main Steps to follow for Android (One time setup): ○ Fastfile configuration. Set of instructions for running build. ○ Certificate generation. (Keystore using keytool) ■ Key store password ■ Key alias ■ Key password ○ Generating firebase token. All of these keys needs to be configured as an ENV variable in Gitlab CI which will be used during build process. 11
  • 13. Gurzu Confidential ● Main Steps to follow for iOS (One time setup): ○ Fastfile configuration. Set of instructions for running build. ○ Certificate generation using MATCH. ■ Type ■ App identifier ■ Keychain password ■ Team id ■ Profile name ○ Generating firebase token. All of these keys needs to be configured as an ENV variable in Gitlab CI which will be used during build process. 13
  • 14. Gurzu Confidential 14 Results We are currently achieving the following build time(avg): 1. Android: ~ 8 min 2. iOS: ~ 20 min Note: Build time may vary according to the project requirements.
  • 15. Gurzu Confidential 15 Different Mobile CI available in the market 1. Android: ~ 7 min [Gurzu] 2. iOS: ~ 20 min [Gurzu]
  • 16. Gurzu Confidential 16 Special thanks to: ● Avash Mulmi ● Sanjeev Tamang ● Aman Maharjan