Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intégration continue pour iOS

Intégration continue pour iOS

Retour d'expérience sur les outils mis en place chez TechSolCom.

Romain Pouclet

September 10, 2013
Tweet

More Decks by Romain Pouclet

Other Decks in Programming

Transcript

  1. Intégration continue pour iOS
    Cocoaheads Montréal - 10 Septembre 2013
    Tuesday, 10 September, 13

    View Slide

  2. Qui ?
    Romain Pouclet
    @palleas
    Développeur iOS chez
    TechSolCom / R3D
    Craint l’eau froide du
    Pacifique
    Tuesday, 10 September, 13

    View Slide

  3. TechSolCom / R3D
    Développement web, mobile (et plein d’autres trucs)
    Radio Canada, Sur La Route, SAQ
    Une équipe de soccer
    Tuesday, 10 September, 13

    View Slide

  4. Disclaimer
    Tuesday, 10 September, 13

    View Slide

  5. Integration continue
    “L'intégration continue est un ensemble de pratiques
    utilisées en génie logiciel consistant à vérifier à
    chaque modification de code source que le résultat
    des modifications ne produit pas de régression dans
    l'application développée.”
    (Wikipedia)
    Tuesday, 10 September, 13

    View Slide

  6. Round 1
    Tuesday, 10 September, 13

    View Slide

  7. Les besoins de TSC
    S’assurer que l’application compile sur un
    environnement “neutre” (“ça marche chez moi :(”)
    Faciliter l’accès aux builds de développement pour les
    testeurs et les clients
    Tuesday, 10 September, 13

    View Slide

  8. Jenkins
    Tuesday, 10 September, 13

    View Slide

  9. Je déteste Jenkins.
    Tuesday, 10 September, 13

    View Slide

  10. Jenkins
    Lance les tests, build, deploie
    Opensource (MIT)
    Des millions de plugins dont un pour Xcode
    Gestion de “slave”
    Des bugs rigolos
    Tuesday, 10 September, 13

    View Slide

  11. Jenkins Xcodebuild
    Fonctionne (c’est déjà ça)
    Quelques bugs (espaces dans les arguments...)
    Abstrait trop le processus...
    ... et en même temps pas assez (wat?)
    Tuesday, 10 September, 13

    View Slide

  12. Jenkins Xcodebuild
    Tuesday, 10 September, 13

    View Slide

  13. TSC Store
    Hébergement des builds de démo pour les clients
    Liste de toutes les applications pour les testeurs et les
    commerciaux
    Pas de testflight & co chez TSC : 100% homemade
    Tuesday, 10 September, 13

    View Slide

  14. TSCStore internals
    Un gros script bash
    PlistBuddy -c "Print :CFBundleIdentifier" "Payload/
    Traffic.app/Info.plist" (génération du manifest)
    scp Traffic.ipa tscstore:builds/traffic.ipa (upload du
    fichier ipa)
    Simple application Web pour lister les builds
    Tuesday, 10 September, 13

    View Slide

  15. TSCStore
    Tuesday, 10 September, 13

    View Slide

  16. TSCStore
    Tuesday, 10 September, 13

    View Slide

  17. Oui, mais
    Pas de gestion du versionning des builds
    Timeout SSH
    Maintenance laborieuse
    j’étais un peu nul en bash
    mes collègues ne font pas de PHP
    Interface douteuse (Raw twitter bootstrap)
    iOS only
    Tuesday, 10 September, 13

    View Slide

  18. Round 2
    Tuesday, 10 September, 13

    View Slide

  19. Nouveaux besoins
    Se débarasser de Jenkins Xcodebuild
    Comment gérer le stockage et le versionning des
    builds ?
    Quelle technologie pour l’upload ?
    Stockage des applications Android
    Tuesday, 10 September, 13

    View Slide

  20. Build
    Générer un IPA c’est 3 commandes
    xcodebuild
    xcrun
    muse victory.mp3
    Tuesday, 10 September, 13

    View Slide

  21. Upload et stockage : nexus
    “Sonatype Nexus sets the standard for repository
    management providing development teams with the
    ability to proxy remote repositories and share software
    artifacts.”
    (http://www.sonatype.org/nexus/)
    Tuesday, 10 September, 13

    View Slide

  22. Cherry on top : ant & maven
    because xcodebuild wasn’t verbose enough
    ant : formatter le script de build dans un format facile à
    comprendre et à maintenir
    maven : upload sur le nexus (mvn deploy:deploy-file)
    Tuesday, 10 September, 13

    View Slide

  23. TSCStore v2
    Application Spring MVC communiquant avec le Nexus
    via une API
    Supporte du coup plusieurs versions et plusieurs
    plateformes
    Accès protégé par notre LDAP + ACL
    Tuesday, 10 September, 13

    View Slide

  24. TSCStore v2
    Tuesday, 10 September, 13

    View Slide

  25. TSCStore v2
    Tuesday, 10 September, 13

    View Slide

  26. Besoin bonus : qualité
    Besoin de surveiller la “qualité” du code
    Plugin sonar pour Objective-c très limité
    Utilisation de OCLint
    Tuesday, 10 September, 13

    View Slide

  27. OCLint
    OCLint is a static code analysis tool for improving quality
    and reducing defects by inspecting C, C++ and
    Objective-C code and looking for potential problems
    (http://oclint.org/)
    Tuesday, 10 September, 13

    View Slide

  28. OCLint
    Simple à installer
    Pas forcément simple à utiliser si on ne sait pas lire
    oclint-xcodebuild
    oclint-json-compilation-database
    Possibilité d’ajuster certains critères
    ⾠ Gourmand en mémoire (externals, Pods...)
    Tuesday, 10 September, 13

    View Slide

  29. OCLint + PMD
    Tuesday, 10 September, 13

    View Slide

  30. La suite
    Intégrer les suites de tests
    Code coverage ? (meh)
    Regarder du coté des Bots Xcode 5
    ...
    Tuesday, 10 September, 13

    View Slide

  31. Merci !
    muse (https://github.com/zr0z/muse)
    Photo : @MissZonzonnette
    Contact : [email protected]
    Tuesday, 10 September, 13

    View Slide