Intégration continue pour iOS

Intégration continue pour iOS

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

B4f9306896b6eaa56a9a6b9048285f53?s=128

Romain Pouclet

September 10, 2013
Tweet

Transcript

  1. Intégration continue pour iOS Cocoaheads Montréal - 10 Septembre 2013

    Tuesday, 10 September, 13
  2. Qui ? Romain Pouclet @palleas Développeur iOS chez TechSolCom /

    R3D Craint l’eau froide du Pacifique Tuesday, 10 September, 13
  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
  4. Disclaimer Tuesday, 10 September, 13

  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
  6. Round 1 Tuesday, 10 September, 13

  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
  8. Jenkins Tuesday, 10 September, 13

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

  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
  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
  12. Jenkins Xcodebuild Tuesday, 10 September, 13

  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
  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
  15. TSCStore Tuesday, 10 September, 13

  16. TSCStore Tuesday, 10 September, 13

  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
  18. Round 2 Tuesday, 10 September, 13

  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
  20. Build Générer un IPA c’est 3 commandes xcodebuild xcrun muse

    victory.mp3 Tuesday, 10 September, 13
  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
  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
  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
  24. TSCStore v2 Tuesday, 10 September, 13

  25. TSCStore v2 Tuesday, 10 September, 13

  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
  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
  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
  29. OCLint + PMD Tuesday, 10 September, 13

  30. La suite Intégrer les suites de tests Code coverage ?

    (meh) Regarder du coté des Bots Xcode 5 ... Tuesday, 10 September, 13
  31. Merci ! muse (https://github.com/zr0z/muse) Photo : @MissZonzonnette Contact : palleas@gmail.com

    Tuesday, 10 September, 13