SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Dernier (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

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