SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Quernus
Automated Feature
Branch Builds on iOS
Matt Hamilton
matt@quernus.co.uk
@hammertoe
Codemobile 19th April 2017
Who am I?
• 15 years as Technical
Director of web agency
• Python developer
• Now thrust into the world of
mobile
• Contractor, currently lead
of enquos mobile team
What is enquos?
iOS Build Process
• Long
• Arcane
• Requires variations
• Requires certificates / keys
Tools
Github
Fastlane / Gradle
Jenkins
Fabric Beta / Testflight
Slack
Fastlane
• Automates builds
• Allows multiple ‘lanes’ to be built
• Repeatable, scriptable builds
• An ‘API’ for iTunes Connect
• Takes the hassle out of the build and
deployment process
def do_build(scheme, configuration)
increment_build_number(
build_number: ENV['BUILD_ID']
)
profile =
'build/nutrition.mobileprovision'
if configuration == 'Release'
app_identifier =
'com.enquos.nutrition'
display_name =
'enquos nutrition'
set_istest_false
sigh(
app_identifier:
app_identifier,
filename: profile,
)
else
app_identifier =
'com.enquos.Nutrition.alpha.'
+ GIT_BRANCH_ID
display_name =
'enquos nutrition '
+ GIT_BRANCH
sigh(
app_identifier: '*',
adhoc: '1',
filename: profile,
)
end
update_info_plist(
app_identifier: app_identifier,
display_name: display_name,
plist_path:
'Nutrition/Info.plist',
xcodeproj:
'Nutrition/Nutrition.xcodeproj',
)
update_project_provisioning(
xcodeproj:
"Nutrition/Nutrition.xcodeproj",
build_configuration_filter:
".*Nutrition.*",
profile: profile,
)
ipa(
scheme: scheme,
configuration: configuration,
embed: profile,
xcargs:
'-derivedDataPath ./build',
)
end
Jenkins
• Monitors Github and builds a new
app when it sees a change
• Has separate jobs for:
• develop/
• feature/
• store
Quernus
A Typical Flow
Gotchas
• Need to change the App ID for watch app /
extensions too.
• Originally we used completely dynamic app ids,
but gets messy with 3rd party APIs (e.g.
Facebook) that need to know App ID in advance
Quernus
Thanks
Matt Hamilton
matt@quernus.co.uk
@hammertoe

Contenu connexe

Plus de Matt Hamilton

Plus de Matt Hamilton (17)

Plone and Sharepoint
Plone and SharepointPlone and Sharepoint
Plone and Sharepoint
 
How to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication SystemHow to get started with the Pluggable Authentication System
How to get started with the Pluggable Authentication System
 
Plone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy GrailPlone and Single-Sign On - Active Directory and the Holy Grail
Plone and Single-Sign On - Active Directory and the Holy Grail
 
BathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - PloneBathCamp #32 - CMS Smackdown! - Plone
BathCamp #32 - CMS Smackdown! - Plone
 
Mistakes Made and Lessons Learnt Scaling Plone post-Launch
Mistakes Made and Lessons Learnt Scaling Plone post-LaunchMistakes Made and Lessons Learnt Scaling Plone post-Launch
Mistakes Made and Lessons Learnt Scaling Plone post-Launch
 
Plone Symposium East 2011 Keynote: Plone, A Solution not a Product
Plone Symposium East 2011 Keynote: Plone, A Solution not a ProductPlone Symposium East 2011 Keynote: Plone, A Solution not a Product
Plone Symposium East 2011 Keynote: Plone, A Solution not a Product
 
Plone: Event Driven Programming
Plone: Event Driven ProgrammingPlone: Event Driven Programming
Plone: Event Driven Programming
 
Mountain Tops to Archipelagos - The People Behind Plone (+AUDIO)
Mountain Tops to Archipelagos - The People Behind Plone (+AUDIO)Mountain Tops to Archipelagos - The People Behind Plone (+AUDIO)
Mountain Tops to Archipelagos - The People Behind Plone (+AUDIO)
 
The Flexibility of Open Source - Plone in the Public Sector
The Flexibility of Open Source - Plone in the Public SectorThe Flexibility of Open Source - Plone in the Public Sector
The Flexibility of Open Source - Plone in the Public Sector
 
The Flexibility of Open Source: A Case Study of a large Corporate Intranet
The Flexibility of Open Source: A Case Study of a large Corporate IntranetThe Flexibility of Open Source: A Case Study of a large Corporate Intranet
The Flexibility of Open Source: A Case Study of a large Corporate Intranet
 
Plone - Revised Roadmap: Plone 3,4,5 and beyond - Dutch Plone Users Day (+AUDIO)
Plone - Revised Roadmap: Plone 3,4,5 and beyond - Dutch Plone Users Day (+AUDIO)Plone - Revised Roadmap: Plone 3,4,5 and beyond - Dutch Plone Users Day (+AUDIO)
Plone - Revised Roadmap: Plone 3,4,5 and beyond - Dutch Plone Users Day (+AUDIO)
 
An introduction to Zope Page Templates and their use outside of Zope (+Audio)
An introduction to Zope Page Templates and their use outside of Zope (+Audio)An introduction to Zope Page Templates and their use outside of Zope (+Audio)
An introduction to Zope Page Templates and their use outside of Zope (+Audio)
 
Lipstick On a Pig (+Audio)
Lipstick On a Pig (+Audio)Lipstick On a Pig (+Audio)
Lipstick On a Pig (+Audio)
 
Lipstick on a Pig - European Plone Symposium 2009
Lipstick on a Pig - European Plone Symposium 2009Lipstick on a Pig - European Plone Symposium 2009
Lipstick on a Pig - European Plone Symposium 2009
 
Kent Connects: Harnessing Open Source for Shared Services and Partnership Wor...
Kent Connects: Harnessing Open Source for Shared Services and Partnership Wor...Kent Connects: Harnessing Open Source for Shared Services and Partnership Wor...
Kent Connects: Harnessing Open Source for Shared Services and Partnership Wor...
 
NextGen Roadshow Bmex Case Study
NextGen Roadshow Bmex Case StudyNextGen Roadshow Bmex Case Study
NextGen Roadshow Bmex Case Study
 
Open Source and Content Management (+audio)
Open Source and Content Management (+audio)Open Source and Content Management (+audio)
Open Source and Content Management (+audio)
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
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...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Automating Feature Branch Builds on iOS and Android - Codemobile 2017 Lightning talk

  • 1. Quernus Automated Feature Branch Builds on iOS Matt Hamilton matt@quernus.co.uk @hammertoe Codemobile 19th April 2017
  • 2. Who am I? • 15 years as Technical Director of web agency • Python developer • Now thrust into the world of mobile • Contractor, currently lead of enquos mobile team
  • 4. iOS Build Process • Long • Arcane • Requires variations • Requires certificates / keys
  • 6. Fastlane • Automates builds • Allows multiple ‘lanes’ to be built • Repeatable, scriptable builds • An ‘API’ for iTunes Connect • Takes the hassle out of the build and deployment process
  • 7. def do_build(scheme, configuration) increment_build_number( build_number: ENV['BUILD_ID'] ) profile = 'build/nutrition.mobileprovision' if configuration == 'Release' app_identifier = 'com.enquos.nutrition' display_name = 'enquos nutrition' set_istest_false sigh( app_identifier: app_identifier, filename: profile, ) else app_identifier = 'com.enquos.Nutrition.alpha.' + GIT_BRANCH_ID display_name = 'enquos nutrition ' + GIT_BRANCH sigh( app_identifier: '*', adhoc: '1', filename: profile, ) end update_info_plist( app_identifier: app_identifier, display_name: display_name, plist_path: 'Nutrition/Info.plist', xcodeproj: 'Nutrition/Nutrition.xcodeproj', ) update_project_provisioning( xcodeproj: "Nutrition/Nutrition.xcodeproj", build_configuration_filter: ".*Nutrition.*", profile: profile, ) ipa( scheme: scheme, configuration: configuration, embed: profile, xcargs: '-derivedDataPath ./build', ) end
  • 8. Jenkins • Monitors Github and builds a new app when it sees a change • Has separate jobs for: • develop/ • feature/ • store
  • 9.
  • 10.
  • 11.
  • 12.
  • 14.
  • 15.
  • 16. Gotchas • Need to change the App ID for watch app / extensions too. • Originally we used completely dynamic app ids, but gets messy with 3rd party APIs (e.g. Facebook) that need to know App ID in advance