SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Build Automation for Mobile 
or 
How to Deliver Quality Apps Continuously 
Angelo Rüggeberg
2 
Things to remember 
„Publishing your App should not be 
painfull“ 
Angelo Rüggeberg 
„Code Quality Matters“ 
Angelo Rüggeberg
3 
Who am I? 
‣ Mobile Development 
‣ Android 
‣ iOS 
‣ Backend 
‣ Cloud Infrastructure 
http://plus.google.com/+AngeloRüggeberg 
http://s3xy4ngyc.github.io/ s3xy4ngyc
4 
Release Process 
Current Situation
5 
Release Process 
Current Situation
6 
Release Process 
the future 
Everything you have to do afterwards is 
git push
7 
Release Process 
the future
8 
Build Automation 
What will we be using 
jenkins 
Test Driven Development 
Git 
Beta Distribution 
Nightly Versions 
Gradle
9 
Build Automation 
Benefits 
‣ New Features are Live ASAP 
‣ As Soon As Pushed 
‣ Only Stable and Tested Builds can be Pushed 
‣ No more unstable Releases 
‣ Less Human Testing 
‣ No more Sharing of Sensitive Data 
‣ Keystores 
‣ Logins
10 
Build Automation 
Jenkins 
Jenkins is an award-winning application that monitors executions of repeated jobs, such as building • Building/testing software projects continuously 
• Monitoring executions of externally-run jobs 
Get Jenkins at: http://jenkins-ci.org/
11 
Build Automation 
Build Pipeline 
‣ Sample Build Pipeline: 
compile 
lint 
Tests 
sonar 
monkey 
runner 
distribute
12 
Build Automation 
Build Pipeline 
‣ Distribution will only Happen if all Previous Steps Succeed 
‣ Tests, Code Analysis, etc. can Run Parallel 
‣ Step by Step enables Failing Fast 
‣ Resource Hungry Jobs like Monkey Runner will be triggered only if needed
13 
Jenkins 
Usefull Tipps 
‣ Clone Workspace SCM Plugin 
‣ Shared Workspaces may have locks 
‣ https://wiki.jenkins-ci.org/display/JENKINS/Clone+Workspace+SCM+Plugin 
‣ Polling Sucks 
‣ use Git Hooks! 
‣ Do not run on a Small Virtual Machine 
‣ Android Emulator needs some Hardware 
‣ Intel HAX strongly Recommended!
14 
Jenkins 
Build Monitor Plugin
15 
Jenkins 
Build Pipeline View Plugin
16 
Jenkins 
Monitoring Plugins
17 
Build Automation 
gradle 
‣ Best of ANT / Maven / GANT / Ivy 
‣ Based on Groovy Scripts 
‣ Expressive DSL 
‣ (Flexible) Convention over Configuration 
‣ Easy to extend 
‣ „Make the impossible possible, make the possible easy and 
make the easy elegant.”
18 
gradle 
flavoring 
‣ Staging, Dev and Live Packages 
‣ On Your Test Device no Constant Uninstalling 
‣ Adjustable Configurations without Code Changes 
‣ Why? 
‣ Reproduce able builds, easy setup
19 
gradle 
sample Code
20 
gradle 
sample Code 
Project Setup Flavoring 
• Same Folder Structure for 
every Flavor 
• Flavor Specific files Overwrite 
Files from Main 
• Only Overwrite What your 
Flavor Needs 
• Flavor Only Files Possible
21 
gradle 
sample Code 
Example Flavor Specific Manifest 
• Only Provider defined 
• Everything else comes from main/AndroidManifest.xml
22 
Build Automation 
git 
‣ Branching 
‣ Opensource 
‣ Integrated and Extended Implementations
23 
Git 
Git Workflow 
Git Flow Branching Model 
source: www.atlassian.com
24 
Jenkins 
Git Flow and Jenkins Examples 
‣ Staging 
‣ Hook on develop Branch 
‣ Nightly 
‣ Time Based Build (eg once a day at 0 AM) 
‣ builds newest feature Branch 
‣ Live 
‣ Only Builds release Tags 
‣ Release Notes are Tag Message
25 
Beta Test Distribution
26 
Beta Test Distribution 
Examples 
‣ Google Play 
‣ Alpha / Channel 
‣ Works on every Device that has The Playstore 
‣ Crashlytics 
‣ Distribution Groups & User Level 
‣ gradle Integration 
‣ free 
‣ HokeyApp 
‣ Comercial
27 
Unit Testing 
WHY? 
Testing - Do it
28 
Unit Testing 
WHY?
29 
Unit Testing 
WHY? 
‣ Code Quality Matters! 
‣ Insurance everything still works 
‣ As it should be working 
‣ Refactoring made easy 
‣ Unittests are somehow a Functional Documentation
30 
Unit Testing 
Some Tipps: 
‣ Tests first! 
‣ Simplest and dumbest way to implement 
‣ Test Orientation Changes 
‣ Test State Changes 
‣ Lock Screen 
‣ Incoming calls 
‣ etc. 
‣ Check Code Coverage
31 
Test Frameworks 
Unittests 
‣ Robolectric 
‣ No Emulator Needed 
‣ No Mocking Frameworks Needed 
‣ API Level Emulation only up to 18 (currently) 
‣ Robotium 
‣ Silenium for Android 
‣ User Scenarios 
‣ Default Android Testing Framework
32 
Test Frameworks 
UI Testing 
‣ Espresso 
‣ Ui Testing 
‣ Double Espresso 
‣ Espresso Gradle Port 
‣ Ui Automator 
‣ Android Default UI Testing Framework
33 
Mocking
34 
Test Frameworks 
Device Testing 
Distributing instrumentation tests 
http://square.github.io/spoon/
35 
Test Frameworks 
Device Testing
36 
Test Frameworks 
Device Testing
37 
Test Frameworks 
Device Testing
38 
Build Automation 
Measure Code Quality 
• Measure Code Quality over Time 
Duplicated code 
• Coding standards 
• Unit tests 
• Complex code 
• Potential bugs 
• Comments 
• Design and architecture
39 
Test Frameworks 
Code Coverage
40 
Test Frameworks 
Code Coverage
41 
Build Automation 
Static Code Analysis
42 
Build Automation 
Static Code Analysis 
‣ Testing your Application makes your life more Stress free 
‣ Code Quality 
‣ Less Production Crashes 
‣ Don’t develop Stuff that should not go live 
‣ Use Gradle Flavors!
43 
Build Automation 
Final Thoughts 
‣ Testing your Application makes your life more Stress free 
‣ Code Quality 
‣ Less Production Crashes 
‣ Don’t develop Stuff that should not go live 
‣ DONE = RELEASED 
‣ Use Gradle Flavors!
44 
Release Process 
the future
>> /etc/

Weitere ähnliche Inhalte

Was ist angesagt?

Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsChristian Erhardt
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnMartin Seibert
 
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...inovex GmbH
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneVorname Nachname
 
Cross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache CordovaCross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache CordovaPeter Hecker
 
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Marc Müller
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftBart Zwager
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsSven Günther
 
Releases: Aus Jahren werden Minuten
Releases: Aus Jahren werden MinutenReleases: Aus Jahren werden Minuten
Releases: Aus Jahren werden Minutenx-celerate
 
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...msohn
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!JanWeinschenker
 
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...DevDay Dresden
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenPeter Rozek
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Alex Sili
 
Continuous delivery ist keine Technologie
Continuous delivery ist keine TechnologieContinuous delivery ist keine Technologie
Continuous delivery ist keine TechnologieJörg Müller
 

Was ist angesagt? (20)

TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Android Testing
Android Testing Android Testing
Android Testing
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code Reviews
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
Hilfe! Agile und die Digitale Transformation haben meinen Job gefressen ...
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der Schiene
 
Cross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache CordovaCross Plattform Apps mit Visual Studio und Apache Cordova
Cross Plattform Apps mit Visual Studio und Apache Cordova
 
Gitlab
GitlabGitlab
Gitlab
 
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
Basta Spring 2017 - DevOps: Automatisieren der Deployment-Prozesse mit Te...
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
iOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click DeploymentsiOS: Continuous Integration and One Click Deployments
iOS: Continuous Integration and One Click Deployments
 
Releases: Aus Jahren werden Minuten
Releases: Aus Jahren werden MinutenReleases: Aus Jahren werden Minuten
Releases: Aus Jahren werden Minuten
 
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
Effiziente Entwicklungsprozesse mit Git, EGit und Gerrit - Intland Technology...
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...
Dev Day 2019: Kay Grebenstein – Wie wir müssen das noch testen? - design for ...
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign Testen
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
 
Continuous delivery ist keine Technologie
Continuous delivery ist keine TechnologieContinuous delivery ist keine Technologie
Continuous delivery ist keine Technologie
 

Andere mochten auch

C-Hook HMI Project Presentation.
C-Hook HMI Project Presentation.C-Hook HMI Project Presentation.
C-Hook HMI Project Presentation.Sherif fayek
 
IMovicon (TM) 11 Scada/HMI - Product catalogue - Deutsch
IMovicon (TM) 11 Scada/HMI - Product catalogue - DeutschIMovicon (TM) 11 Scada/HMI - Product catalogue - Deutsch
IMovicon (TM) 11 Scada/HMI - Product catalogue - DeutschPROGEA s.r.l.
 
3 win cc flexible 2008 - basics_screens_en
3 win cc flexible 2008 - basics_screens_en3 win cc flexible 2008 - basics_screens_en
3 win cc flexible 2008 - basics_screens_ennguyen An
 
Performance
PerformancePerformance
Performancemustafa
 
PLC ARCHITECTURE AND HARDWARE COMPONENTS
PLC ARCHITECTURE AND HARDWARE COMPONENTSPLC ARCHITECTURE AND HARDWARE COMPONENTS
PLC ARCHITECTURE AND HARDWARE COMPONENTSAkshay Dhole
 
PT - Siemens WinCC Flexible Security Hardening Guide
PT - Siemens WinCC Flexible Security Hardening GuidePT - Siemens WinCC Flexible Security Hardening Guide
PT - Siemens WinCC Flexible Security Hardening Guideqqlan
 
Object Oriented Programming with Real World Examples
Object Oriented Programming with Real World ExamplesObject Oriented Programming with Real World Examples
Object Oriented Programming with Real World ExamplesOXUS 20
 
Basics of Automation, PLC and SCADA
Basics of Automation, PLC and SCADABasics of Automation, PLC and SCADA
Basics of Automation, PLC and SCADAIndira Kundu
 
automation slides,plc,scada,HMI
automation slides,plc,scada,HMIautomation slides,plc,scada,HMI
automation slides,plc,scada,HMIBOSCH
 
PLC and SCADA training.
PLC and SCADA training.PLC and SCADA training.
PLC and SCADA training.Ishank Ranjan
 
Plc Siemens Training Notes
Plc Siemens Training NotesPlc Siemens Training Notes
Plc Siemens Training Notesplc_course
 
INDUSTRIAL AUTOMATION USING PLC
INDUSTRIAL AUTOMATION USING PLCINDUSTRIAL AUTOMATION USING PLC
INDUSTRIAL AUTOMATION USING PLCMehvish Mushtaq
 
Top Ten Siemens S7 Tips and Tricks
Top Ten Siemens S7 Tips and TricksTop Ten Siemens S7 Tips and Tricks
Top Ten Siemens S7 Tips and TricksDMC, Inc.
 

Andere mochten auch (20)

C-Hook HMI Project Presentation.
C-Hook HMI Project Presentation.C-Hook HMI Project Presentation.
C-Hook HMI Project Presentation.
 
A d swincc15e
A d swincc15eA d swincc15e
A d swincc15e
 
IMovicon (TM) 11 Scada/HMI - Product catalogue - Deutsch
IMovicon (TM) 11 Scada/HMI - Product catalogue - DeutschIMovicon (TM) 11 Scada/HMI - Product catalogue - Deutsch
IMovicon (TM) 11 Scada/HMI - Product catalogue - Deutsch
 
3 win cc flexible 2008 - basics_screens_en
3 win cc flexible 2008 - basics_screens_en3 win cc flexible 2008 - basics_screens_en
3 win cc flexible 2008 - basics_screens_en
 
Performance
PerformancePerformance
Performance
 
A d swincc01e
A d swincc01eA d swincc01e
A d swincc01e
 
Label 15 english
Label 15 englishLabel 15 english
Label 15 english
 
PLC ARCHITECTURE AND HARDWARE COMPONENTS
PLC ARCHITECTURE AND HARDWARE COMPONENTSPLC ARCHITECTURE AND HARDWARE COMPONENTS
PLC ARCHITECTURE AND HARDWARE COMPONENTS
 
PT - Siemens WinCC Flexible Security Hardening Guide
PT - Siemens WinCC Flexible Security Hardening GuidePT - Siemens WinCC Flexible Security Hardening Guide
PT - Siemens WinCC Flexible Security Hardening Guide
 
A d swincc05e
A d swincc05eA d swincc05e
A d swincc05e
 
WinCC
WinCCWinCC
WinCC
 
Object Oriented Programming with Real World Examples
Object Oriented Programming with Real World ExamplesObject Oriented Programming with Real World Examples
Object Oriented Programming with Real World Examples
 
Object-Oriented Programming Using C++
Object-Oriented Programming Using C++Object-Oriented Programming Using C++
Object-Oriented Programming Using C++
 
Simens plc training. simatic working-with-step-7
Simens  plc  training. simatic working-with-step-7Simens  plc  training. simatic working-with-step-7
Simens plc training. simatic working-with-step-7
 
Basics of Automation, PLC and SCADA
Basics of Automation, PLC and SCADABasics of Automation, PLC and SCADA
Basics of Automation, PLC and SCADA
 
automation slides,plc,scada,HMI
automation slides,plc,scada,HMIautomation slides,plc,scada,HMI
automation slides,plc,scada,HMI
 
PLC and SCADA training.
PLC and SCADA training.PLC and SCADA training.
PLC and SCADA training.
 
Plc Siemens Training Notes
Plc Siemens Training NotesPlc Siemens Training Notes
Plc Siemens Training Notes
 
INDUSTRIAL AUTOMATION USING PLC
INDUSTRIAL AUTOMATION USING PLCINDUSTRIAL AUTOMATION USING PLC
INDUSTRIAL AUTOMATION USING PLC
 
Top Ten Siemens S7 Tips and Tricks
Top Ten Siemens S7 Tips and TricksTop Ten Siemens S7 Tips and Tricks
Top Ten Siemens S7 Tips and Tricks
 

Ähnlich wie Build Automation for Mobile

Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineOPEN KNOWLEDGE GmbH
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018André Krämer
 
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickeln
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickelnWJAX 2008 - Grails Plug-ins verwenden und selbst entwickeln
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickelnmguillem
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...Bokowsky + Laymann GmbH
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SESebastian Bauer
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Nico Orschel
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenFotiosKaramitsos
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?René Winkelmeyer
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Gregor Biswanger
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sQAware GmbH
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in ScrumFrank Düsterbeck
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP UnitsCadaxo GmbH
 

Ähnlich wie Build Automation for Mobile (20)

Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
 
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickeln
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickelnWJAX 2008 - Grails Plug-ins verwenden und selbst entwickeln
WJAX 2008 - Grails Plug-ins verwenden und selbst entwickeln
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile-Produktentwicklung: Konzeption, Design, Entwicklung,...
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SE
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in Scrum
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
Deployment
DeploymentDeployment
Deployment
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 

Mehr von inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Mehr von inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Build Automation for Mobile

  • 1. Build Automation for Mobile or How to Deliver Quality Apps Continuously Angelo Rüggeberg
  • 2. 2 Things to remember „Publishing your App should not be painfull“ Angelo Rüggeberg „Code Quality Matters“ Angelo Rüggeberg
  • 3. 3 Who am I? ‣ Mobile Development ‣ Android ‣ iOS ‣ Backend ‣ Cloud Infrastructure http://plus.google.com/+AngeloRüggeberg http://s3xy4ngyc.github.io/ s3xy4ngyc
  • 4. 4 Release Process Current Situation
  • 5. 5 Release Process Current Situation
  • 6. 6 Release Process the future Everything you have to do afterwards is git push
  • 7. 7 Release Process the future
  • 8. 8 Build Automation What will we be using jenkins Test Driven Development Git Beta Distribution Nightly Versions Gradle
  • 9. 9 Build Automation Benefits ‣ New Features are Live ASAP ‣ As Soon As Pushed ‣ Only Stable and Tested Builds can be Pushed ‣ No more unstable Releases ‣ Less Human Testing ‣ No more Sharing of Sensitive Data ‣ Keystores ‣ Logins
  • 10. 10 Build Automation Jenkins Jenkins is an award-winning application that monitors executions of repeated jobs, such as building • Building/testing software projects continuously • Monitoring executions of externally-run jobs Get Jenkins at: http://jenkins-ci.org/
  • 11. 11 Build Automation Build Pipeline ‣ Sample Build Pipeline: compile lint Tests sonar monkey runner distribute
  • 12. 12 Build Automation Build Pipeline ‣ Distribution will only Happen if all Previous Steps Succeed ‣ Tests, Code Analysis, etc. can Run Parallel ‣ Step by Step enables Failing Fast ‣ Resource Hungry Jobs like Monkey Runner will be triggered only if needed
  • 13. 13 Jenkins Usefull Tipps ‣ Clone Workspace SCM Plugin ‣ Shared Workspaces may have locks ‣ https://wiki.jenkins-ci.org/display/JENKINS/Clone+Workspace+SCM+Plugin ‣ Polling Sucks ‣ use Git Hooks! ‣ Do not run on a Small Virtual Machine ‣ Android Emulator needs some Hardware ‣ Intel HAX strongly Recommended!
  • 14. 14 Jenkins Build Monitor Plugin
  • 15. 15 Jenkins Build Pipeline View Plugin
  • 17. 17 Build Automation gradle ‣ Best of ANT / Maven / GANT / Ivy ‣ Based on Groovy Scripts ‣ Expressive DSL ‣ (Flexible) Convention over Configuration ‣ Easy to extend ‣ „Make the impossible possible, make the possible easy and make the easy elegant.”
  • 18. 18 gradle flavoring ‣ Staging, Dev and Live Packages ‣ On Your Test Device no Constant Uninstalling ‣ Adjustable Configurations without Code Changes ‣ Why? ‣ Reproduce able builds, easy setup
  • 20. 20 gradle sample Code Project Setup Flavoring • Same Folder Structure for every Flavor • Flavor Specific files Overwrite Files from Main • Only Overwrite What your Flavor Needs • Flavor Only Files Possible
  • 21. 21 gradle sample Code Example Flavor Specific Manifest • Only Provider defined • Everything else comes from main/AndroidManifest.xml
  • 22. 22 Build Automation git ‣ Branching ‣ Opensource ‣ Integrated and Extended Implementations
  • 23. 23 Git Git Workflow Git Flow Branching Model source: www.atlassian.com
  • 24. 24 Jenkins Git Flow and Jenkins Examples ‣ Staging ‣ Hook on develop Branch ‣ Nightly ‣ Time Based Build (eg once a day at 0 AM) ‣ builds newest feature Branch ‣ Live ‣ Only Builds release Tags ‣ Release Notes are Tag Message
  • 25. 25 Beta Test Distribution
  • 26. 26 Beta Test Distribution Examples ‣ Google Play ‣ Alpha / Channel ‣ Works on every Device that has The Playstore ‣ Crashlytics ‣ Distribution Groups & User Level ‣ gradle Integration ‣ free ‣ HokeyApp ‣ Comercial
  • 27. 27 Unit Testing WHY? Testing - Do it
  • 29. 29 Unit Testing WHY? ‣ Code Quality Matters! ‣ Insurance everything still works ‣ As it should be working ‣ Refactoring made easy ‣ Unittests are somehow a Functional Documentation
  • 30. 30 Unit Testing Some Tipps: ‣ Tests first! ‣ Simplest and dumbest way to implement ‣ Test Orientation Changes ‣ Test State Changes ‣ Lock Screen ‣ Incoming calls ‣ etc. ‣ Check Code Coverage
  • 31. 31 Test Frameworks Unittests ‣ Robolectric ‣ No Emulator Needed ‣ No Mocking Frameworks Needed ‣ API Level Emulation only up to 18 (currently) ‣ Robotium ‣ Silenium for Android ‣ User Scenarios ‣ Default Android Testing Framework
  • 32. 32 Test Frameworks UI Testing ‣ Espresso ‣ Ui Testing ‣ Double Espresso ‣ Espresso Gradle Port ‣ Ui Automator ‣ Android Default UI Testing Framework
  • 34. 34 Test Frameworks Device Testing Distributing instrumentation tests http://square.github.io/spoon/
  • 35. 35 Test Frameworks Device Testing
  • 36. 36 Test Frameworks Device Testing
  • 37. 37 Test Frameworks Device Testing
  • 38. 38 Build Automation Measure Code Quality • Measure Code Quality over Time Duplicated code • Coding standards • Unit tests • Complex code • Potential bugs • Comments • Design and architecture
  • 39. 39 Test Frameworks Code Coverage
  • 40. 40 Test Frameworks Code Coverage
  • 41. 41 Build Automation Static Code Analysis
  • 42. 42 Build Automation Static Code Analysis ‣ Testing your Application makes your life more Stress free ‣ Code Quality ‣ Less Production Crashes ‣ Don’t develop Stuff that should not go live ‣ Use Gradle Flavors!
  • 43. 43 Build Automation Final Thoughts ‣ Testing your Application makes your life more Stress free ‣ Code Quality ‣ Less Production Crashes ‣ Don’t develop Stuff that should not go live ‣ DONE = RELEASED ‣ Use Gradle Flavors!
  • 44. 44 Release Process the future