SlideShare une entreprise Scribd logo
1  sur  24
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 1
1, 2, 3 - Build!
Continuous Integration for mobile Apps
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 2
Motivation
Setting up a Jenkins (Oh no… not again!)
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 3
“Civilization advances by extending the number of
important operations we can perform without
thinking”
Alfred North Whitehead
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 4
Quick Survey
What are you developing?
• Mobile Apps
• Web Apps
• Desktop Apps
• Other
What Version Control system do you use?
• Nothing
• SVN
• Git
• Other
What delivery method are you using?
• Continuous Integration
• Continuous Delivery
• Manual Integration
Which tools are you using?
• Jenkins
• TeamCity
• Travis
• Cloud-Services (Bitrise, VSTS, …)
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 5
Continuous Integration
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 6
1
Building your app
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 7
The build
Repository Known compilation environment Deliverable
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 8
Known compilation environment
Building for iOS, requires a Mac
Depends on your project
Building for Windows, requires Windows
Android is supported on both platforms
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 9
Setting up your automated build - GreenhouseCI
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 10
Automatic Versioning
Chose with care!
Automatically version your application, that is built from the CI
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 13
Signing your app
Android
Keystores (self-generated)
Debug vs. Release Keystore
More information:
• https://developer.android.com/studio/publish/app-signing.html
• https://codesigning.guide/
• http://sharpmobilecode.com/making-sense-of-ios-provisioning/
iOS
Identity Certificates and Provisioning Profiles
Dedicated testing devices
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 14
2
Testing your mobile app
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 15
“Test early. Test often. Test automatically”
Hunt and Thomas – The Pragmatic Programmer
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 16
Automated Unit-Testing
Can easily be done on each platform
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 17
Automated UI-Testing
• GreenhouseCI, Bitrise and Travis support Android Emulator and iOS Simulator directly
• VSTS requires custom Agent: https://github.com/Microsoft/vsts-agent
• On-Devices Services like
• Testdroid
• Xamarin Test Cloud
• AWS Device Farm
• Firebase
• Testobject
Tricky, but possible
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 18
Automated Testing
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 19
“Test your software, or your users will”
Hunt and Thomas – The Pragmatic Programmer
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 20
3
Deploying your mobile app
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 21
Publishing to App Stores
More info: https://github.com/Microsoft/google-play-vsts-extension
Deploying to Google Play Store
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 22
Publishing to App Stores
Deploying to Apple App Store
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 23
Publishing to App Stores
Deploying to Apple App Store using Fastlane
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 24
Publish to (Beta-)Testers
Directly publish the app to testers
Available for all mobile platforms
Useful features:
• Insights
• Crash Reports
• Feedback
• Auto-Updater (side-loading)
HockeyApp
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 26
More tools and resources
• Fabric Crashlytics,
• Testflight BetaTesting for iOS
More links on http://my-it.at
© Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 27
Summary
• Continuous Integration and Continuous Delivery is possible
• Sometimes tricky to set it up correctly, but definitely worth the effort
• Online services do cost some money, but can help you to quickly get started

Contenu connexe

Tendances

5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeamAdam Sandman
 
Modern Load Testing: Move Your Load Testing from the Past to the Present
Modern Load Testing: Move Your Load Testing from the Past to the PresentModern Load Testing: Move Your Load Testing from the Past to the Present
Modern Load Testing: Move Your Load Testing from the Past to the PresentSOASTA
 
Top 5 Automation Challenges Webinar
Top 5 Automation Challenges WebinarTop 5 Automation Challenges Webinar
Top 5 Automation Challenges WebinarPerfecto by Perforce
 
Don't Let Your Users be Your Testers - Lunch & Learn
Don't Let Your Users be Your Testers - Lunch & LearnDon't Let Your Users be Your Testers - Lunch & Learn
Don't Let Your Users be Your Testers - Lunch & LearnAdam Sandman
 
What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery Sarah Elson
 
Real Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingReal Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingSauce Labs
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionLizzy Guido (she/her)
 
Automate More with Selenium for your RWD
Automate More with Selenium for your RWDAutomate More with Selenium for your RWD
Automate More with Selenium for your RWDPerfecto by Perforce
 
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...Building Resilient Automated UI Tests for Cloud Applications using Scripless ...
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...Adam Sandman
 
Make the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourceMake the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourcePerfecto by Perforce
 
State of mobile Continuous Delivery at Spotify
State of mobile Continuous Delivery at SpotifyState of mobile Continuous Delivery at Spotify
State of mobile Continuous Delivery at SpotifyMobile Delivery Days
 
Continuous Testing- A Key Ingredient for Success in Agile & DevOps
Continuous Testing- A Key Ingredient for Success in Agile & DevOpsContinuous Testing- A Key Ingredient for Success in Agile & DevOps
Continuous Testing- A Key Ingredient for Success in Agile & DevOpsSmartBear
 
Automation and Release in Federal
Automation and Release in FederalAutomation and Release in Federal
Automation and Release in FederalSerena Software
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebPerfecto by Perforce
 
Software Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous InspectionSoftware Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous InspectionJosh Gough
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and AlertingKhairul Zebua
 
Engineering Trust in Your Automated Tests
Engineering Trust in Your Automated TestsEngineering Trust in Your Automated Tests
Engineering Trust in Your Automated TestsJyoti Mittal
 
An Essential Guide to Effective Test Automation Leveraging Open Source
An Essential Guide to Effective Test Automation Leveraging Open SourceAn Essential Guide to Effective Test Automation Leveraging Open Source
An Essential Guide to Effective Test Automation Leveraging Open SourceRapidValue
 
Building Quality into Your DevSecOps Pipelines
Building Quality into Your DevSecOps PipelinesBuilding Quality into Your DevSecOps Pipelines
Building Quality into Your DevSecOps PipelinesInflectra
 

Tendances (20)

5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam5 Principles to Managing Your Application Lifecycle with SpiraTeam
5 Principles to Managing Your Application Lifecycle with SpiraTeam
 
Modern Load Testing: Move Your Load Testing from the Past to the Present
Modern Load Testing: Move Your Load Testing from the Past to the PresentModern Load Testing: Move Your Load Testing from the Past to the Present
Modern Load Testing: Move Your Load Testing from the Past to the Present
 
ATAGTR2017 Testing in DevOps Culture
ATAGTR2017 Testing in DevOps CultureATAGTR2017 Testing in DevOps Culture
ATAGTR2017 Testing in DevOps Culture
 
Top 5 Automation Challenges Webinar
Top 5 Automation Challenges WebinarTop 5 Automation Challenges Webinar
Top 5 Automation Challenges Webinar
 
Don't Let Your Users be Your Testers - Lunch & Learn
Don't Let Your Users be Your Testers - Lunch & LearnDon't Let Your Users be Your Testers - Lunch & Learn
Don't Let Your Users be Your Testers - Lunch & Learn
 
What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery
 
Real Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated TestingReal Devices or Emulators: Wen to use What for Automated Testing
Real Devices or Emulators: Wen to use What for Automated Testing
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year Edition
 
Automate More with Selenium for your RWD
Automate More with Selenium for your RWDAutomate More with Selenium for your RWD
Automate More with Selenium for your RWD
 
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...Building Resilient Automated UI Tests for Cloud Applications using Scripless ...
Building Resilient Automated UI Tests for Cloud Applications using Scripless ...
 
Make the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourceMake the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open Source
 
State of mobile Continuous Delivery at Spotify
State of mobile Continuous Delivery at SpotifyState of mobile Continuous Delivery at Spotify
State of mobile Continuous Delivery at Spotify
 
Continuous Testing- A Key Ingredient for Success in Agile & DevOps
Continuous Testing- A Key Ingredient for Success in Agile & DevOpsContinuous Testing- A Key Ingredient for Success in Agile & DevOps
Continuous Testing- A Key Ingredient for Success in Agile & DevOps
 
Automation and Release in Federal
Automation and Release in FederalAutomation and Release in Federal
Automation and Release in Federal
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive Web
 
Software Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous InspectionSoftware Defect Prevention via Continuous Inspection
Software Defect Prevention via Continuous Inspection
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and Alerting
 
Engineering Trust in Your Automated Tests
Engineering Trust in Your Automated TestsEngineering Trust in Your Automated Tests
Engineering Trust in Your Automated Tests
 
An Essential Guide to Effective Test Automation Leveraging Open Source
An Essential Guide to Effective Test Automation Leveraging Open SourceAn Essential Guide to Effective Test Automation Leveraging Open Source
An Essential Guide to Effective Test Automation Leveraging Open Source
 
Building Quality into Your DevSecOps Pipelines
Building Quality into Your DevSecOps PipelinesBuilding Quality into Your DevSecOps Pipelines
Building Quality into Your DevSecOps Pipelines
 

Similaire à 1, 2, 3 build - continuous integration for mobile apps

Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Okko Oulasvirta
 
Microsoft’s HockeyApp - Mobile Application Testing Tool
Microsoft’s HockeyApp - Mobile Application Testing ToolMicrosoft’s HockeyApp - Mobile Application Testing Tool
Microsoft’s HockeyApp - Mobile Application Testing Toolsara stanford
 
Creating reusable pieces in Logic Apps
Creating reusable pieces in Logic AppsCreating reusable pieces in Logic Apps
Creating reusable pieces in Logic AppsBizTalk360
 
Soasta New Features in CloudTest & TouchTest Webinar
Soasta New Features in CloudTest & TouchTest WebinarSoasta New Features in CloudTest & TouchTest Webinar
Soasta New Features in CloudTest & TouchTest WebinarJennifer Finney
 
Webinar: New Features in CloudTest & TouchTest
Webinar: New Features in CloudTest & TouchTestWebinar: New Features in CloudTest & TouchTest
Webinar: New Features in CloudTest & TouchTestSOASTA
 
Building high performance software with Microsoft Application Insights
Building high performance software with Microsoft Application InsightsBuilding high performance software with Microsoft Application Insights
Building high performance software with Microsoft Application InsightsKen Cenerelli
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2Manfred Steyer
 
Microsoft app center
Microsoft app centerMicrosoft app center
Microsoft app centerSuki Huang
 
Introducing Software Product Lines in Model-Based Design Processes: an Indust...
Introducing Software Product Lines in Model-BasedDesign Processes: an Indust...Introducing Software Product Lines in Model-BasedDesign Processes: an Indust...
Introducing Software Product Lines in Model-Based Design Processes: an Indust...REvERSE University of Naples Federico II
 
Benefits of using native automation tooling for mobile application testing.pptx
Benefits of using native automation tooling for mobile application testing.pptxBenefits of using native automation tooling for mobile application testing.pptx
Benefits of using native automation tooling for mobile application testing.pptxMesut Günes
 
Application telemetry public
Application telemetry publicApplication telemetry public
Application telemetry publicLars Yde
 
Azure Mobile Services (+ Universal Apps)
Azure Mobile Services (+ Universal Apps)Azure Mobile Services (+ Universal Apps)
Azure Mobile Services (+ Universal Apps)Shahed Chowdhuri
 
CloudNativeAalborg2023_Jan.pdf
CloudNativeAalborg2023_Jan.pdfCloudNativeAalborg2023_Jan.pdf
CloudNativeAalborg2023_Jan.pdfahjensen
 
Devteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricDevteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricBrisebois
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsSarath C
 
2109 apb-micas-2015
2109 apb-micas-20152109 apb-micas-2015
2109 apb-micas-2015olipas6
 
AppHub project presentation at MICAS 2015
AppHub project presentation at MICAS 2015AppHub project presentation at MICAS 2015
AppHub project presentation at MICAS 2015AppHub
 
An Introduction to Appium Desktop
An Introduction to Appium DesktopAn Introduction to Appium Desktop
An Introduction to Appium DesktopSauce Labs
 
Become an Insider: The Future of Uptime Infrastructure Monitor
Become an Insider: The Future of Uptime Infrastructure MonitorBecome an Insider: The Future of Uptime Infrastructure Monitor
Become an Insider: The Future of Uptime Infrastructure MonitorIDERA Software
 
Trivadis TechEvent 2016 How to transform a complex web application into a mob...
Trivadis TechEvent 2016 How to transform a complex web application into a mob...Trivadis TechEvent 2016 How to transform a complex web application into a mob...
Trivadis TechEvent 2016 How to transform a complex web application into a mob...Trivadis
 

Similaire à 1, 2, 3 build - continuous integration for mobile apps (20)

Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases
 
Microsoft’s HockeyApp - Mobile Application Testing Tool
Microsoft’s HockeyApp - Mobile Application Testing ToolMicrosoft’s HockeyApp - Mobile Application Testing Tool
Microsoft’s HockeyApp - Mobile Application Testing Tool
 
Creating reusable pieces in Logic Apps
Creating reusable pieces in Logic AppsCreating reusable pieces in Logic Apps
Creating reusable pieces in Logic Apps
 
Soasta New Features in CloudTest & TouchTest Webinar
Soasta New Features in CloudTest & TouchTest WebinarSoasta New Features in CloudTest & TouchTest Webinar
Soasta New Features in CloudTest & TouchTest Webinar
 
Webinar: New Features in CloudTest & TouchTest
Webinar: New Features in CloudTest & TouchTestWebinar: New Features in CloudTest & TouchTest
Webinar: New Features in CloudTest & TouchTest
 
Building high performance software with Microsoft Application Insights
Building high performance software with Microsoft Application InsightsBuilding high performance software with Microsoft Application Insights
Building high performance software with Microsoft Application Insights
 
Progressive web apps with Angular 2
Progressive web apps with Angular 2Progressive web apps with Angular 2
Progressive web apps with Angular 2
 
Microsoft app center
Microsoft app centerMicrosoft app center
Microsoft app center
 
Introducing Software Product Lines in Model-Based Design Processes: an Indust...
Introducing Software Product Lines in Model-BasedDesign Processes: an Indust...Introducing Software Product Lines in Model-BasedDesign Processes: an Indust...
Introducing Software Product Lines in Model-Based Design Processes: an Indust...
 
Benefits of using native automation tooling for mobile application testing.pptx
Benefits of using native automation tooling for mobile application testing.pptxBenefits of using native automation tooling for mobile application testing.pptx
Benefits of using native automation tooling for mobile application testing.pptx
 
Application telemetry public
Application telemetry publicApplication telemetry public
Application telemetry public
 
Azure Mobile Services (+ Universal Apps)
Azure Mobile Services (+ Universal Apps)Azure Mobile Services (+ Universal Apps)
Azure Mobile Services (+ Universal Apps)
 
CloudNativeAalborg2023_Jan.pdf
CloudNativeAalborg2023_Jan.pdfCloudNativeAalborg2023_Jan.pdf
CloudNativeAalborg2023_Jan.pdf
 
Devteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabricDevteach 2016: A practical overview of actors in service fabric
Devteach 2016: A practical overview of actors in service fabric
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 
2109 apb-micas-2015
2109 apb-micas-20152109 apb-micas-2015
2109 apb-micas-2015
 
AppHub project presentation at MICAS 2015
AppHub project presentation at MICAS 2015AppHub project presentation at MICAS 2015
AppHub project presentation at MICAS 2015
 
An Introduction to Appium Desktop
An Introduction to Appium DesktopAn Introduction to Appium Desktop
An Introduction to Appium Desktop
 
Become an Insider: The Future of Uptime Infrastructure Monitor
Become an Insider: The Future of Uptime Infrastructure MonitorBecome an Insider: The Future of Uptime Infrastructure Monitor
Become an Insider: The Future of Uptime Infrastructure Monitor
 
Trivadis TechEvent 2016 How to transform a complex web application into a mob...
Trivadis TechEvent 2016 How to transform a complex web application into a mob...Trivadis TechEvent 2016 How to transform a complex web application into a mob...
Trivadis TechEvent 2016 How to transform a complex web application into a mob...
 

Plus de Alexander Pacha

1, 2, 3 build - continuous integration für mobile apps
1, 2, 3   build - continuous integration für mobile apps1, 2, 3   build - continuous integration für mobile apps
1, 2, 3 build - continuous integration für mobile appsAlexander Pacha
 
Antlr4 get the right tool for the job
Antlr4   get the right tool for the jobAntlr4   get the right tool for the job
Antlr4 get the right tool for the jobAlexander Pacha
 
I like to move it, move it - What your Android device really feels
I like to move it, move it - What your Android device really feelsI like to move it, move it - What your Android device really feels
I like to move it, move it - What your Android device really feelsAlexander Pacha
 
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit Robotium
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit RobotiumLightningtalk - Android UI-Testautomatisierung leicht gemacht mit Robotium
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit RobotiumAlexander Pacha
 
C# - A Programmer's Dream Come True
C# - A Programmer's Dream Come TrueC# - A Programmer's Dream Come True
C# - A Programmer's Dream Come TrueAlexander Pacha
 

Plus de Alexander Pacha (7)

1, 2, 3 build - continuous integration für mobile apps
1, 2, 3   build - continuous integration für mobile apps1, 2, 3   build - continuous integration für mobile apps
1, 2, 3 build - continuous integration für mobile apps
 
Antlr4 get the right tool for the job
Antlr4   get the right tool for the jobAntlr4   get the right tool for the job
Antlr4 get the right tool for the job
 
I like to move it, move it - What your Android device really feels
I like to move it, move it - What your Android device really feelsI like to move it, move it - What your Android device really feels
I like to move it, move it - What your Android device really feels
 
Android Testing
Android Testing Android Testing
Android Testing
 
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit Robotium
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit RobotiumLightningtalk - Android UI-Testautomatisierung leicht gemacht mit Robotium
Lightningtalk - Android UI-Testautomatisierung leicht gemacht mit Robotium
 
C# - A Programmer's Dream Come True
C# - A Programmer's Dream Come TrueC# - A Programmer's Dream Come True
C# - A Programmer's Dream Come True
 
Recherche präsentation
Recherche präsentationRecherche präsentation
Recherche präsentation
 

Dernier

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Dernier (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

1, 2, 3 build - continuous integration for mobile apps

  • 1. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 1 1, 2, 3 - Build! Continuous Integration for mobile Apps
  • 2. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 2 Motivation Setting up a Jenkins (Oh no… not again!)
  • 3. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 3 “Civilization advances by extending the number of important operations we can perform without thinking” Alfred North Whitehead
  • 4. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 4 Quick Survey What are you developing? • Mobile Apps • Web Apps • Desktop Apps • Other What Version Control system do you use? • Nothing • SVN • Git • Other What delivery method are you using? • Continuous Integration • Continuous Delivery • Manual Integration Which tools are you using? • Jenkins • TeamCity • Travis • Cloud-Services (Bitrise, VSTS, …)
  • 5. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 5 Continuous Integration
  • 6. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 6 1 Building your app
  • 7. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 7 The build Repository Known compilation environment Deliverable
  • 8. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 8 Known compilation environment Building for iOS, requires a Mac Depends on your project Building for Windows, requires Windows Android is supported on both platforms
  • 9. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 9 Setting up your automated build - GreenhouseCI
  • 10. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 10 Automatic Versioning Chose with care! Automatically version your application, that is built from the CI
  • 11. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 13 Signing your app Android Keystores (self-generated) Debug vs. Release Keystore More information: • https://developer.android.com/studio/publish/app-signing.html • https://codesigning.guide/ • http://sharpmobilecode.com/making-sense-of-ios-provisioning/ iOS Identity Certificates and Provisioning Profiles Dedicated testing devices
  • 12. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 14 2 Testing your mobile app
  • 13. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 15 “Test early. Test often. Test automatically” Hunt and Thomas – The Pragmatic Programmer
  • 14. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 16 Automated Unit-Testing Can easily be done on each platform
  • 15. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 17 Automated UI-Testing • GreenhouseCI, Bitrise and Travis support Android Emulator and iOS Simulator directly • VSTS requires custom Agent: https://github.com/Microsoft/vsts-agent • On-Devices Services like • Testdroid • Xamarin Test Cloud • AWS Device Farm • Firebase • Testobject Tricky, but possible
  • 16. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 18 Automated Testing
  • 17. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 19 “Test your software, or your users will” Hunt and Thomas – The Pragmatic Programmer
  • 18. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 20 3 Deploying your mobile app
  • 19. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 21 Publishing to App Stores More info: https://github.com/Microsoft/google-play-vsts-extension Deploying to Google Play Store
  • 20. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 22 Publishing to App Stores Deploying to Apple App Store
  • 21. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 23 Publishing to App Stores Deploying to Apple App Store using Fastlane
  • 22. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 24 Publish to (Beta-)Testers Directly publish the app to testers Available for all mobile platforms Useful features: • Insights • Crash Reports • Feedback • Auto-Updater (side-loading) HockeyApp
  • 23. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 26 More tools and resources • Fabric Crashlytics, • Testflight BetaTesting for iOS More links on http://my-it.at
  • 24. © Zühlke 20161, 2, 3 - Build! | Alexander Pacha 27. September 2016 Slide 27 Summary • Continuous Integration and Continuous Delivery is possible • Sometimes tricky to set it up correctly, but definitely worth the effort • Online services do cost some money, but can help you to quickly get started

Notes de l'éditeur

  1. Hi, Alex, Zühlke, Responsible Today talking about CI for mobile = CI for apps with special tricks Main Goals of this talk: Raise awareness, how easy it is to automate your build (including live-demonstrations) Advocate the use of cloud services over on-premise solutions Awakening desire to use this in your next project (Ultimately, you walk out of this talk and start using CIs for all your mobile projects)
  2. Back in Camp 2014, everyone set up a Jenkins (himself), yet no one really did it in a project. Tedious, actually quite boring, ... because it follows certain recipes that you have to do over and over again. --> OPs had the same problem. Started creating bash scripts to automate things
  3. Vergleich mit Autofahren  Safety in Development
  4. Continuous Integration is the practise of merging all developer working copies into a shared mainline several times a day. Pro: Integration bugs are detected early Constant availability of “current” build for testing and release Avoid dependency on individuals for building the app If reverting is required, only small number of changes are lost Avoid last-minute chaos before release Contra: Getting up and running is not trivial Eventually costs money Someone has to take care of it
  5. A build is a procedure that takes an empty directory (and a known compilation environment) and builds the project from scratch, producing whatever you hope to produce as a final deliverable. Hunt and Thomas - The pragmatic programmer
  6. Ask audience, if this has ever happened to someone def code = System.getenv("BITRISE_BUILD_NUMBER") as Integer ?: 0 android { defaultConfig { versionCode code versionName "1.4." + code ...
  7. Ask audience, if this has ever happened to someone def code = System.getenv("BITRISE_BUILD_NUMBER") as Integer ?: 0 android { defaultConfig { versionCode code versionName "1.4." + code ...
  8. Once a person finds a bug, it should be the last time a person finds that bug. Automate a test for it
  9. Snapshot – Generate screenshots https://codesigning.guide/
  10. Be aware that you will do a lot of updating and upgrading -> Basically whenever I come back to my PC after a week, there are new updates available for Android, Xamarin, Mac, Windows, Build-Tools, Build-Agents, ... Be aware that you will do some kind of scripting (bash, PS, python, whatever)