Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Disclaimer Tuesday, 10 September, 13

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Round 1 Tuesday, 10 September, 13

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Jenkins Tuesday, 10 September, 13

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Jenkins Xcodebuild Tuesday, 10 September, 13

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

TSCStore Tuesday, 10 September, 13

Slide 16

Slide 16 text

TSCStore Tuesday, 10 September, 13

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Round 2 Tuesday, 10 September, 13

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

TSCStore v2 Tuesday, 10 September, 13

Slide 25

Slide 25 text

TSCStore v2 Tuesday, 10 September, 13

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

OCLint + PMD Tuesday, 10 September, 13

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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