SlideShare una empresa de Scribd logo
1 de 29
Introduction to Bitrise
Hendrik Haandrikman
VP of Growth
rik@bitrise.io
Hhaandr
Introduction and iOS onboarding
Tamas Bazsonyi
Global head of Support
Bazsca
THANK YOU
Enabling mobile app
developers to do their
best work
What do we do?
Bitrise automates
mobile app integration,
testing and deployment
to make developers
more consistent, faster
and freeing up their
time and talents for the
work that matters.
Bitrise Founding
Founded in 2014 by app
development agency
alumni (Bitfall), looking
to improve their own
process. Y Combinator
backed with $ 3.5M in
funding.
By the numbers
100K developers
15K+ unique apps
1M+ builds / month
50% of mobile unicorns
Headquarters
Headquartered in
Budapest, Hungary,
office in London, remote
in USA, France & more.
Bitrise and
Unicorns
Many of the world’s
most highly valued
startups use Bitrise
to maximize
developer efficiency,
minimize time
wasted onboarding
and ensure that
developer time is
spent on tasks that
bring the company a
competitive
advantage
Bitrise and
Japan
Japan is our #2
market worldwide..
Over 20% of our first
1.000 sign-ups
originated there and
today, some of
Japan’s most well-
known developers
build on Bitrise.
日本での採用開始!
Budapest, HU Remote (JP?)London, UK
Adding a new iOS project
Scanner is open source:
https://github.com/bitrise-core/bitrise-init
Used in the Step:
https://github.com/bitrise-steplib/steps-project-scanner
Used in the plugin:
https://github.com/bitrise-core/bitrise-plugins-init
iOS code signing
codesigndoc
You need the development
certificate and provisioning
profile even for App Store
signing - this is one of the most
common issues
Use our codesigndoc open
source tool
Analyses the project and
collects signing files from your
Mac
Guide: https://devcenter.bitrise.io/code-signing/ios-
code-signing/collecting-files-with-codesigndoc/
iOS Auto
Provisioning
Step analyses the project
during the build
Connects to Apple Developer
Portal, generates the right
profile(s) and downloads them
Needs the certificate (private
key) - codesigndoc can be
used for getting that!
Guide: https://devcenter.bitrise.io/code-signing/ios-
code-signing/ios-auto-provisioning/
Make iOS Builds Faster
Faster iOS Builds on Bitrise.io
Viktor Benei
viktor.benei@bitrise.io
Tokyo, 2019 March
Quickest -> More complex
Starting from easiest, which takes the least amount of
time to configure, progressing towards more advanced
and complex techniques which might require project or
more significant configuration changes.
Elite machines
No change required anywhere in the config or in your
project.
Usually 20-50% faster (depends on the project, you get 2x
the CPU and RAM but not network or I/O).
Linux stack
Use Linux stack when possible - newer generation CPUs
compared to the aging MacPROs and more RAM.
SPM based projects, e.g. Swift server apps or CLIs.
Cache steps
https://devcenter.bitrise.io/caching/about-caching/
Cache:Pull and Cache:Push
Use Bitrise steps, those have built in support. If you use
another tool instead, like fastlane, it works, but you'll have
to specify the dirs/files to cache.
Another example: CocoaPods & Carthage steps
(dependency management steps in general)
Keep the Cache small
If you set custom Cache paths make sure you only
include the files & dirs you need, to keep the cache size
small. Smaller cache is faster (download, uncompress,
compress, upload).
You can check the cache content on Settings tab, you
can download the caches from there too for inspection.
Parallel build
- https://devcenter.bitrise.io/builds/triggering-
builds/trigger-multiple-workflows/
- https://blog.bitrise.io/start-multiple-builds-with-the-
same-trigger
Needs 2+ concurrencies.
Today it uses Steps, lower level support is coming soon.
Parallel build
Few ideas:
- Do Xcode Test, Xcode Analyze and Swift Lint in parallel
- Split your Xcode Test into multiple Targets/Schemes
- Run Test and Archive for internal QA in parallel
Bitrise Device Testing feature
Use Bitrise built in (Firebase) Device Testing if you want
to run the test on multiple devices.
https://devcenter.bitrise.io/testing/device-testing-for-ios/
Carthage - GitHub Access Token
GitHub
Personal
Access
Token
COMPILER_INDEX_STORE_ENABLE
=NO
https://twitter.com/steipete/status/1100404024224804871
- xcode-test:
inputs:
- xcodebuild_test_options: COMPILER_INDEX_STORE_ENABLE=NO
Only helps Debug/non release builds.
Use latest Bitrise step versions
We add both reliability and performance optimisations.
E.g. latest Xcode Test step uses headless mode by
default, which can make the tests significantly faster.
When deploying multiple .ipa files (e.g. one for ad-hoc
and another one for app-store release) use only one
Xcode Archive & Export for iOS
(https://www.bitrise.io/integrations/steps/xcode-archive)
step and then the Export iOS and tvOS Xcode archive
step (https://www.bitrise.io/integrations/steps/export-
xcarchive) for additional .ipas.
Multiple IPAs in the same build
Git Clone: set fetch size to 1/10/20
If the history isn't enough, e.g. PR build, the step will
automatically fetch more. For commit based builds it can
save a lot of time.
Clone Config > Limit fetching to the specified number
of commits
- If most of your builds are PR builds with multiple commits in it,
set it to 10-20 (average commit length in your PRs).
- You can’t use this if you depend on the whole git history to
be available, e.g. for tagging, that’s why this isn’t the default.
Boot the iOS Simulator at the start of the build, so that it
will be booted & ready by the time you run your tests in it.
Our Xcode Test step has a related optimization: it starts
to boot the simulator before it'd compile & run the test.
Pre-boot iOS Simulator
Remove unused/unnecessary steps.
E.g. use GitHub protected branch & enable Require branches to
be up to date before merging to not to allow push to master (and
make sure you enable Pull Request builds on Bitrise and require
the /pr status check on GitHub), then remove the Test steps from
the deploy workflow as builds will have to go through PR first. This
way the PR can only be merged if it already passed the tests*.
*Bitrise PR build tests the pre-merged code, merges the PR source into its target
during the build to test the code state after merge.
Remove unnecessary steps
Collection of tips
- https://devcenter.bitrise.io/tips-and-tricks/optimize-
your-build-times/
- Track function compilation time:
http://khanlou.com/2016/12/guarding-against-long-
compiles/
- https://github.com/fastred/Optimizing-Swift-Build-
Times
- https://medium.com/@bitrise/60-faster-builds-force-
xcode-to-use-caching-on-bitrise-af8979ca39a6
Thank you!
Twitter: @viktorbenei
I’ll share the slides on my Twitter.

Más contenido relacionado

La actualidad más candente

Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなどJakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなどオラクルエンジニア通信
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜Taiji Tsuchiya
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현noerror
 
あなたの知らないAzure ~OpenStackと共存する冴えたやり方~
あなたの知らないAzure  ~OpenStackと共存する冴えたやり方~あなたの知らないAzure  ~OpenStackと共存する冴えたやり方~
あなたの知らないAzure ~OpenStackと共存する冴えたやり方~Toru Makabe
 
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...Amazon Web Services
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Kazuki Nakajima
 
게임기획자 직무 소개
게임기획자 직무 소개게임기획자 직무 소개
게임기획자 직무 소개Sunnyrider
 
Kubernete Gateway APIとAmazon VPC Lattice.pptx
Kubernete Gateway APIとAmazon VPC Lattice.pptxKubernete Gateway APIとAmazon VPC Lattice.pptx
Kubernete Gateway APIとAmazon VPC Lattice.pptxssuser34f6a5
 
magmaのトレーニングコースを受講してみた
magmaのトレーニングコースを受講してみたmagmaのトレーニングコースを受講してみた
magmaのトレーニングコースを受講してみたYohei Motomura
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめTetsuya Hasegawa
 
MSBuild + Git + Jenkins
MSBuild + Git + JenkinsMSBuild + Git + Jenkins
MSBuild + Git + Jenkins선협 이
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance상현 조
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
Deploying Confluent Platform for Production
Deploying Confluent Platform for ProductionDeploying Confluent Platform for Production
Deploying Confluent Platform for Productionconfluent
 

La actualidad más candente (20)

Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなどJakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현
 
あなたの知らないAzure ~OpenStackと共存する冴えたやり方~
あなたの知らないAzure  ~OpenStackと共存する冴えたやり方~あなたの知らないAzure  ~OpenStackと共存する冴えたやり方~
あなたの知らないAzure ~OpenStackと共存する冴えたやり方~
 
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...
Building a World in the Clouds: MMO Architecture on AWS (MBL304) | AWS re:Inv...
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法Apexで作成したrest apiをしっかり保護する方法
Apexで作成したrest apiをしっかり保護する方法
 
게임기획자 직무 소개
게임기획자 직무 소개게임기획자 직무 소개
게임기획자 직무 소개
 
Kubernete Gateway APIとAmazon VPC Lattice.pptx
Kubernete Gateway APIとAmazon VPC Lattice.pptxKubernete Gateway APIとAmazon VPC Lattice.pptx
Kubernete Gateway APIとAmazon VPC Lattice.pptx
 
magmaのトレーニングコースを受講してみた
magmaのトレーニングコースを受講してみたmagmaのトレーニングコースを受講してみた
magmaのトレーニングコースを受講してみた
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ
 
MSBuild + Git + Jenkins
MSBuild + Git + JenkinsMSBuild + Git + Jenkins
MSBuild + Git + Jenkins
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
Deploying Confluent Platform for Production
Deploying Confluent Platform for ProductionDeploying Confluent Platform for Production
Deploying Confluent Platform for Production
 

Similar a Bitrise: Make iOS Builds Faster - Tokyo 2019 March - Cookpad meetup

Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetup
Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetupBitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetup
Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetupViktor Benei
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web ApplicationMichael Choi
 
Automation in iOS development
Automation in iOS developmentAutomation in iOS development
Automation in iOS developmentCong Nguyen
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metricsAnna Migas
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015gjuljo
 
Improving Drupal Performances
Improving Drupal PerformancesImproving Drupal Performances
Improving Drupal PerformancesVladimir Ilic
 
Sydney mule soft meetup #8 1 August 2019 - all slides
Sydney mule soft meetup #8   1 August 2019 - all slidesSydney mule soft meetup #8   1 August 2019 - all slides
Sydney mule soft meetup #8 1 August 2019 - all slidesRoyston Lobo
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor appRavi Okade
 
The New IT - Your Milestone Plan
The New IT - Your Milestone Plan The New IT - Your Milestone Plan
The New IT - Your Milestone Plan WSO2
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native DevelopmentManuel Garcia
 
Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021NeerajKumar1965
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Vadym Kazulkin
 
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
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsOmid Vahdaty
 
The New IT - Your Milestone Plan
The New IT -  Your Milestone PlanThe New IT -  Your Milestone Plan
The New IT - Your Milestone PlanWSO2
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - shorthmalphettes
 

Similar a Bitrise: Make iOS Builds Faster - Tokyo 2019 March - Cookpad meetup (20)

Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetup
Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetupBitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetup
Bitrise: How to make iOS builds faster - Tokyo 2019 March - Eureka meetup
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
Automation in iOS development
Automation in iOS developmentAutomation in iOS development
Automation in iOS development
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metrics
 
Bluemix DevOps Services
Bluemix DevOps Services Bluemix DevOps Services
Bluemix DevOps Services
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
 
Improving Drupal Performances
Improving Drupal PerformancesImproving Drupal Performances
Improving Drupal Performances
 
Sydney mule soft meetup #8 1 August 2019 - all slides
Sydney mule soft meetup #8   1 August 2019 - all slidesSydney mule soft meetup #8   1 August 2019 - all slides
Sydney mule soft meetup #8 1 August 2019 - all slides
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
 
The New IT - Your Milestone Plan
The New IT - Your Milestone Plan The New IT - Your Milestone Plan
The New IT - Your Milestone Plan
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native Development
 
Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021Nyc mule soft_meetup_13_march_2021
Nyc mule soft_meetup_13_march_2021
 
Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...Measure and Increase Developer Productivity with Help of Serverless at Server...
Measure and Increase Developer Productivity with Help of Serverless at Server...
 
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
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
The New IT - Your Milestone Plan
The New IT -  Your Milestone PlanThe New IT -  Your Milestone Plan
The New IT - Your Milestone Plan
 
Sam segal resume
Sam segal resumeSam segal resume
Sam segal resume
 
Mobile Apps CI
Mobile Apps CIMobile Apps CI
Mobile Apps CI
 
Yatoto-technical
Yatoto-technicalYatoto-technical
Yatoto-technical
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - short
 

Último

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
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
 
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
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
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
 
🐬 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
 
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
 

Último (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
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
 
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
 
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...
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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...
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 

Bitrise: Make iOS Builds Faster - Tokyo 2019 March - Cookpad meetup

  • 1. Introduction to Bitrise Hendrik Haandrikman VP of Growth rik@bitrise.io Hhaandr Introduction and iOS onboarding Tamas Bazsonyi Global head of Support Bazsca
  • 3. Enabling mobile app developers to do their best work What do we do? Bitrise automates mobile app integration, testing and deployment to make developers more consistent, faster and freeing up their time and talents for the work that matters. Bitrise Founding Founded in 2014 by app development agency alumni (Bitfall), looking to improve their own process. Y Combinator backed with $ 3.5M in funding. By the numbers 100K developers 15K+ unique apps 1M+ builds / month 50% of mobile unicorns Headquarters Headquartered in Budapest, Hungary, office in London, remote in USA, France & more.
  • 4. Bitrise and Unicorns Many of the world’s most highly valued startups use Bitrise to maximize developer efficiency, minimize time wasted onboarding and ensure that developer time is spent on tasks that bring the company a competitive advantage
  • 5. Bitrise and Japan Japan is our #2 market worldwide.. Over 20% of our first 1.000 sign-ups originated there and today, some of Japan’s most well- known developers build on Bitrise.
  • 7. Adding a new iOS project Scanner is open source: https://github.com/bitrise-core/bitrise-init Used in the Step: https://github.com/bitrise-steplib/steps-project-scanner Used in the plugin: https://github.com/bitrise-core/bitrise-plugins-init
  • 8. iOS code signing codesigndoc You need the development certificate and provisioning profile even for App Store signing - this is one of the most common issues Use our codesigndoc open source tool Analyses the project and collects signing files from your Mac Guide: https://devcenter.bitrise.io/code-signing/ios- code-signing/collecting-files-with-codesigndoc/
  • 9. iOS Auto Provisioning Step analyses the project during the build Connects to Apple Developer Portal, generates the right profile(s) and downloads them Needs the certificate (private key) - codesigndoc can be used for getting that! Guide: https://devcenter.bitrise.io/code-signing/ios- code-signing/ios-auto-provisioning/
  • 10. Make iOS Builds Faster Faster iOS Builds on Bitrise.io Viktor Benei viktor.benei@bitrise.io Tokyo, 2019 March
  • 11. Quickest -> More complex Starting from easiest, which takes the least amount of time to configure, progressing towards more advanced and complex techniques which might require project or more significant configuration changes.
  • 12. Elite machines No change required anywhere in the config or in your project. Usually 20-50% faster (depends on the project, you get 2x the CPU and RAM but not network or I/O).
  • 13. Linux stack Use Linux stack when possible - newer generation CPUs compared to the aging MacPROs and more RAM. SPM based projects, e.g. Swift server apps or CLIs.
  • 14. Cache steps https://devcenter.bitrise.io/caching/about-caching/ Cache:Pull and Cache:Push Use Bitrise steps, those have built in support. If you use another tool instead, like fastlane, it works, but you'll have to specify the dirs/files to cache. Another example: CocoaPods & Carthage steps (dependency management steps in general)
  • 15. Keep the Cache small If you set custom Cache paths make sure you only include the files & dirs you need, to keep the cache size small. Smaller cache is faster (download, uncompress, compress, upload). You can check the cache content on Settings tab, you can download the caches from there too for inspection.
  • 16. Parallel build - https://devcenter.bitrise.io/builds/triggering- builds/trigger-multiple-workflows/ - https://blog.bitrise.io/start-multiple-builds-with-the- same-trigger Needs 2+ concurrencies. Today it uses Steps, lower level support is coming soon.
  • 17.
  • 18. Parallel build Few ideas: - Do Xcode Test, Xcode Analyze and Swift Lint in parallel - Split your Xcode Test into multiple Targets/Schemes - Run Test and Archive for internal QA in parallel
  • 19. Bitrise Device Testing feature Use Bitrise built in (Firebase) Device Testing if you want to run the test on multiple devices. https://devcenter.bitrise.io/testing/device-testing-for-ios/
  • 20. Carthage - GitHub Access Token GitHub Personal Access Token
  • 22. Use latest Bitrise step versions We add both reliability and performance optimisations. E.g. latest Xcode Test step uses headless mode by default, which can make the tests significantly faster.
  • 23. When deploying multiple .ipa files (e.g. one for ad-hoc and another one for app-store release) use only one Xcode Archive & Export for iOS (https://www.bitrise.io/integrations/steps/xcode-archive) step and then the Export iOS and tvOS Xcode archive step (https://www.bitrise.io/integrations/steps/export- xcarchive) for additional .ipas. Multiple IPAs in the same build
  • 24. Git Clone: set fetch size to 1/10/20 If the history isn't enough, e.g. PR build, the step will automatically fetch more. For commit based builds it can save a lot of time. Clone Config > Limit fetching to the specified number of commits - If most of your builds are PR builds with multiple commits in it, set it to 10-20 (average commit length in your PRs). - You can’t use this if you depend on the whole git history to be available, e.g. for tagging, that’s why this isn’t the default.
  • 25. Boot the iOS Simulator at the start of the build, so that it will be booted & ready by the time you run your tests in it. Our Xcode Test step has a related optimization: it starts to boot the simulator before it'd compile & run the test. Pre-boot iOS Simulator
  • 26. Remove unused/unnecessary steps. E.g. use GitHub protected branch & enable Require branches to be up to date before merging to not to allow push to master (and make sure you enable Pull Request builds on Bitrise and require the /pr status check on GitHub), then remove the Test steps from the deploy workflow as builds will have to go through PR first. This way the PR can only be merged if it already passed the tests*. *Bitrise PR build tests the pre-merged code, merges the PR source into its target during the build to test the code state after merge. Remove unnecessary steps
  • 27.
  • 28. Collection of tips - https://devcenter.bitrise.io/tips-and-tricks/optimize- your-build-times/ - Track function compilation time: http://khanlou.com/2016/12/guarding-against-long- compiles/ - https://github.com/fastred/Optimizing-Swift-Build- Times - https://medium.com/@bitrise/60-faster-builds-force- xcode-to-use-caching-on-bitrise-af8979ca39a6
  • 29. Thank you! Twitter: @viktorbenei I’ll share the slides on my Twitter.