SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
Jenkins User Conference        Paris, 17 April 2012   #jenkinsconf


       Hands-On iOS Developments with
       Jenkins

                     Arnaud Héritier
                     eXo Platform
                          http://www.exoplatform.com

                     Mathieu Hausherr
                     Octo Technology
                                 http://www.octo.com


            http://goo.gl/XWGDy                                      1
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




     Polls

•    English or french ?
•    Who is already doing iOS developments ?
•    Who is already using JenkinsCI ?
•    Who is already using JenkinsCI to manage
     iOS developments ?




                           http://goo.gl/XWGDy                                2
Jenkins User Conference                     Paris, 17 April 2012       #jenkinsconf



   Arnaud Héritier
   "   Jenkins                                       "   eXo platform
       –  Committer since 2010                            –  Software Factory
       –  Maven integration                                  Manager
       –  Xcode, Appaloosa plugins …                      –  In charge of tools
                                                             and methods
   "   Apache Maven                                  "   Contact me
       –  Committer since 2004 and
                                                          –  http://aheritier.net
          member of the Project
          Management Committee                            –  Twitter : @aheritier
       –  Coauthor of « Apache                            –  Skype : aheritier
          Maven »
           •  published by Pearson (in
              French)




                               http://goo.gl/XWGDy                                    3
Jenkins User Conference                  Paris, 17 April 2012   #jenkinsconf



   Mathieu Hausherr
   "   iOS                                 "   Octo Technology
       –  Developer since 2008                  –  Mobile Expert
                                                –  Installation of software
                                                   factories for customers
   "   Other mobile platforms
       –  Android, Bada, Blackberry,
          Windows Phone 7...               "   Contact me
                                                –  Mail: mha@octo.com
                                                –  Twitter : @mhausherr




                            http://goo.gl/XWGDy                                4
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf



   Slide legend
   "   If you have a mac with XCode,
       follow us.

   "   In this slide you have something to
       do.

   "   In this slide we explain a
       workaround. Don’t be afraid by this
       explanation. You only need it
       tomorrow at home for your own
       Software factory.

   "   Find these slides here
                          http://goo.gl/XWGDy                                5
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf


   Hands-On iOS Developments with Jenkins

   "   Concepts
      –  iOS specificities
      –  Continuous integration
      –  Continuous deployment

   "   How to
      –  Step by step Jenkins server setup
      –  Tips & Tricks to deals with Apple’s bug

   "   Hands on
      –  Prepare the Sample App
      –  Setup your Jenkins jobs
      –  Deploy your app on your device
                          http://goo.gl/XWGDy                                6
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




  Goals of Jenkins-CI on iOS

  CONCEPTS


                          http://goo.gl/XWGDy                                7
Jenkins User Conference                Paris, 17 April 2012    #jenkinsconf



Reminder: Apple application
provisioning strategy

                              Limite of           Apple
              Validity                                        Availability
                              devices           validation


  Ad Hoc      1 year             100                 NO       Everybody


                                                               Only for
  In House    1 year             ∞                   NO
                                                              companies


 App Store    For life           ∞                   YES      Everybody


                          http://goo.gl/XWGDy                                 8
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




 Certificate management pitfalls

•  Certificate with the same name doesn’t
   work

•  Create specific keychains per project
  –  Never use default keychain


•  “security set-default” command isn’t thread
   safe
  –  Allow only one executor per server
                          http://goo.gl/XWGDy                                9
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




 Why automatic distribution is useful for?

•  Speedup the feedback loop with early
   adopters and QA Teams

•  Improve time to market
  –  Spend time to develop instead of distribute


•  Resign apps for certificates expiration
  –  Ad Hoc and In House certificates expire after one
     year
  –  Rebuild all your app safely
                          http://goo.gl/XWGDy                                10
Jenkins User Conference                               Paris, 17 April 2012    #jenkinsconf




Continuous integration concepts
                                     SenTesting    Clang
                                                                   Software
                                                                    Factory

                  Source code            Unit       Static
              1      + tests            tests      analysis


  Developer
                                         3
                      Git             Jenkins


                                 2
                      Code            Building
                   versionning       application



              1   Source code
                     + tests
  Developer




                                     http://goo.gl/XWGDy                                     11
Jenkins User Conference                                 Paris, 17 April 2012    #jenkinsconf




Continuous deployment concepts
                    Apple doc
                                                    Software
                                                     Factory


                    Documentation
                      generation                                               App Store
                                                                      Submit
                         2                                              5
     Git              Jenkins
                                      4             Archive                      Public
                                                                                  store
                1                   Archive


                      Building
                                                                                  6       Download
     Code
  versionning        application


                                      Appaloosa
                                                                  Push
                             4
                        Publish
                                                                  5
                                                                  6
                                          Private      Download
                                           store

                                                                                 User
                                                                                devices
                                       http://goo.gl/XWGDy                                      12
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Appaloosa concept




                          http://goo.gl/XWGDy                                13
Jenkins User Conference                      Paris, 17 April 2012   #jenkinsconf




Getting your device
UDID
We need your device UDID to
be able to push apps to your
device

1.  Download “UDID sender” on
    the App Store
2.  Send UDID via E-Mail to
    mha@octo.com




                                http://goo.gl/XWGDy                                14
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




  Step by step guide for Jenkins-CI on iOS

  HOW TO


                          http://goo.gl/XWGDy                                15
Jenkins User Conference                      Paris, 17 April 2012   #jenkinsconf




Plugins installation
Ø    Home
Ø    Manage Jenkins
Ø    Manage Plugins
Ø    Install these plugins
        •    Appaloosa
        •    Clang Scan-Build
        •    Git
        •    Xcode




                                http://goo.gl/XWGDy                                16
Jenkins User Conference                           Paris, 17 April 2012   #jenkinsconf




Plugins configuration
•    By default Xcode plugin
     settings should be good for a
     standard installation
•    Clang Static Analyzer
     binaries have to be
     downloaded from
     http://clang-
     analyzer.llvm.org/ and
     extracted on the server or
     agent where they’ll be used
•    In “System settings” (Clang
     Scan-Build Plugin part) you
     need to add at least one
     installation.




                                     http://goo.gl/XWGDy                                17
Jenkins User Conference                Paris, 17 April 2012     #jenkinsconf



What if I soon have a Jenkins on a non
Mac server?                                           Git
•     Why use a non Mac
     Jenkins?
     –  Regroup all your jobs                        Code
                                                  versionning
     –  Maintain only one
        instance of Jenkins
                                                                 Master Node
     –  Create dependencies                        Jenkins
        between mobile and not
        mobile projects
                                                  Scheduling
                                                     build

•  How use a non Mac
   Jenkins?
                                                                 MacOS Node
     –  Create Mac OS node                         XCode

     –  Only need a SSH
        connection
                                                   Building
                                                  application



                          http://goo.gl/XWGDy                                  18
Jenkins User Conference                              Paris, 17 April 2012   #jenkinsconf




Node creation
•    To create an agent
     dedicated for xcode builds
     you need to create a node
     with :
      •    A label to select jobs for
           which you’ll use it
      •    A SSH connection with a
           password less private key
      •    The path for Clang checker
           binaries




                                        http://goo.gl/XWGDy                                19
Jenkins User Conference                     Paris, 17 April 2012   #jenkinsconf




Affect job to a node
•    Create a “MacOSX” label
•    Force job to run on
     “MacOSX”-labeled nodes




                               http://goo.gl/XWGDy                                20
Jenkins User Conference                             Paris, 17 April 2012   #jenkinsconf

                                      sudo vim `xcode-select -print-path`/
                                      Platforms/iPhoneSimulator.platform/
                                      Developer/Tools/RunPlatformUnitTests
Xcode bug for iOS unit
testing                               Replace
                                      Warning ${LINENO} "Skipping tests; the
Source: http://                       iPhoneSimulator platform does not currently
www.raingrove.com/                    support application-hosted tests (TEST_HOST
2012/03/28/running-ocunit-and-        set)."
specta-tests-from-command-            By:
line.html                             export CFFIXED_USER_HOME="$
                                      {BUILT_PRODUCTS_DIR}/UserHome/"
•    Edit your RunPlatformUnitTests   mkdir -p "${CFFIXED_USER_HOME}"
                                      mkdir -p "${CFFIXED_USER_HOME}/Library/
                                      Caches"
                                      mkdir "${CFFIXED_USER_HOME}/Library/
                                      Preferences"
                                      mkdir "${CFFIXED_USER_HOME}/Documents"
                                      export OTHER_TEST_FLAGS="$
                                      {OTHER_TEST_FLAGS} -
                                      RegisterForSystemEvents"
                                      RunTestsForApplication "${TEST_HOST}" "$
                                      {TEST_BUNDLE_PATH}"




                                       http://goo.gl/XWGDy                                21
Jenkins User Conference                       Paris, 17 April 2012   #jenkinsconf




Configure your project
for Unit Tests
•    Check run action for your
     Test target

•    Share your Scheme




                                 http://goo.gl/XWGDy                                22
Jenkins User Conference                              Paris, 17 April 2012   #jenkinsconf




Add Xcode unit testing
build phase
•    Commit your scheme on GIT

•    Use Scheme instead of target
     for testing. Use target only for
     building.

•    Set SDK to iphonesimulator

•    Set Configuration to Debug

•    Add TEST_AFTER_BUILD=YES in
     Custom xcodebuild
     arguments




                                        http://goo.gl/XWGDy                                23
Jenkins User Conference                      Paris, 17 April 2012   #jenkinsconf


                                -  (void)test_parseRoomsFromDictionary_!
                                returnObjectsArrayForCorrectDictionnary!
                                {!
Write a test                        // Given!
•    Use SenTestKit Framework       NSDictionary *dictionnary =
                                [NSDictionary dictionaryWithObject:
•    Add Mock With OCMock       [NSArray array] forKey:KEY_ROOMS];!
                                    !
                                    // When!
                                    NSArray* rooms = [JUCEventsService
                                parseRoomsFromDictionary:dictionnary];!
                                      !
                                    // Then!
                                    STAssertTrue([rooms isKindOfClass:
                                [NSArray class]],nil);!
                                }




                                http://goo.gl/XWGDy                                24
Jenkins User Conference                   Paris, 17 April 2012   #jenkinsconf




Add clang static
analysis build phase
•    Configure your target




                             http://goo.gl/XWGDy                                25
Jenkins User Conference                        Paris, 17 April 2012   #jenkinsconf




Appaloosa jenkins’
integration
•    Check IPA generation

•    Add Appaloosa step to your
     project

•    Receive Push Notification




                Token: igjrz4w701ynrkzd2zwh2u450ilg00dg


                                  http://goo.gl/XWGDy                                26
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




 Publish to the App Store

•  Apple doesn’t provide API

•  Need manual actions
  –  On a Mac
  –  Without proxy




                          http://goo.gl/XWGDy                                27
Jenkins User Conference                     Paris, 17 April 2012   #jenkinsconf




Generate Apple Doc
•  Install Apple Doc
https://github.com/tomaz/
appledoc

•  Command line
appledoc conf.plist
<outfile>

•  Add an “aggregate” target
   to the project
Perform automatic doc
generation locally




                               http://goo.gl/XWGDy                                28
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




  Jenkins set-up, from GitHub to your device

  HANDS ON … LET’S GO


                          http://goo.gl/XWGDy                                29
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Fork on github the
sample project
http://goo.gl/alKgW

And then clone your
fork
git clone git://
github.com/XXXX/
JenkinsSample.git




                          http://goo.gl/XWGDy                                30
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Setup a continuous
integration job
Setup Git




                          http://goo.gl/XWGDy                                31
Jenkins User Conference                     Paris, 17 April 2012   #jenkinsconf




Setup a continuous
integration job
Add a Clang Scan-Build Phase




                               http://goo.gl/XWGDy                                32
Jenkins User Conference                       Paris, 17 April 2012   #jenkinsconf




Setup a continuous
integration job
Add an Xcode build step to
execute tests
•  Use a schema (JUC Paris)
•    SDK = iphonesimulator
•  Config = Debug
•  Args = TEST_AFTER_BUILD=YES
•  Clean test reports




                                 http://goo.gl/XWGDy                                33
Jenkins User Conference                      Paris, 17 April 2012   #jenkinsconf




Setup a continuous
integration job
Activate Clang and unit tests
reports




                                http://goo.gl/XWGDy                                34
Jenkins User Conference                        Paris, 17 April 2012   #jenkinsconf




Fix the test
In
JUC ParisTests/JUC_ParisTests.m
Comment the failling test
Commit and push on github
git add .
git commit
git push
Relaunch your build




                                  http://goo.gl/XWGDy                                35
Jenkins User Conference                       Paris, 17 April 2012   #jenkinsconf




Change your Bundle
Id
In
Project Properties > JUC Paris
Target > Summary
Change
Bundle identifier to
com.jenkins.juc-
paris.app.yourname
Commit and push on github
git add .
git commit
git push




                                 http://goo.gl/XWGDy                                36
Jenkins User Conference                   Paris, 17 April 2012   #jenkinsconf




Add a deployment
Job
Same github settings
Create an Xcode build step
•  Target = JUC Paris
•  Config = Release
•  Setup versions
•  Build IPA
•  Embedded profile




                             http://goo.gl/XWGDy                                37
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Appaloosa installation
on your device




 http://goo.gl/hQ2Ue




                          http://goo.gl/XWGDy                                38
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Appaloosa installation
on your device
Account information
•  Login:
     mha+juc@octo.com
•    Password:

     jenkins 




                          http://goo.gl/XWGDy                                39
Jenkins User Conference                          Paris, 17 April 2012   #jenkinsconf




Add a deployment
Job
Setup Appaloosa with this token :
igjrz4w701ynrkzd2zwh2u450ilg00dg




                                    http://goo.gl/XWGDy                                40
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf




Enjoy




                          http://goo.gl/XWGDy                                41
Jenkins User Conference                Paris, 17 April 2012   #jenkinsconf



   Thank You To Our Sponsors

   Platinum Sponsor




   Gold Sponsor




   Silver Sponsor




                          http://goo.gl/XWGDy                                42

Contenu connexe

En vedette

Sema local SEO 2010
Sema local SEO 2010Sema local SEO 2010
Sema local SEO 2010Wil Reynolds
 
Social media for b2b - Madhouse Associates seminar
Social media for b2b - Madhouse Associates seminarSocial media for b2b - Madhouse Associates seminar
Social media for b2b - Madhouse Associates seminarSmoking Gun PR
 
Social Media for B2B - Marta Majewska - Spring Creek
Social Media for B2B - Marta Majewska - Spring CreekSocial Media for B2B - Marta Majewska - Spring Creek
Social Media for B2B - Marta Majewska - Spring CreekMcCann Brussels
 
82746248 study-of-nec-transmitter
82746248 study-of-nec-transmitter82746248 study-of-nec-transmitter
82746248 study-of-nec-transmitterhomeworkping3
 
امريكانا السعوديه
امريكانا السعوديهامريكانا السعوديه
امريكانا السعوديهMohamed Zakaria
 
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)Газета «Христианская Абхазия», Август 2014 г. № 8 (89)
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)anyhaorg
 
Gale smm strategy and plan 20110222
Gale  smm strategy and plan 20110222Gale  smm strategy and plan 20110222
Gale smm strategy and plan 20110222Soumya Ravi
 
Sejarah Berdirinya Borobudur
Sejarah Berdirinya BorobudurSejarah Berdirinya Borobudur
Sejarah Berdirinya BorobudurFirdika Arini
 
Class expectations for online communication
Class expectations for online communicationClass expectations for online communication
Class expectations for online communicationerinmarkus
 
iOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and TricksiOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and Tricksmobiletestsummit
 
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins CloudBees
 
Get More Work: How to Build a Partnership With an Agency
Get More Work: How to Build a Partnership With an AgencyGet More Work: How to Build a Partnership With an Agency
Get More Work: How to Build a Partnership With an Agencybrandextract
 
Mobile testing and its part in testing tools
Mobile testing and its part in testing toolsMobile testing and its part in testing tools
Mobile testing and its part in testing toolsKari Kakkonen
 
82743 science-specimen-paper-2-2014-2017
82743 science-specimen-paper-2-2014-201782743 science-specimen-paper-2-2014-2017
82743 science-specimen-paper-2-2014-2017Smart Exam Resources
 
Dialog peradaban di malaysia CTU551
Dialog peradaban di malaysia CTU551Dialog peradaban di malaysia CTU551
Dialog peradaban di malaysia CTU551Ahmad Izzuddin
 
Dialog Antara Tamadun Di Malaysia
Dialog Antara Tamadun Di MalaysiaDialog Antara Tamadun Di Malaysia
Dialog Antara Tamadun Di Malaysiamohdsanusisidik
 
Your Professional Network Is Powered By Bacon
Your Professional Network Is Powered By BaconYour Professional Network Is Powered By Bacon
Your Professional Network Is Powered By BaconPaul Brown
 

En vedette (20)

Sema local SEO 2010
Sema local SEO 2010Sema local SEO 2010
Sema local SEO 2010
 
Social media for b2b - Madhouse Associates seminar
Social media for b2b - Madhouse Associates seminarSocial media for b2b - Madhouse Associates seminar
Social media for b2b - Madhouse Associates seminar
 
Social Media for B2B - Marta Majewska - Spring Creek
Social Media for B2B - Marta Majewska - Spring CreekSocial Media for B2B - Marta Majewska - Spring Creek
Social Media for B2B - Marta Majewska - Spring Creek
 
82746248 study-of-nec-transmitter
82746248 study-of-nec-transmitter82746248 study-of-nec-transmitter
82746248 study-of-nec-transmitter
 
امريكانا السعوديه
امريكانا السعوديهامريكانا السعوديه
امريكانا السعوديه
 
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)Газета «Христианская Абхазия», Август 2014 г. № 8 (89)
Газета «Христианская Абхазия», Август 2014 г. № 8 (89)
 
Inzoomen op de kaart
Inzoomen op de kaartInzoomen op de kaart
Inzoomen op de kaart
 
Gale smm strategy and plan 20110222
Gale  smm strategy and plan 20110222Gale  smm strategy and plan 20110222
Gale smm strategy and plan 20110222
 
Sejarah Berdirinya Borobudur
Sejarah Berdirinya BorobudurSejarah Berdirinya Borobudur
Sejarah Berdirinya Borobudur
 
Class expectations for online communication
Class expectations for online communicationClass expectations for online communication
Class expectations for online communication
 
iOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and TricksiOS Automated Testing with Calabash: Tips and Tricks
iOS Automated Testing with Calabash: Tips and Tricks
 
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
Automated Testing and Continuous Deployment for Mobile Apps with Jenkins
 
Get More Work: How to Build a Partnership With an Agency
Get More Work: How to Build a Partnership With an AgencyGet More Work: How to Build a Partnership With an Agency
Get More Work: How to Build a Partnership With an Agency
 
Mobile testing and its part in testing tools
Mobile testing and its part in testing toolsMobile testing and its part in testing tools
Mobile testing and its part in testing tools
 
82743 science-specimen-paper-2-2014-2017
82743 science-specimen-paper-2-2014-201782743 science-specimen-paper-2-2014-2017
82743 science-specimen-paper-2-2014-2017
 
Dialog peradaban di malaysia CTU551
Dialog peradaban di malaysia CTU551Dialog peradaban di malaysia CTU551
Dialog peradaban di malaysia CTU551
 
Dialog antara tamadun
Dialog antara tamadunDialog antara tamadun
Dialog antara tamadun
 
Dialog Antara Tamadun Di Malaysia
Dialog Antara Tamadun Di MalaysiaDialog Antara Tamadun Di Malaysia
Dialog Antara Tamadun Di Malaysia
 
Your Professional Network Is Powered By Bacon
Your Professional Network Is Powered By BaconYour Professional Network Is Powered By Bacon
Your Professional Network Is Powered By Bacon
 
Yoga Education
Yoga EducationYoga Education
Yoga Education
 

Similaire à Hands on iOS developments with jenkins

Hands on iOS developments with Jenkins
Hands on iOS developments with JenkinsHands on iOS developments with Jenkins
Hands on iOS developments with JenkinseXo Platform
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsShashikant Jagtap
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...OW2
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...Niklas Heidloff
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talkOlivier Lamy
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13Niklas Heidloff
 
Continuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DContinuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DAnton Weiss
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...Heiko Voigt
 
UKLUG 2012 - XPages Extensibility API - going deep!
UKLUG 2012 - XPages Extensibility API - going deep!UKLUG 2012 - XPages Extensibility API - going deep!
UKLUG 2012 - XPages Extensibility API - going deep!René Winkelmeyer
 
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016Florent BENOIT
 
Building an Accessible Component Library
Building an Accessible Component LibraryBuilding an Accessible Component Library
Building an Accessible Component LibraryAri Rizzitano
 
NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!René Winkelmeyer
 
Applying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldApplying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldFederico Capoano
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with AppiumSrijan Technologies
 
Next Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOpsNext Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOpsRamadoni Ashudi
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Ivo Jansch
 

Similaire à Hands on iOS developments with jenkins (20)

Hands on iOS developments with Jenkins
Hands on iOS developments with JenkinsHands on iOS developments with Jenkins
Hands on iOS developments with Jenkins
 
iOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS AppsiOSDevUK Conference- DevOps for iOS Apps
iOSDevUK Conference- DevOps for iOS Apps
 
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
Enabling DevOps for IoT software development, powered by Open Source, OW2onli...
 
Jenkins 1
Jenkins 1Jenkins 1
Jenkins 1
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
 
Juc paris olivier lamy talk
Juc paris olivier lamy talkJuc paris olivier lamy talk
Juc paris olivier lamy talk
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13
 
Continuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&DContinuous Delivery for Mobile R&D
Continuous Delivery for Mobile R&D
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
UKLUG 2012 - XPages Extensibility API - going deep!
UKLUG 2012 - XPages Extensibility API - going deep!UKLUG 2012 - XPages Extensibility API - going deep!
UKLUG 2012 - XPages Extensibility API - going deep!
 
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
Eclipse Che: The Next-Gen Eclipse IDE - Bordeaux jug 2016
 
Building an Accessible Component Library
Building an Accessible Component LibraryBuilding an Accessible Component Library
Building an Accessible Component Library
 
NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!NLLUG 2012 - XPages Extensibility API - going deep!
NLLUG 2012 - XPages Extensibility API - going deep!
 
Applying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real worldApplying the Unix Philosophy to Django projects: a report from the real world
Applying the Unix Philosophy to Django projects: a report from the real world
 
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
 
Next Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOpsNext Level DevOps Implementation with GitOps
Next Level DevOps Implementation with GitOps
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
 

Plus de Arnaud Héritier

Devops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMADevops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMAArnaud Héritier
 
Java is evolving rapidly: Maven helps you staying on track
Java is evolving rapidly:  Maven helps you staying on trackJava is evolving rapidly:  Maven helps you staying on track
Java is evolving rapidly: Maven helps you staying on trackArnaud Héritier
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsArnaud Héritier
 
Sonar In Action 20110302-vn
Sonar In Action 20110302-vnSonar In Action 20110302-vn
Sonar In Action 20110302-vnArnaud Héritier
 
2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory OverviewArnaud Héritier
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieArnaud Héritier
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
eXo Software Factory Overview
eXo Software Factory OvervieweXo Software Factory Overview
eXo Software Factory OverviewArnaud Héritier
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentationArnaud Héritier
 
Mobile developments at eXo
Mobile developments at eXoMobile developments at eXo
Mobile developments at eXoArnaud Héritier
 
Jenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of JenkinsJenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of JenkinsArnaud Héritier
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
BordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
ToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
Apache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentationApache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentationArnaud Héritier
 
LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?Arnaud Héritier
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenArnaud Héritier
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenArnaud Héritier
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenArnaud Héritier
 

Plus de Arnaud Héritier (20)

Devops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMADevops Recto-Verso @ DevoxxMA
Devops Recto-Verso @ DevoxxMA
 
Java is evolving rapidly: Maven helps you staying on track
Java is evolving rapidly:  Maven helps you staying on trackJava is evolving rapidly:  Maven helps you staying on track
Java is evolving rapidly: Maven helps you staying on track
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
 
Sonar In Action 20110302-vn
Sonar In Action 20110302-vnSonar In Action 20110302-vn
Sonar In Action 20110302-vn
 
2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview2014 August - eXo Software Factory Overview
2014 August - eXo Software Factory Overview
 
CRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - QuickieCRaSH @ JUGSummerCamp 2012 - Quickie
CRaSH @ JUGSummerCamp 2012 - Quickie
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promises
 
eXo Software Factory Overview
eXo Software Factory OvervieweXo Software Factory Overview
eXo Software Factory Overview
 
Apache Maven - eXo TN presentation
Apache Maven - eXo TN presentationApache Maven - eXo TN presentation
Apache Maven - eXo TN presentation
 
Mobile developments at eXo
Mobile developments at eXoMobile developments at eXo
Mobile developments at eXo
 
Jenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of JenkinsJenkins User Meetup - eXo usages of Jenkins
Jenkins User Meetup - eXo usages of Jenkins
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promises
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-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
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-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
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-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
Apache Maven - eXo VN office presentationApache Maven - eXo VN office presentation
Apache Maven - eXo VN office presentation
 
LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?LyonJUG - Maven 3.x, will it live up to its promises?
LyonJUG - Maven 3.x, will it live up to its promises?
 
Lorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - MavenLorraine JUG (1st June, 2010) - Maven
Lorraine JUG (1st June, 2010) - Maven
 
Riviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - MavenRiviera JUG (20th April, 2010) - Maven
Riviera JUG (20th April, 2010) - Maven
 
Lausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - MavenLausanne Jug (08th April, 2010) - Maven
Lausanne Jug (08th April, 2010) - Maven
 

Dernier

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 

Dernier (20)

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 

Hands on iOS developments with jenkins

  • 1. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Hands-On iOS Developments with Jenkins Arnaud Héritier eXo Platform http://www.exoplatform.com Mathieu Hausherr Octo Technology http://www.octo.com http://goo.gl/XWGDy 1
  • 2. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Polls •  English or french ? •  Who is already doing iOS developments ? •  Who is already using JenkinsCI ? •  Who is already using JenkinsCI to manage iOS developments ? http://goo.gl/XWGDy 2
  • 3. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Arnaud Héritier "   Jenkins " eXo platform –  Committer since 2010 –  Software Factory –  Maven integration Manager –  Xcode, Appaloosa plugins … –  In charge of tools and methods "   Apache Maven "   Contact me –  Committer since 2004 and –  http://aheritier.net member of the Project Management Committee –  Twitter : @aheritier –  Coauthor of « Apache –  Skype : aheritier Maven » •  published by Pearson (in French) http://goo.gl/XWGDy 3
  • 4. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Mathieu Hausherr "   iOS "   Octo Technology –  Developer since 2008 –  Mobile Expert –  Installation of software factories for customers "   Other mobile platforms –  Android, Bada, Blackberry, Windows Phone 7... "   Contact me –  Mail: mha@octo.com –  Twitter : @mhausherr http://goo.gl/XWGDy 4
  • 5. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Slide legend "   If you have a mac with XCode, follow us. "   In this slide you have something to do. "   In this slide we explain a workaround. Don’t be afraid by this explanation. You only need it tomorrow at home for your own Software factory. "   Find these slides here http://goo.gl/XWGDy 5
  • 6. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Hands-On iOS Developments with Jenkins "   Concepts –  iOS specificities –  Continuous integration –  Continuous deployment "   How to –  Step by step Jenkins server setup –  Tips & Tricks to deals with Apple’s bug "   Hands on –  Prepare the Sample App –  Setup your Jenkins jobs –  Deploy your app on your device http://goo.gl/XWGDy 6
  • 7. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Goals of Jenkins-CI on iOS CONCEPTS http://goo.gl/XWGDy 7
  • 8. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Reminder: Apple application provisioning strategy Limite of Apple Validity Availability devices validation Ad Hoc 1 year 100 NO Everybody Only for In House 1 year ∞ NO companies App Store For life ∞ YES Everybody http://goo.gl/XWGDy 8
  • 9. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Certificate management pitfalls •  Certificate with the same name doesn’t work •  Create specific keychains per project –  Never use default keychain •  “security set-default” command isn’t thread safe –  Allow only one executor per server http://goo.gl/XWGDy 9
  • 10. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Why automatic distribution is useful for? •  Speedup the feedback loop with early adopters and QA Teams •  Improve time to market –  Spend time to develop instead of distribute •  Resign apps for certificates expiration –  Ad Hoc and In House certificates expire after one year –  Rebuild all your app safely http://goo.gl/XWGDy 10
  • 11. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Continuous integration concepts SenTesting Clang Software Factory Source code Unit Static 1 + tests tests analysis Developer 3 Git Jenkins 2 Code Building versionning application 1 Source code + tests Developer http://goo.gl/XWGDy 11
  • 12. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Continuous deployment concepts Apple doc Software Factory Documentation generation App Store Submit 2 5 Git Jenkins 4 Archive Public store 1 Archive Building 6 Download Code versionning application Appaloosa Push 4 Publish 5 6 Private Download store User devices http://goo.gl/XWGDy 12
  • 13. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa concept http://goo.gl/XWGDy 13
  • 14. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Getting your device UDID We need your device UDID to be able to push apps to your device 1.  Download “UDID sender” on the App Store 2.  Send UDID via E-Mail to mha@octo.com http://goo.gl/XWGDy 14
  • 15. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Step by step guide for Jenkins-CI on iOS HOW TO http://goo.gl/XWGDy 15
  • 16. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Plugins installation Ø  Home Ø  Manage Jenkins Ø  Manage Plugins Ø  Install these plugins •  Appaloosa •  Clang Scan-Build •  Git •  Xcode http://goo.gl/XWGDy 16
  • 17. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Plugins configuration •  By default Xcode plugin settings should be good for a standard installation •  Clang Static Analyzer binaries have to be downloaded from http://clang- analyzer.llvm.org/ and extracted on the server or agent where they’ll be used •  In “System settings” (Clang Scan-Build Plugin part) you need to add at least one installation. http://goo.gl/XWGDy 17
  • 18. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf What if I soon have a Jenkins on a non Mac server? Git •  Why use a non Mac Jenkins? –  Regroup all your jobs Code versionning –  Maintain only one instance of Jenkins Master Node –  Create dependencies Jenkins between mobile and not mobile projects Scheduling build •  How use a non Mac Jenkins? MacOS Node –  Create Mac OS node XCode –  Only need a SSH connection Building application http://goo.gl/XWGDy 18
  • 19. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Node creation •  To create an agent dedicated for xcode builds you need to create a node with : •  A label to select jobs for which you’ll use it •  A SSH connection with a password less private key •  The path for Clang checker binaries http://goo.gl/XWGDy 19
  • 20. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Affect job to a node •  Create a “MacOSX” label •  Force job to run on “MacOSX”-labeled nodes http://goo.gl/XWGDy 20
  • 21. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf sudo vim `xcode-select -print-path`/ Platforms/iPhoneSimulator.platform/ Developer/Tools/RunPlatformUnitTests Xcode bug for iOS unit testing Replace Warning ${LINENO} "Skipping tests; the Source: http:// iPhoneSimulator platform does not currently www.raingrove.com/ support application-hosted tests (TEST_HOST 2012/03/28/running-ocunit-and- set)." specta-tests-from-command- By: line.html export CFFIXED_USER_HOME="$ {BUILT_PRODUCTS_DIR}/UserHome/" •  Edit your RunPlatformUnitTests mkdir -p "${CFFIXED_USER_HOME}" mkdir -p "${CFFIXED_USER_HOME}/Library/ Caches" mkdir "${CFFIXED_USER_HOME}/Library/ Preferences" mkdir "${CFFIXED_USER_HOME}/Documents" export OTHER_TEST_FLAGS="$ {OTHER_TEST_FLAGS} - RegisterForSystemEvents" RunTestsForApplication "${TEST_HOST}" "$ {TEST_BUNDLE_PATH}" http://goo.gl/XWGDy 21
  • 22. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Configure your project for Unit Tests •  Check run action for your Test target •  Share your Scheme http://goo.gl/XWGDy 22
  • 23. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add Xcode unit testing build phase •  Commit your scheme on GIT •  Use Scheme instead of target for testing. Use target only for building. •  Set SDK to iphonesimulator •  Set Configuration to Debug •  Add TEST_AFTER_BUILD=YES in Custom xcodebuild arguments http://goo.gl/XWGDy 23
  • 24. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf -  (void)test_parseRoomsFromDictionary_! returnObjectsArrayForCorrectDictionnary! {! Write a test // Given! •  Use SenTestKit Framework NSDictionary *dictionnary = [NSDictionary dictionaryWithObject: •  Add Mock With OCMock [NSArray array] forKey:KEY_ROOMS];! ! // When! NSArray* rooms = [JUCEventsService parseRoomsFromDictionary:dictionnary];! ! // Then! STAssertTrue([rooms isKindOfClass: [NSArray class]],nil);! } http://goo.gl/XWGDy 24
  • 25. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add clang static analysis build phase •  Configure your target http://goo.gl/XWGDy 25
  • 26. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa jenkins’ integration •  Check IPA generation •  Add Appaloosa step to your project •  Receive Push Notification Token: igjrz4w701ynrkzd2zwh2u450ilg00dg http://goo.gl/XWGDy 26
  • 27. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Publish to the App Store •  Apple doesn’t provide API •  Need manual actions –  On a Mac –  Without proxy http://goo.gl/XWGDy 27
  • 28. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Generate Apple Doc •  Install Apple Doc https://github.com/tomaz/ appledoc •  Command line appledoc conf.plist <outfile> •  Add an “aggregate” target to the project Perform automatic doc generation locally http://goo.gl/XWGDy 28
  • 29. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Jenkins set-up, from GitHub to your device HANDS ON … LET’S GO http://goo.gl/XWGDy 29
  • 30. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Fork on github the sample project http://goo.gl/alKgW And then clone your fork git clone git:// github.com/XXXX/ JenkinsSample.git http://goo.gl/XWGDy 30
  • 31. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Setup Git http://goo.gl/XWGDy 31
  • 32. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Add a Clang Scan-Build Phase http://goo.gl/XWGDy 32
  • 33. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Add an Xcode build step to execute tests •  Use a schema (JUC Paris) •  SDK = iphonesimulator •  Config = Debug •  Args = TEST_AFTER_BUILD=YES •  Clean test reports http://goo.gl/XWGDy 33
  • 34. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Setup a continuous integration job Activate Clang and unit tests reports http://goo.gl/XWGDy 34
  • 35. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Fix the test In JUC ParisTests/JUC_ParisTests.m Comment the failling test Commit and push on github git add . git commit git push Relaunch your build http://goo.gl/XWGDy 35
  • 36. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Change your Bundle Id In Project Properties > JUC Paris Target > Summary Change Bundle identifier to com.jenkins.juc- paris.app.yourname Commit and push on github git add . git commit git push http://goo.gl/XWGDy 36
  • 37. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add a deployment Job Same github settings Create an Xcode build step •  Target = JUC Paris •  Config = Release •  Setup versions •  Build IPA •  Embedded profile http://goo.gl/XWGDy 37
  • 38. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa installation on your device http://goo.gl/hQ2Ue http://goo.gl/XWGDy 38
  • 39. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Appaloosa installation on your device Account information •  Login: mha+juc@octo.com •  Password: jenkins  http://goo.gl/XWGDy 39
  • 40. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Add a deployment Job Setup Appaloosa with this token : igjrz4w701ynrkzd2zwh2u450ilg00dg http://goo.gl/XWGDy 40
  • 41. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Enjoy http://goo.gl/XWGDy 41
  • 42. Jenkins User Conference Paris, 17 April 2012 #jenkinsconf Thank You To Our Sponsors Platinum Sponsor Gold Sponsor Silver Sponsor http://goo.gl/XWGDy 42