SlideShare ist ein Scribd-Unternehmen logo
1 von 18
18 September, 2015
Towards Continuous Delivery in Native Mobile Apps
“ContinuousDelivery is a softwaredisciplinewhere you build
softwarein sucha way thatthe softwarecan bereleased to
productionat anytime” – Martin Fowler
• Discipline – CD is not just a set of tools, it’s a practice.
• Build – The development/testcycle.
• Release– Distributing your softwareto users.
• Production – Softwareis in the hands of your users.
What is Continuous Delivery?
Continuous Integration
“Askingexperts to do boringand repetitive,and yet technically
demandingtasksis the mostcertainwayof ensuringhumanerror
thatwe canthink of, shortof sleep deprivation,or inebriation.”–
David Farley
• CI is the process ofintegrating, building,and testing code
within the developmentenvironment.
• CI adds value from the automationof these processes.
• There are both cultural and technical considerations – these
must go hand-in-hand.
CI – Integration 1
• Everything should be under Source Control – This includes
code, tests, build scripts etc.
• A well-definedbranching strategyis vitalas the number of
developers grows.
• Adhering to a branch naming strategyalso brings extra benefits
(i.e. when auditing codebase,generatingchangelogsetc.).
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
CI – Integration 2
• We use git – both github and gitlab.
• Both these platformsprovide some form of pre-merge
validation(i.e. pull request / mergerequest etc.).
• Product must be buildable and alltests must pass.
• Rapid feedback cycle to developers(test results, static analysis
etc.).
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
CI – Building 1
• Building your app should be triggeredautomaticallyon every
change.
• Android – LearnGradle. Eventhough Android Studio givesyou
this out of the box, developersshould spend time
understanding how Gradle actuallyworks. Very flexible and
easilyextendable.
• iOS – Trickier.Developersshould understand how to build their
app outside of Xcode. Heavy dependence on an IDE makes
automationmuch more difficult. (Availabletools:xctool,
fastlane etc.)
CI – Building 2
• Takecareof your build environments
• Android– Can build on most platforms (Linux, Windows, OSX)
• NoUI
• Lightweightenvironment
• Virtualisationand/orcloud–nolimittoscale
• iOS – Requires full OSX environment + Xcode. Possible to
virtualise, but only on Mac hardware.
• FullUI
• Comparativelyheavy+fragileenvironment
• Novirtualisation–scalinglimitedbyavailablehardware
CI – Building 3
http://www.gizmodo.in/news/This-Custom-Datacenter-Rack-Has-160-Mac-Minis-Crammed-Inside-of-It/articleshow/19223824.cms
CI – Testing 1
• Unit Tests
• Getas much valueas possible from your Unit Tests.
• Collectingcoveragedata potentiallyprovides you extra
possibilities (e.g. validatingfeaturetogglesetc.)
• Android – Robolectricis your friend. Mocks out the Android
system and effectivelyallowsyou to run directlyagainsta JVM.
No emulatorrequired.
• iOS - xctool,XCTest etc. Requires a full OSX dev environment.
CI – Testing 2
• Integration Tests / UI Tests
• Generalconcerns:
• High levelof maintenancerequired.
• Testing business logic through the UI.
• Tests areoftenvery fragile– not alwayssuitable as part of
your automatedvalidationprocess.
• In a lot of cases, this is betterserved by manual/usability
testing.
CI – Testing 3
• Approaches
• Calabash, Appium etc – need to be compiled into your test
builds. Theoreticallytests can be cross-platform. Little
knowledgeof app architecturerequired.
• Native frameworks(UI Automation/UI Automator)– Tests
are platform specific. Some app knowledge required.
• Code-level integration – Calling test methods directly. Test
methods provided as part ofdevelopment. High-levelof app
knowledgerequired.
From CI to CD
• Through CI we can validatethat our app is buildable and that
our tests were successful.
• Your main development/trunk branch should bepotentially
releasableat any stage.
• Store Distribution
• Apple and Googleboth provide the platformfor deploying
to users.
• Reviewprocesses etc. can delay/blockthe process.
• Building and publishing store/marketingassets.
• Can we continuously deliverto the Stores?
• GooglePlayStore
• Provides public API’s and DeveloperConsole for almost all
functionality.
• Alpha/Beta testingchannels.
• Stagedrollouts – scale up any single releasefrom 1% to 100%.
• Rollouts can be halted atany stage.
• Reviewprocess usually fairly light. Afterdeliveringa build you
have a high levelof control overhow it is deployed.
CD – Play Store
CD – App Store
• Apple App Store
• Provides NO public API’s. (Although tools likefastlaneexist).
• TestflightBeta testing.
• NO Stagedrollouts.
• Heavy reviewprocess. App must be reviewedbefore it is
availablefor beta testing.
• Afterdelivering a build you have little control overhow it is
deployed.
Concerns
• App update cycles.
• Users update more rapidly with high frequency apps –
need tosupport fewerliveversions.
• Apps with low frequency usage oftenneed to support
many more live versions.
• OS update cycles
• iOS - ~70% of users update to latestOS within 2 weeks.
• Android – Much more fragmented– likelyto require
supporting 5-6 majorOS versions at any one time.
Condor
• Condor - Our in-house CI/CD Service using Jenkins as the
backend CI server.
• Condor-Backend auto-generatesJenkins jobs based on project
configurationstored in repo alongside code-base.
• Condor-Client configuresthe desired build environment, runs
build scripts and reports results back to Jenkins/Sonar etc.
• All build scripts are treatedas code – versioned and validated
the same as any other change.
Further Reading
• Duvall, Paul M (2007) – ContinuousIntegration.Improving
SoftwareQualityand ReducingRisk. Addison-Wesley.
• Humble,Jez; Farley, David (2010) – ContinuousDelivery:
ReliableSoftwareReleases ThroughBuild,Test and
Deployment Automation.Addison-Wesley.
• ThoughtworksContinuous Deliverywebinar
serieshttp://www.thoughtworks.com/products/webinars/introduction-continuous-
delivery
• The Guardian: DeliveringContinuous Delivery,continuously
https://www.theguardian.com/info/developer-blog/2015/jan/05/delivering-continuous-
delivery-continuously
quartermile one
15 lauriston place
edinburgh eh3 9en
tel: +44 (0)131 252 5353
fax: +44 (0)131 252 5354
follow us @skyscanner
join us on
facebook.com/skyscanner
Thank you!
Phillip Wheatley
phillip.wheatley@skyscanner.net
@convict7421

Weitere ähnliche Inhalte

Was ist angesagt?

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform  Suryakiran Kasturi & Akhil KumarAdopting agile in an embedded platform  Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil KumarXP Conference India
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systemsLen Bass
 
Scaling Up Continuous Deployment
Scaling Up Continuous DeploymentScaling Up Continuous Deployment
Scaling Up Continuous DeploymentTimothy Fitz
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryMandi Walls
 
Legal and Practical Concerns with Software Development
Legal and Practical Concerns with Software DevelopmentLegal and Practical Concerns with Software Development
Legal and Practical Concerns with Software DevelopmentRogue Wave Software
 
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast Compuware
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous IntegrationChristopher Read
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewSynopsys Software Integrity Group
 
Agile Strategies for Traditional Software Development Teams
Agile Strategies for Traditional Software Development TeamsAgile Strategies for Traditional Software Development Teams
Agile Strategies for Traditional Software Development TeamsTechWell
 
Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?Perforce
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsCompuware
 
Deployability
DeployabilityDeployability
DeployabilityLen Bass
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsDicodingEvent
 
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...Synopsys Software Integrity Group
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deploymentMartijn van der Kamp
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessPerforce
 
Continuous delivery of embedded systems embedded meetup
Continuous delivery of embedded systems   embedded meetupContinuous delivery of embedded systems   embedded meetup
Continuous delivery of embedded systems embedded meetupMike Long
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and BuildsBhavin Javia
 

Was ist angesagt? (20)

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform  Suryakiran Kasturi & Akhil KumarAdopting agile in an embedded platform  Suryakiran Kasturi & Akhil Kumar
Adopting agile in an embedded platform Suryakiran Kasturi & Akhil Kumar
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systems
 
Scaling Up Continuous Deployment
Scaling Up Continuous DeploymentScaling Up Continuous Deployment
Scaling Up Continuous Deployment
 
IP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous DeliveryIP Expo Nordic: Successful Practices for Continuous Delivery
IP Expo Nordic: Successful Practices for Continuous Delivery
 
Legal and Practical Concerns with Software Development
Legal and Practical Concerns with Software DevelopmentLegal and Practical Concerns with Software Development
Legal and Practical Concerns with Software Development
 
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast
Go Fast, Go Safe, Go on Vacation - Compuware ISPW Webcast
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous Integration
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An Overview
 
DevOps intro
DevOps introDevOps intro
DevOps intro
 
Agile Strategies for Traditional Software Development Teams
Agile Strategies for Traditional Software Development TeamsAgile Strategies for Traditional Software Development Teams
Agile Strategies for Traditional Software Development Teams
 
Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
 
Deployability
DeployabilityDeployability
Deployability
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
 
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...
Flight East 2018 Presentation–A DevOps State of Mind: Continuous Security wit...
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
Continuous delivery of embedded systems embedded meetup
Continuous delivery of embedded systems   embedded meetupContinuous delivery of embedded systems   embedded meetup
Continuous delivery of embedded systems embedded meetup
 
Continuous Integration and Builds
Continuous Integration and BuildsContinuous Integration and Builds
Continuous Integration and Builds
 

Ähnlich wie Towards Continuous Delivery in Mobile Apps

Devops phase-1
Devops phase-1Devops phase-1
Devops phase-1G R VISHAL
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous IntegrationGeff Henderson Chang
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HEREStefan Verhoeff
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015Henry Huang
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneDashlane
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker, Inc.
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOpsMoataz Mahmoud
 
Harman deepak v - agile on steriod - dev ops led transformation
Harman  deepak v - agile on steriod - dev ops led transformationHarman  deepak v - agile on steriod - dev ops led transformation
Harman deepak v - agile on steriod - dev ops led transformationXebia India
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
Quality in dev ops east 2017
Quality in dev ops east 2017Quality in dev ops east 2017
Quality in dev ops east 2017Amir Rozenberg
 
MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environmentMatanGoren
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications FasterAdam Culp
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA NITIN GUPTA
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deploymentLilia Sfaxi
 

Ähnlich wie Towards Continuous Delivery in Mobile Apps (20)

Devops phase-1
Devops phase-1Devops phase-1
Devops phase-1
 
Cloud for Agile Testing - Burak Koyuncu
Cloud for Agile Testing - Burak KoyuncuCloud for Agile Testing - Burak Koyuncu
Cloud for Agile Testing - Burak Koyuncu
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HERE
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Docker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker CloudDocker Meetup at Docker HQ: Docker Cloud
Docker Meetup at Docker HQ: Docker Cloud
 
Testing in the new age of DevOps
Testing in the new age of DevOpsTesting in the new age of DevOps
Testing in the new age of DevOps
 
Harman deepak v - agile on steriod - dev ops led transformation
Harman  deepak v - agile on steriod - dev ops led transformationHarman  deepak v - agile on steriod - dev ops led transformation
Harman deepak v - agile on steriod - dev ops led transformation
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Quality in dev ops east 2017
Quality in dev ops east 2017Quality in dev ops east 2017
Quality in dev ops east 2017
 
MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environment
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications Faster
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
 
Software Engineering - chp8- deployment
Software Engineering - chp8- deploymentSoftware Engineering - chp8- deployment
Software Engineering - chp8- deployment
 
Computer Fundamentals
Computer FundamentalsComputer Fundamentals
Computer Fundamentals
 
Computer fundamental
Computer fundamentalComputer fundamental
Computer fundamental
 

Kürzlich hochgeladen

Graphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesGraphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesDIPIKA83
 
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....santhyamuthu1
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...sahb78428
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxjasonsedano2
 
Design of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxDesign of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxYogeshKumarKJMIT
 
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...Sean Meyn
 
Multicomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfMulticomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfGiovanaGhasary1
 
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
Engineering Mechanics  Chapter 5  Equilibrium of a Rigid BodyEngineering Mechanics  Chapter 5  Equilibrium of a Rigid Body
Engineering Mechanics Chapter 5 Equilibrium of a Rigid BodyAhmadHajasad2
 
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfRenewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfodunowoeminence2019
 
The relationship between iot and communication technology
The relationship between iot and communication technologyThe relationship between iot and communication technology
The relationship between iot and communication technologyabdulkadirmukarram03
 
me3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Ame3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Akarthi keyan
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...amrabdallah9
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical SensorTanvir Moin
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxKISHAN KUMAR
 
A Seminar on Electric Vehicle Software Simulation
A Seminar on Electric Vehicle Software SimulationA Seminar on Electric Vehicle Software Simulation
A Seminar on Electric Vehicle Software SimulationMohsinKhanA
 
Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Bahzad5
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfNaveenVerma126
 

Kürzlich hochgeladen (20)

Graphics Primitives and CG Display Devices
Graphics Primitives and CG Display DevicesGraphics Primitives and CG Display Devices
Graphics Primitives and CG Display Devices
 
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....
SATELITE COMMUNICATION UNIT 1 CEC352 REGULATION 2021 PPT BASICS OF SATELITE ....
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...
 
Présentation IIRB 2024 Chloe Dufrane.pdf
Présentation IIRB 2024 Chloe Dufrane.pdfPrésentation IIRB 2024 Chloe Dufrane.pdf
Présentation IIRB 2024 Chloe Dufrane.pdf
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptx
 
Design of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxDesign of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptx
 
Lecture 2 .pptx
Lecture 2                            .pptxLecture 2                            .pptx
Lecture 2 .pptx
 
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...
Quasi-Stochastic Approximation: Algorithm Design Principles with Applications...
 
Multicomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfMulticomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdf
 
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
Engineering Mechanics  Chapter 5  Equilibrium of a Rigid BodyEngineering Mechanics  Chapter 5  Equilibrium of a Rigid Body
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
 
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdfRenewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
Renewable Energy & Entrepreneurship Workshop_21Feb2024.pdf
 
The relationship between iot and communication technology
The relationship between iot and communication technologyThe relationship between iot and communication technology
The relationship between iot and communication technology
 
me3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Ame3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part A
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
 
計劃趕得上變化
計劃趕得上變化計劃趕得上變化
計劃趕得上變化
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical Sensor
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptx
 
A Seminar on Electric Vehicle Software Simulation
A Seminar on Electric Vehicle Software SimulationA Seminar on Electric Vehicle Software Simulation
A Seminar on Electric Vehicle Software Simulation
 
Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)Lecture 1: Basics of trigonometry (surveying)
Lecture 1: Basics of trigonometry (surveying)
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
 

Towards Continuous Delivery in Mobile Apps

  • 1. 18 September, 2015 Towards Continuous Delivery in Native Mobile Apps
  • 2. “ContinuousDelivery is a softwaredisciplinewhere you build softwarein sucha way thatthe softwarecan bereleased to productionat anytime” – Martin Fowler • Discipline – CD is not just a set of tools, it’s a practice. • Build – The development/testcycle. • Release– Distributing your softwareto users. • Production – Softwareis in the hands of your users. What is Continuous Delivery?
  • 3. Continuous Integration “Askingexperts to do boringand repetitive,and yet technically demandingtasksis the mostcertainwayof ensuringhumanerror thatwe canthink of, shortof sleep deprivation,or inebriation.”– David Farley • CI is the process ofintegrating, building,and testing code within the developmentenvironment. • CI adds value from the automationof these processes. • There are both cultural and technical considerations – these must go hand-in-hand.
  • 4. CI – Integration 1 • Everything should be under Source Control – This includes code, tests, build scripts etc. • A well-definedbranching strategyis vitalas the number of developers grows. • Adhering to a branch naming strategyalso brings extra benefits (i.e. when auditing codebase,generatingchangelogsetc.). https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
  • 5. CI – Integration 2 • We use git – both github and gitlab. • Both these platformsprovide some form of pre-merge validation(i.e. pull request / mergerequest etc.). • Product must be buildable and alltests must pass. • Rapid feedback cycle to developers(test results, static analysis etc.). https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
  • 6. CI – Building 1 • Building your app should be triggeredautomaticallyon every change. • Android – LearnGradle. Eventhough Android Studio givesyou this out of the box, developersshould spend time understanding how Gradle actuallyworks. Very flexible and easilyextendable. • iOS – Trickier.Developersshould understand how to build their app outside of Xcode. Heavy dependence on an IDE makes automationmuch more difficult. (Availabletools:xctool, fastlane etc.)
  • 7. CI – Building 2 • Takecareof your build environments • Android– Can build on most platforms (Linux, Windows, OSX) • NoUI • Lightweightenvironment • Virtualisationand/orcloud–nolimittoscale • iOS – Requires full OSX environment + Xcode. Possible to virtualise, but only on Mac hardware. • FullUI • Comparativelyheavy+fragileenvironment • Novirtualisation–scalinglimitedbyavailablehardware
  • 8. CI – Building 3 http://www.gizmodo.in/news/This-Custom-Datacenter-Rack-Has-160-Mac-Minis-Crammed-Inside-of-It/articleshow/19223824.cms
  • 9. CI – Testing 1 • Unit Tests • Getas much valueas possible from your Unit Tests. • Collectingcoveragedata potentiallyprovides you extra possibilities (e.g. validatingfeaturetogglesetc.) • Android – Robolectricis your friend. Mocks out the Android system and effectivelyallowsyou to run directlyagainsta JVM. No emulatorrequired. • iOS - xctool,XCTest etc. Requires a full OSX dev environment.
  • 10. CI – Testing 2 • Integration Tests / UI Tests • Generalconcerns: • High levelof maintenancerequired. • Testing business logic through the UI. • Tests areoftenvery fragile– not alwayssuitable as part of your automatedvalidationprocess. • In a lot of cases, this is betterserved by manual/usability testing.
  • 11. CI – Testing 3 • Approaches • Calabash, Appium etc – need to be compiled into your test builds. Theoreticallytests can be cross-platform. Little knowledgeof app architecturerequired. • Native frameworks(UI Automation/UI Automator)– Tests are platform specific. Some app knowledge required. • Code-level integration – Calling test methods directly. Test methods provided as part ofdevelopment. High-levelof app knowledgerequired.
  • 12. From CI to CD • Through CI we can validatethat our app is buildable and that our tests were successful. • Your main development/trunk branch should bepotentially releasableat any stage. • Store Distribution • Apple and Googleboth provide the platformfor deploying to users. • Reviewprocesses etc. can delay/blockthe process. • Building and publishing store/marketingassets. • Can we continuously deliverto the Stores?
  • 13. • GooglePlayStore • Provides public API’s and DeveloperConsole for almost all functionality. • Alpha/Beta testingchannels. • Stagedrollouts – scale up any single releasefrom 1% to 100%. • Rollouts can be halted atany stage. • Reviewprocess usually fairly light. Afterdeliveringa build you have a high levelof control overhow it is deployed. CD – Play Store
  • 14. CD – App Store • Apple App Store • Provides NO public API’s. (Although tools likefastlaneexist). • TestflightBeta testing. • NO Stagedrollouts. • Heavy reviewprocess. App must be reviewedbefore it is availablefor beta testing. • Afterdelivering a build you have little control overhow it is deployed.
  • 15. Concerns • App update cycles. • Users update more rapidly with high frequency apps – need tosupport fewerliveversions. • Apps with low frequency usage oftenneed to support many more live versions. • OS update cycles • iOS - ~70% of users update to latestOS within 2 weeks. • Android – Much more fragmented– likelyto require supporting 5-6 majorOS versions at any one time.
  • 16. Condor • Condor - Our in-house CI/CD Service using Jenkins as the backend CI server. • Condor-Backend auto-generatesJenkins jobs based on project configurationstored in repo alongside code-base. • Condor-Client configuresthe desired build environment, runs build scripts and reports results back to Jenkins/Sonar etc. • All build scripts are treatedas code – versioned and validated the same as any other change.
  • 17. Further Reading • Duvall, Paul M (2007) – ContinuousIntegration.Improving SoftwareQualityand ReducingRisk. Addison-Wesley. • Humble,Jez; Farley, David (2010) – ContinuousDelivery: ReliableSoftwareReleases ThroughBuild,Test and Deployment Automation.Addison-Wesley. • ThoughtworksContinuous Deliverywebinar serieshttp://www.thoughtworks.com/products/webinars/introduction-continuous- delivery • The Guardian: DeliveringContinuous Delivery,continuously https://www.theguardian.com/info/developer-blog/2015/jan/05/delivering-continuous- delivery-continuously
  • 18. quartermile one 15 lauriston place edinburgh eh3 9en tel: +44 (0)131 252 5353 fax: +44 (0)131 252 5354 follow us @skyscanner join us on facebook.com/skyscanner Thank you! Phillip Wheatley phillip.wheatley@skyscanner.net @convict7421