SlideShare a Scribd company logo
Mobile Development
                       Tools and Practices
                             Arnaud Héritier
                              eXo Platform
                               @aheritier




Wednesday, December 14, 11
Our Motivation
                   •         Observations
                        •     eXo Mobile division had many difficulties to
                              stabilize applications (build failures,
                              dependencies to the development
                              environment ...),
                        •     Functional and technical feedbacks were very
                              limited because the deployment/update
                              process was complex for testers / early
                              adopters.


Wednesday, December 14, 11
Our Motivation
                   •         Prescription
                        •      Continuous build and deployment of mobile
                               applications (iOS, Android)
                              •   to speedup the feedback loop
                              •   to increase the number of testers / early
                                  adopters
                              •   to increase the quality and the stability of
                                  these applications.


Wednesday, December 14, 11
Our Motivation


                   • CI wasn't easy to setup the first time,
                             especially for iOS. The experience is worth
                             being shared.




Wednesday, December 14, 11
Webinar Schedule

                   • The development environment
                   • Setup the continuous integration
                   • Setup the continuous deployment


Wednesday, December 14, 11
Environment overview
Wednesday, December 14, 11
The Development
                        Environment for iOS


Wednesday, December 14, 11
iOS Development
                                 Toolbox

                   • Xcode
                    • http://developer.apple.com/xcode/


Wednesday, December 14, 11
Setup a Development
                     Environment for iOS
                   • Apple documentation
                    • http://goo.gl/Ge13t
                   • The most important part is to register your
                             Apple developer account and to correctly
                             set your code signing identity



Wednesday, December 14, 11
Certificates
Wednesday, December 14, 11
Provisioning
Wednesday, December 14, 11
Setup a
               Development
              Environment for
                    iOS
          The developer can spend the
         major part of the day in Xcode
         and the emulator as long as the
         code is regularly committed in
                    the SCM




Wednesday, December 14, 11
The Development
                              Environment for
                                  Android


Wednesday, December 14, 11
Android Development
                         Toolbox
                   •     Java JDK
                        • http://www.oracle.com/technetwork/java/javase/downloads/index.html
                   •     Android SDK
                        •      http://developer.android.com/sdk
                   •         Eclipse 3.7 IDE for Java Developers
                        •      http://eclipse.org
                   •         Apache Maven
                        •      http://maven.apache.org/


Wednesday, December 14, 11
Setup a Development
               Environment for Android
                   •         Installation
                        •       Java JDK
                        •       Android SDK
                               •    Don’t forget to set the ANDROID_HOME environment variable
                        •       Maven 3.0.3 min
                               •    Required by the 3.0 version of the android plugin
                        •       Eclipse
                               •    Use Java Developers edition with its Maven integration (m2e)
                               •    Don’t forget to configure your Maven and ADT paths in eclipse
                                    settings.




Wednesday, December 14, 11
Maven
       installation path
       to use in eclipse




Wednesday, December 14, 11
ADK
       installation path
       to use in eclipse




Wednesday, December 14, 11
Maven POM for an
                              Android Project
                   • Packaging = apk
                   • Uses the plugin
                             com.jayway.maven.plugins.android.generatio
                             n2:android-maven-plugin
                        • version 3.0.0 min
                        • manifest-update goal bound to the phase
                              process-resources


Wednesday, December 14, 11
Setup a Development
               Environment for Android
                   •         Just import your Maven/APK project in eclipse with m2e.
                        •       M2e and its market place will automatically install and
                                configure the Android extension in eclipse
                        •       You’ll be able to manage your project dependencies with
                                Apache Maven
                        •       You don’t have to explicitly use Maven in your development
                                process. M2e does the necessary to hide it.
                   •         Manage your Android project with Apache Maven
                        •       http://www.sonatype.com/books/mvnref-book/reference/
                                android-dev.html
                        •       http://code.google.com/p/maven-android-plugin/



Wednesday, December 14, 11
Maven POM for
         an android
           project




Wednesday, December 14, 11
Setup a
               Development
              Environment for
                  Android
          The developer can spend the
         major part of the day in Eclipse
         and the emulator as long as the
         code is regularly committed in
                    the SCM




Wednesday, December 14, 11
Continuous Integration
                     Environment


Wednesday, December 14, 11
Continuous Integration
                        Toolbox
                   •         Jenkins
                        •       http://jenkins-ci.org/
                   •         Java JDK
                        •       http://www.oracle.com/technetwork/java/javase/downloads/index.html


                   •         Android SDK
                        •       http://developer.android.com/sdk
                   •         Apache Maven
                        •       http://maven.apache.org/
                   •         Xcode
                        •       http://developer.apple.com/xcode/



Wednesday, December 14, 11
Continuous Integration
                        for iOS
                   • Jenkins with the Xcode plugin
                    • https://wiki.jenkins-ci.org/display/
                               JENKINS/Xcode+Plugin
                   • Requires a MacOS platform to build (using
                             a Jenkins agent if necessary)



Wednesday, December 14, 11
Continuous Integration
                        for iOS
                   •         Configure the environment where build will be run
                             as a development environment (Xcode +
                             certificates)
                   •         Connect your Jenkins Server to an iOS agent :
                        •      Use a dedicated user account on the agent host,
                        •      Allow Remote Login (Sharing preferences) on the
                               agent to connect to it using SSH,
                        •      Configure an SSH key on the Server that you will
                               authorize on the agent (~/.ssh/authorized_keys)


Wednesday, December 14, 11
Dedicated account for Jenkins agent
                        on Macos X host
Wednesday, December 14, 11
Activate Remote Login (aka SSH)
Wednesday, December 14, 11
Continuous Integration
                        for iOS
                   •     Create a freestyle job in
                         jenkins with an Xcode
                         Build Step

                        •    Ask to build the IPA

                        •    Configure it to unlock
                             the login keychain

                        •    Use build variables to
                             generate a unique
                             technical version


Wednesday, December 14, 11
Continuous Integration
                        for iOS
                   •     “User interaction
                         is not allowed”
                         error returned while
                         signing your binary ?

                        •    Launch one time
                             manually the build on
                             the agent to validate
                             permanently the
                             access to the keychain
                             for the process
                             “codesign”


Wednesday, December 14, 11
Continuous Integration
                      for Android
                   •         Install an Android SDK on all agents where the
                             android job can be launched
                   •         Configure in Jenkins
                        •      JDK 1.6+
                        •      Apache Maven 3.0.3+
                        •      ANDROID_HOME environment variable or define
                               the property android.sdk.path in a profile
                               activated from maven settings.xml
                               configuration file.


Wednesday, December 14, 11
Continuous Integration
                      for Android
                   • Create a Maven Job
                   • Use the property
                             “android.manifest.versionCode”
                             to inject a unique version number in the
                             application Manifest




Wednesday, December 14, 11
Continuous
                             Deployment
                             Environment


Wednesday, December 14, 11
Continuous
                       Deployment Toolbox
                        • Jenkins
                         • http://jenkins-ci.org/
                        • Appaloosa Store
                         • http://appaloosa-store.com

Wednesday, December 14, 11
Private Store
                        • Appaloosa allow you to manage a private
                             store for Android or iOS devices
                        • Even if our applications are deployed in
                             public app-stores after the release we
                             rely on a private app-store to easily
                             deploy tests versions to our QA or our
                             early adopters.


Wednesday, December 14, 11
Continuous Deployment
                   with Appaloosa
                   •         Install the appaloosa plugin in Jenkins
                        •       https://wiki.jenkins-ci.org/display/JENKINS/Appaloosa
                                +Plugin
                   •         Get the organization token in the administration panel of your
                             appaloosa store
                   •         Create a private store for each system : One for iOS and one
                             for Android
                   •         Configure in each job a post build task to deploy binaries
                        •       **/*.ipa for the iOS build
                        •       **/target/*(-aligned).apk for the android build



Wednesday, December 14, 11
Continuous Deployment
                   with Appaloosa
                   •     Check your emails and
                         install the Appaloosa
                         Store App or open the
                         website on your mobile.

                   •     Both of them will warn
                         you about the availability
                         of a new version of your
                         application.

                   •     Just install/update it



Wednesday, December 14, 11
FULL SCENARIO



Wednesday, December 14, 11
FULL SCENARIO
Wednesday, December 14, 11
iOS development
Wednesday, December 14, 11
Jenkins plugins
Wednesday, December 14, 11
Xcode build configuration in Jenkins
                           for iOS jobs
Wednesday, December 14, 11
Post-build configuration for iOS Jobs
                            in Jenkins
Wednesday, December 14, 11
Let’s launch the iOS jobbuild
Wednesday, December 14, 11
iOS build output
Wednesday, December 14, 11
iOS post-build output
Wednesday, December 14, 11
iOS job page
Wednesday, December 14, 11
We receive a
          notification
        from Appaloosa
                 (using the private store
                       application)




Wednesday, December 14, 11
Notification sticker
       on our Appaloosa
           store app




Wednesday, December 14, 11
In the application
         detail screen we
       can see the update




Wednesday, December 14, 11
Application
            installation or
                update




Wednesday, December 14, 11
Application
            installation or
                update




Wednesday, December 14, 11
It’s ready !




Wednesday, December 14, 11
Enjoy




Wednesday, December 14, 11
Q/A ?



Wednesday, December 14, 11

More Related Content

PDF
Android training in Noida
PDF
ABS 2013: Android Jelly Bean Device Porting Walkthrough
PDF
ABS 2014 - Android Kit Kat Internals
PDF
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
PDF
LinuxCon Europe 2012 - Tizen Mini Summit
PDF
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
PPT
Android Programming Basic
PDF
Android Programming
Android training in Noida
ABS 2013: Android Jelly Bean Device Porting Walkthrough
ABS 2014 - Android Kit Kat Internals
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
LinuxCon Europe 2012 - Tizen Mini Summit
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
Android Programming Basic
Android Programming

What's hot (18)

PPTX
Cross platform mobile application devlopment
PPT
Introduction to android sessions new
PDF
Android Overview
PDF
Videogram - Building a product with Sencha Touch
PDF
Droidcon uk2012 androvm
PDF
Native Android Development with Spring
PDF
Updating Your Website to Drupal 7
PDF
Mobile Web Development with HTML5
PDF
The Forgotten Customer (Socrates 2011)
PDF
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
ODP
Web QA Gaia/B2G/Firefox OS front-end automation
PDF
Installing And Configuring Java Me Tools
PDF
Alpes Jug (29th March, 2010) - Apache Maven
PPTX
Android session-1-sajib
PDF
Backwards Compatibility: Strategies and Tactics
PDF
Geneva Jug (30th March, 2010) - Maven
PDF
GR8Conf 2009. The Grails Plugin System by Graeme Rocher
PDF
Lausanne Jug (08th April, 2010) - Maven
Cross platform mobile application devlopment
Introduction to android sessions new
Android Overview
Videogram - Building a product with Sencha Touch
Droidcon uk2012 androvm
Native Android Development with Spring
Updating Your Website to Drupal 7
Mobile Web Development with HTML5
The Forgotten Customer (Socrates 2011)
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
Web QA Gaia/B2G/Firefox OS front-end automation
Installing And Configuring Java Me Tools
Alpes Jug (29th March, 2010) - Apache Maven
Android session-1-sajib
Backwards Compatibility: Strategies and Tactics
Geneva Jug (30th March, 2010) - Maven
GR8Conf 2009. The Grails Plugin System by Graeme Rocher
Lausanne Jug (08th April, 2010) - Maven
Ad

Viewers also liked (6)

PPTX
Deployment and distribution- iOS
PDF
Continuous Integration & deployment for your Xamarin app
PDF
Fastlane - Automation and Continuous Delivery for iOS Apps
PPTX
iOS App Development Presented by Edifyself
PPTX
iOS App Development Predictions 2017
PPTX
Apple Inc Presentatioin
 
Deployment and distribution- iOS
Continuous Integration & deployment for your Xamarin app
Fastlane - Automation and Continuous Delivery for iOS Apps
iOS App Development Presented by Edifyself
iOS App Development Predictions 2017
Apple Inc Presentatioin
 
Ad

Similar to Mobile developments at eXo (20)

PPTX
Ii 1300-java essentials for android
PPT
Android Application Development Using Java
PDF
Code and Conquer with Globe Labs, October 27, 2012
PDF
LAP2 iOS and Android Development environment setup
PDF
Cross Platform Game Development with GDAP, December 2012
PPTX
Introduction to Mobile Development
PDF
Enterprise OSGi at eBay
PPTX
Android With Cloud
PPTX
Android with cloud
PDF
Hands on iOS developments with jenkins
PDF
Begining Android Development
PDF
Android Development...The 20,000-Foot View
PDF
Dev ops for cross platform mobile modeveast 12
PPTX
Developing for Android-Types of Android Application
PPTX
2.Android Platform_Theory.pptx
PPTX
Bam amor mobile development tools
PDF
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
PDF
IntlandSoftware: codeBeamer 6.0 + Requirements Management
PDF
TOP 10 WEB APP TOOLS FOR EFFICIENT DEVELOPMENT.pdf
PDF
Android Application And Unity3D Game Documentation
Ii 1300-java essentials for android
Android Application Development Using Java
Code and Conquer with Globe Labs, October 27, 2012
LAP2 iOS and Android Development environment setup
Cross Platform Game Development with GDAP, December 2012
Introduction to Mobile Development
Enterprise OSGi at eBay
Android With Cloud
Android with cloud
Hands on iOS developments with jenkins
Begining Android Development
Android Development...The 20,000-Foot View
Dev ops for cross platform mobile modeveast 12
Developing for Android-Types of Android Application
2.Android Platform_Theory.pptx
Bam amor mobile development tools
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
IntlandSoftware: codeBeamer 6.0 + Requirements Management
TOP 10 WEB APP TOOLS FOR EFFICIENT DEVELOPMENT.pdf
Android Application And Unity3D Game Documentation

More from Arnaud Héritier (20)

PDF
From monolith to multi-services, how a platform engineering approach transfor...
PDF
Devops Recto-Verso @ DevoxxMA
PDF
Java is evolving rapidly: Maven helps you staying on track
PDF
Quand java prend de la vitesse, apache maven vous garde sur les rails
PDF
Sonar In Action 20110302-vn
PDF
2014 August - eXo Software Factory Overview
PDF
CRaSH @ JUGSummerCamp 2012 - Quickie
PDF
LavaJUG-Maven 3.x, will it lives up to its promises
PDF
eXo Software Factory Overview
PDF
Apache Maven - eXo TN presentation
PDF
Jenkins User Meetup - eXo usages of Jenkins
PDF
ToursJUG-Maven 3.x, will it lives up to its promises
PDF
YaJUG-Maven 3.x, will it lives up to its promises
PDF
BordeauxJUG-Maven 3.x, will it lives up to its promises
PDF
ToulouseJUG-Maven 3.x, will it lives up to its promises
PPTX
Apache Maven - eXo VN office presentation
PDF
LyonJUG - Maven 3.x, will it live up to its promises?
PDF
Lorraine JUG (1st June, 2010) - Maven
PDF
Riviera JUG (20th April, 2010) - Maven
PDF
Maven for eXo VN
From monolith to multi-services, how a platform engineering approach transfor...
Devops Recto-Verso @ DevoxxMA
Java is evolving rapidly: Maven helps you staying on track
Quand java prend de la vitesse, apache maven vous garde sur les rails
Sonar In Action 20110302-vn
2014 August - eXo Software Factory Overview
CRaSH @ JUGSummerCamp 2012 - Quickie
LavaJUG-Maven 3.x, will it lives up to its promises
eXo Software Factory Overview
Apache Maven - eXo TN presentation
Jenkins User Meetup - eXo usages of Jenkins
ToursJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promises
Apache Maven - eXo VN office presentation
LyonJUG - Maven 3.x, will it live up to its promises?
Lorraine JUG (1st June, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
Maven for eXo VN

Recently uploaded (20)

PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Empathic Computing: Creating Shared Understanding
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
Teaching material agriculture food technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Approach and Philosophy of On baking technology
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Modernizing your data center with Dell and AMD
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Empathic Computing: Creating Shared Understanding
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Chapter 3 Spatial Domain Image Processing.pdf
cuic standard and advanced reporting.pdf
Machine learning based COVID-19 study performance prediction
Dropbox Q2 2025 Financial Results & Investor Presentation
Teaching material agriculture food technology
Review of recent advances in non-invasive hemoglobin estimation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectral efficient network and resource selection model in 5G networks
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Approach and Philosophy of On baking technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Modernizing your data center with Dell and AMD

Mobile developments at eXo

  • 1. Mobile Development Tools and Practices Arnaud Héritier eXo Platform @aheritier Wednesday, December 14, 11
  • 2. Our Motivation • Observations • eXo Mobile division had many difficulties to stabilize applications (build failures, dependencies to the development environment ...), • Functional and technical feedbacks were very limited because the deployment/update process was complex for testers / early adopters. Wednesday, December 14, 11
  • 3. Our Motivation • Prescription • Continuous build and deployment of mobile applications (iOS, Android) • to speedup the feedback loop • to increase the number of testers / early adopters • to increase the quality and the stability of these applications. Wednesday, December 14, 11
  • 4. Our Motivation • CI wasn't easy to setup the first time, especially for iOS. The experience is worth being shared. Wednesday, December 14, 11
  • 5. Webinar Schedule • The development environment • Setup the continuous integration • Setup the continuous deployment Wednesday, December 14, 11
  • 7. The Development Environment for iOS Wednesday, December 14, 11
  • 8. iOS Development Toolbox • Xcode • http://developer.apple.com/xcode/ Wednesday, December 14, 11
  • 9. Setup a Development Environment for iOS • Apple documentation • http://goo.gl/Ge13t • The most important part is to register your Apple developer account and to correctly set your code signing identity Wednesday, December 14, 11
  • 12. Setup a Development Environment for iOS The developer can spend the major part of the day in Xcode and the emulator as long as the code is regularly committed in the SCM Wednesday, December 14, 11
  • 13. The Development Environment for Android Wednesday, December 14, 11
  • 14. Android Development Toolbox • Java JDK • http://www.oracle.com/technetwork/java/javase/downloads/index.html • Android SDK • http://developer.android.com/sdk • Eclipse 3.7 IDE for Java Developers • http://eclipse.org • Apache Maven • http://maven.apache.org/ Wednesday, December 14, 11
  • 15. Setup a Development Environment for Android • Installation • Java JDK • Android SDK • Don’t forget to set the ANDROID_HOME environment variable • Maven 3.0.3 min • Required by the 3.0 version of the android plugin • Eclipse • Use Java Developers edition with its Maven integration (m2e) • Don’t forget to configure your Maven and ADT paths in eclipse settings. Wednesday, December 14, 11
  • 16. Maven installation path to use in eclipse Wednesday, December 14, 11
  • 17. ADK installation path to use in eclipse Wednesday, December 14, 11
  • 18. Maven POM for an Android Project • Packaging = apk • Uses the plugin com.jayway.maven.plugins.android.generatio n2:android-maven-plugin • version 3.0.0 min • manifest-update goal bound to the phase process-resources Wednesday, December 14, 11
  • 19. Setup a Development Environment for Android • Just import your Maven/APK project in eclipse with m2e. • M2e and its market place will automatically install and configure the Android extension in eclipse • You’ll be able to manage your project dependencies with Apache Maven • You don’t have to explicitly use Maven in your development process. M2e does the necessary to hide it. • Manage your Android project with Apache Maven • http://www.sonatype.com/books/mvnref-book/reference/ android-dev.html • http://code.google.com/p/maven-android-plugin/ Wednesday, December 14, 11
  • 20. Maven POM for an android project Wednesday, December 14, 11
  • 21. Setup a Development Environment for Android The developer can spend the major part of the day in Eclipse and the emulator as long as the code is regularly committed in the SCM Wednesday, December 14, 11
  • 22. Continuous Integration Environment Wednesday, December 14, 11
  • 23. Continuous Integration Toolbox • Jenkins • http://jenkins-ci.org/ • Java JDK • http://www.oracle.com/technetwork/java/javase/downloads/index.html • Android SDK • http://developer.android.com/sdk • Apache Maven • http://maven.apache.org/ • Xcode • http://developer.apple.com/xcode/ Wednesday, December 14, 11
  • 24. Continuous Integration for iOS • Jenkins with the Xcode plugin • https://wiki.jenkins-ci.org/display/ JENKINS/Xcode+Plugin • Requires a MacOS platform to build (using a Jenkins agent if necessary) Wednesday, December 14, 11
  • 25. Continuous Integration for iOS • Configure the environment where build will be run as a development environment (Xcode + certificates) • Connect your Jenkins Server to an iOS agent : • Use a dedicated user account on the agent host, • Allow Remote Login (Sharing preferences) on the agent to connect to it using SSH, • Configure an SSH key on the Server that you will authorize on the agent (~/.ssh/authorized_keys) Wednesday, December 14, 11
  • 26. Dedicated account for Jenkins agent on Macos X host Wednesday, December 14, 11
  • 27. Activate Remote Login (aka SSH) Wednesday, December 14, 11
  • 28. Continuous Integration for iOS • Create a freestyle job in jenkins with an Xcode Build Step • Ask to build the IPA • Configure it to unlock the login keychain • Use build variables to generate a unique technical version Wednesday, December 14, 11
  • 29. Continuous Integration for iOS • “User interaction is not allowed” error returned while signing your binary ? • Launch one time manually the build on the agent to validate permanently the access to the keychain for the process “codesign” Wednesday, December 14, 11
  • 30. Continuous Integration for Android • Install an Android SDK on all agents where the android job can be launched • Configure in Jenkins • JDK 1.6+ • Apache Maven 3.0.3+ • ANDROID_HOME environment variable or define the property android.sdk.path in a profile activated from maven settings.xml configuration file. Wednesday, December 14, 11
  • 31. Continuous Integration for Android • Create a Maven Job • Use the property “android.manifest.versionCode” to inject a unique version number in the application Manifest Wednesday, December 14, 11
  • 32. Continuous Deployment Environment Wednesday, December 14, 11
  • 33. Continuous Deployment Toolbox • Jenkins • http://jenkins-ci.org/ • Appaloosa Store • http://appaloosa-store.com Wednesday, December 14, 11
  • 34. Private Store • Appaloosa allow you to manage a private store for Android or iOS devices • Even if our applications are deployed in public app-stores after the release we rely on a private app-store to easily deploy tests versions to our QA or our early adopters. Wednesday, December 14, 11
  • 35. Continuous Deployment with Appaloosa • Install the appaloosa plugin in Jenkins • https://wiki.jenkins-ci.org/display/JENKINS/Appaloosa +Plugin • Get the organization token in the administration panel of your appaloosa store • Create a private store for each system : One for iOS and one for Android • Configure in each job a post build task to deploy binaries • **/*.ipa for the iOS build • **/target/*(-aligned).apk for the android build Wednesday, December 14, 11
  • 36. Continuous Deployment with Appaloosa • Check your emails and install the Appaloosa Store App or open the website on your mobile. • Both of them will warn you about the availability of a new version of your application. • Just install/update it Wednesday, December 14, 11
  • 41. Xcode build configuration in Jenkins for iOS jobs Wednesday, December 14, 11
  • 42. Post-build configuration for iOS Jobs in Jenkins Wednesday, December 14, 11
  • 43. Let’s launch the iOS jobbuild Wednesday, December 14, 11
  • 44. iOS build output Wednesday, December 14, 11
  • 46. iOS job page Wednesday, December 14, 11
  • 47. We receive a notification from Appaloosa (using the private store application) Wednesday, December 14, 11
  • 48. Notification sticker on our Appaloosa store app Wednesday, December 14, 11
  • 49. In the application detail screen we can see the update Wednesday, December 14, 11
  • 50. Application installation or update Wednesday, December 14, 11
  • 51. Application installation or update Wednesday, December 14, 11
  • 52. It’s ready ! Wednesday, December 14, 11