SlideShare a Scribd company logo
1 of 25
Download to read offline
Build and release
iOS apps using
Fastlane tools
Dmytro Cheverda, iOS engineer
20.10.2018
Fastlane
● Open-source
● Uses public Apple API
● Script based
● Written in Ruby
Why do we needed it?
● Long manual deploy durations
● Certificates and profiles sharing
Old deployment process
1. Version bump
2. Commit
3. Check provisioning profiles
4. Check signing certificates
5. Build
6. Export
7. Upload
How build process works
● Check for valid certificates
● Check for provisioning profiles
● Compile sources
● Sign app with certificate
Essential Fastlane actions
● sigh - provisioning profiles
● cert - signing certificates
● match - sync certificates and profiles between developers
● pem - APNS certificates
● gym - building projects
● deliver - uploading IPA, screenshots, metadata to AppStoreConnect
Fastlane install
Note: works only on mac os
Initial setup
$ fastlane init
Note: you need paid Apple Developer Program to run this properly
Generated Fastlane folder
● Appfile - bundle ID, Apple ID, etc.
● Fastfile - lanes configuration
● Matchfile - git url, Apple ID auth info, etc.
● metadata folder - text files with details for AppStoreConnect
● screenshots folder - stores taken screenshots
Lane configuration
Another lane configuration
More complex lane example
Start a lane
Lane report
Error handling
Additional actions
● run_tests
● swiftlint
● cocoapods
● clear_derived_data
● notification
● Many more can be found here: https://docs.fastlane.tools/actions/
● Or written yourself
Common problems we had
● No access to git repo
● Beta Xcode version selected for development
● Multiple targets
● Wrong provisioning profile used
● UTF-8 encoding not enabled
Ways to improve
● Complete CI/CD
● Automate every possible scenarios ()
Tips and tricks
● Actions can be run as part of lane or independently in Terminal
● Environment variables can be used for default params
● Be aware of default parameters values
● Lanes can be private
● Use to track AppStore metadata in git
● Basic support for Android and crossplatform (ReactNative, Flutter)
● Own actions can be local or submitted to main repo
Many companies use it
Pros and cons
Pros:
● Saves developer time
● Extensible
● Configurable
● Large community
● Good documentation
Cons:
● Sometimes strange errors may take time to fix
Summary
● Build process is speed up to one command
● Certificates and provisioning profiles are shared across the team
● Deployment is unified and machine-independent
● Easy to dive in for new team members
Useful links
● https://docs.fastlane.tools
● https://docs.fastlane.tools/actions/
● https://github.com/fastlane/fastlane
● https://github.com/fastlane/examples
● https://habr.com/company/sberbank/blog/424023/
Thanks!
Q&A

More Related Content

What's hot

DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub ActionsNilesh Gule
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndreas Jakl
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastBartosz Kosarzycki
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Sargis Sargsyan
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with JenkinsMartin Málek
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?Weaveworks
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CDHoang Le
 
Introdução do DEVSECOPS
Introdução do DEVSECOPSIntrodução do DEVSECOPS
Introdução do DEVSECOPSGDGFoz
 
The magic of flutter
The magic of flutterThe magic of flutter
The magic of flutterShady Selim
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfKnoldus Inc.
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architectureJanakiram MSV
 
Why Ranorex
Why RanorexWhy Ranorex
Why RanorexRanorex
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIDavid Hahn
 

What's hot (20)

(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub Actions
 
Flutter
FlutterFlutter
Flutter
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - Introduction
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
12 factor app
12 factor app12 factor app
12 factor app
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
What is Flutter
What is FlutterWhat is Flutter
What is Flutter
 
Introdução do DEVSECOPS
Introdução do DEVSECOPSIntrodução do DEVSECOPS
Introdução do DEVSECOPS
 
Gitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCDGitlab, GitOps & ArgoCD
Gitlab, GitOps & ArgoCD
 
The magic of flutter
The magic of flutterThe magic of flutter
The magic of flutter
 
CD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdfCD using ArgoCD(KnolX).pdf
CD using ArgoCD(KnolX).pdf
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architecture
 
Why Ranorex
Why RanorexWhy Ranorex
Why Ranorex
 
Continuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CIContinuous Integration/Deployment with Gitlab CI
Continuous Integration/Deployment with Gitlab CI
 

Similar to Build and release iOS apps using Fastlane tools

How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentMichelantonio Trizio
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Runwesley chun
 
10 tips for continuous integration
10 tips for continuous integration10 tips for continuous integration
10 tips for continuous integrationVladimir Roudakov
 
Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentdSoluto
 
DevOps for SAP CPI presentation
DevOps for SAP CPI presentationDevOps for SAP CPI presentation
DevOps for SAP CPI presentationDaniel Graversen
 
Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIswesley chun
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
Moodle Development Best Pracitces
Moodle Development Best PracitcesMoodle Development Best Pracitces
Moodle Development Best PracitcesJustin Filip
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Guiding Diffy to the Enterprise land
Guiding Diffy to the Enterprise landGuiding Diffy to the Enterprise land
Guiding Diffy to the Enterprise landDariusz Łuksza
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentationDrew Hannay
 
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
 
Infinite Scale - Introduction to Google App Engine
Infinite Scale - Introduction to Google App EngineInfinite Scale - Introduction to Google App Engine
Infinite Scale - Introduction to Google App EngineMarian Borca
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native DevelopmentManuel Garcia
 
O'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source DocumentationO'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source DocumentationLavaCon
 
How automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processesHow automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processesDaniel Graversen
 

Similar to Build and release iOS apps using Fastlane tools (20)

How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
10 tips for continuous integration
10 tips for continuous integration10 tips for continuous integration
10 tips for continuous integration
 
Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentd
 
DevOps for SAP CPI presentation
DevOps for SAP CPI presentationDevOps for SAP CPI presentation
DevOps for SAP CPI presentation
 
Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIs
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Moodle Development Best Pracitces
Moodle Development Best PracitcesMoodle Development Best Pracitces
Moodle Development Best Pracitces
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Guiding Diffy to the Enterprise land
Guiding Diffy to the Enterprise landGuiding Diffy to the Enterprise land
Guiding Diffy to the Enterprise land
 
Cloud-Native .NET
Cloud-Native .NETCloud-Native .NET
Cloud-Native .NET
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
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
 
SamSegalResume
SamSegalResumeSamSegalResume
SamSegalResume
 
Infinite Scale - Introduction to Google App Engine
Infinite Scale - Introduction to Google App EngineInfinite Scale - Introduction to Google App Engine
Infinite Scale - Introduction to Google App Engine
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native Development
 
O'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source DocumentationO'Leary - Using GitHub for Enterprise and Open Source Documentation
O'Leary - Using GitHub for Enterprise and Open Source Documentation
 
How automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processesHow automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processes
 

More from Wise Engineering

Releasing Elixir/Phoenix Applications
Releasing Elixir/Phoenix ApplicationsReleasing Elixir/Phoenix Applications
Releasing Elixir/Phoenix ApplicationsWise Engineering
 
Transition to Infrastructure as Code
Transition to Infrastructure as CodeTransition to Infrastructure as Code
Transition to Infrastructure as CodeWise Engineering
 
Local development environment evolution
Local development environment evolutionLocal development environment evolution
Local development environment evolutionWise Engineering
 
Scheduled delivery of a large amount of emails
Scheduled delivery of a large amount of emailsScheduled delivery of a large amount of emails
Scheduled delivery of a large amount of emailsWise Engineering
 
Launch safely with Feature Flags
Launch safely with Feature FlagsLaunch safely with Feature Flags
Launch safely with Feature FlagsWise Engineering
 
Search query assistance. Autosuggestion
Search query assistance. AutosuggestionSearch query assistance. Autosuggestion
Search query assistance. AutosuggestionWise Engineering
 

More from Wise Engineering (6)

Releasing Elixir/Phoenix Applications
Releasing Elixir/Phoenix ApplicationsReleasing Elixir/Phoenix Applications
Releasing Elixir/Phoenix Applications
 
Transition to Infrastructure as Code
Transition to Infrastructure as CodeTransition to Infrastructure as Code
Transition to Infrastructure as Code
 
Local development environment evolution
Local development environment evolutionLocal development environment evolution
Local development environment evolution
 
Scheduled delivery of a large amount of emails
Scheduled delivery of a large amount of emailsScheduled delivery of a large amount of emails
Scheduled delivery of a large amount of emails
 
Launch safely with Feature Flags
Launch safely with Feature FlagsLaunch safely with Feature Flags
Launch safely with Feature Flags
 
Search query assistance. Autosuggestion
Search query assistance. AutosuggestionSearch query assistance. Autosuggestion
Search query assistance. Autosuggestion
 

Build and release iOS apps using Fastlane tools

  • 1. Build and release iOS apps using Fastlane tools Dmytro Cheverda, iOS engineer 20.10.2018
  • 2. Fastlane ● Open-source ● Uses public Apple API ● Script based ● Written in Ruby
  • 3. Why do we needed it? ● Long manual deploy durations ● Certificates and profiles sharing
  • 4. Old deployment process 1. Version bump 2. Commit 3. Check provisioning profiles 4. Check signing certificates 5. Build 6. Export 7. Upload
  • 5. How build process works ● Check for valid certificates ● Check for provisioning profiles ● Compile sources ● Sign app with certificate
  • 6. Essential Fastlane actions ● sigh - provisioning profiles ● cert - signing certificates ● match - sync certificates and profiles between developers ● pem - APNS certificates ● gym - building projects ● deliver - uploading IPA, screenshots, metadata to AppStoreConnect
  • 8. Initial setup $ fastlane init Note: you need paid Apple Developer Program to run this properly
  • 9. Generated Fastlane folder ● Appfile - bundle ID, Apple ID, etc. ● Fastfile - lanes configuration ● Matchfile - git url, Apple ID auth info, etc. ● metadata folder - text files with details for AppStoreConnect ● screenshots folder - stores taken screenshots
  • 12. More complex lane example
  • 16. Additional actions ● run_tests ● swiftlint ● cocoapods ● clear_derived_data ● notification ● Many more can be found here: https://docs.fastlane.tools/actions/ ● Or written yourself
  • 17. Common problems we had ● No access to git repo ● Beta Xcode version selected for development ● Multiple targets ● Wrong provisioning profile used ● UTF-8 encoding not enabled
  • 18. Ways to improve ● Complete CI/CD ● Automate every possible scenarios ()
  • 19. Tips and tricks ● Actions can be run as part of lane or independently in Terminal ● Environment variables can be used for default params ● Be aware of default parameters values ● Lanes can be private ● Use to track AppStore metadata in git ● Basic support for Android and crossplatform (ReactNative, Flutter) ● Own actions can be local or submitted to main repo
  • 21. Pros and cons Pros: ● Saves developer time ● Extensible ● Configurable ● Large community ● Good documentation Cons: ● Sometimes strange errors may take time to fix
  • 22. Summary ● Build process is speed up to one command ● Certificates and provisioning profiles are shared across the team ● Deployment is unified and machine-independent ● Easy to dive in for new team members
  • 23. Useful links ● https://docs.fastlane.tools ● https://docs.fastlane.tools/actions/ ● https://github.com/fastlane/fastlane ● https://github.com/fastlane/examples ● https://habr.com/company/sberbank/blog/424023/
  • 25. Q&A