Intégration continue
avec Xcode Server
Jeffrey Macko
CocoaHeads Paris
Octobre 2014 1
Intégration continue
• Découverte automatique et rapide de bug de
régression
• Améliorer la collaboration
• Améliorer la q...
Intérêts des tests
• Trouver des bugs
• Limiter les risques de régression
• Augmenter la qualité du produit
3
Type de tests
• Test Unitaire (XCTest)
• Test asynchrone
• Test de performance
• Test d’interface (UIAutomation)
4
Terminologie
• Scheme (Shared)
• Bot (Build / Analyse / Archive)
• Integration (Assemblage)
5
Pré-requis
• OSX Maverick
• Réseau Local
• iOS7 Minimum
• Les devices déjà reconnus par iTunes
• Build Settings -> Provisi...
OSX Server
• Mac App Store (18€)
• Apple iOS Developer portal
(Gratuit)
• Simple
7
Fonctions d’Xcode Server
• Intégration avec le programme developer
d’Apple
• Support de device de test
• Intégration avec ...
• Le bot n’est administrable que depuis Xcode, il
faut être dans le projet correspondant pour les
administrer
• Ordonnance...
Triggers
• Pre/Post
• Variables d’environnement
10
µXcodeServerBot
• Pre/Post hook
• Diffusion de l’état du bot sur Slack
• Limitations… manipulations de xcode server
pour l...
Instruments
• Analyse de problèmes "simplifié"
• Génération de trace en cas de problèmes ?
• instruments -t Automation -D t...
Problèmes
• Pas mal de problème avec le ssh
• if (Xcode Server < 3.2.1) [NSNightmare start];
• Message d’erreurs pas forcé...
Solutions
• cd /Library/Developer/XcodeServer
• xcodebuild test -workspace projet.xcworkspace
-scheme projet -sdk iphonesi...
CMDs
• instruments
• xcodebuild
• xcrun
• xcrun simctl
• xcpretty (Gem ruby)
15
Retour d’expérience
• Xcode Server fonctionne de façon vraiment
fiable depuis la dernière version(v2)
• Coupling entre Xcod...
Un peu de fun ?
• Xcode Server a une API REST versionnée a quand une documentation
officielle ?
• Xcode Server est composé ...
Contact
• @jeffreymacko
• Breakpoint.fm
• Consultant iOS
• Q/A
18
Prochain SlideShare
Chargement dans…5
×

Xcode Server - Jeffrey Macko

4 994 vues

Publié le

La promesse de Xcode Server est de permettre de mettre en place un serveur d’intégration continue de manière très simple et rapide. Une fois en route, des tests unitaires peuvent être ajoutés très simplement. Jeffrey Macko nous expliquera comment tout cela fonctionne et ce que cela peut apporter à la qualité de votre code.

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
4 994
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 291
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Xcode Server - Jeffrey Macko

  1. 1. Intégration continue avec Xcode Server Jeffrey Macko CocoaHeads Paris Octobre 2014 1
  2. 2. Intégration continue • Découverte automatique et rapide de bug de régression • Améliorer la collaboration • Améliorer la qualité du logiciel • Automatisation et simplification de la distribution • La re-factorisation devient plus envisageable 2
  3. 3. Intérêts des tests • Trouver des bugs • Limiter les risques de régression • Augmenter la qualité du produit 3
  4. 4. Type de tests • Test Unitaire (XCTest) • Test asynchrone • Test de performance • Test d’interface (UIAutomation) 4
  5. 5. Terminologie • Scheme (Shared) • Bot (Build / Analyse / Archive) • Integration (Assemblage) 5
  6. 6. Pré-requis • OSX Maverick • Réseau Local • iOS7 Minimum • Les devices déjà reconnus par iTunes • Build Settings -> Provisioning profile Intégration • Créer les bots sur la machine du serveur 6
  7. 7. OSX Server • Mac App Store (18€) • Apple iOS Developer portal (Gratuit) • Simple 7
  8. 8. Fonctions d’Xcode Server • Intégration avec le programme developer d’Apple • Support de device de test • Intégration avec Xcode simplifiée • Archivage des ipa • Hébergement du repository Git 8
  9. 9. • Le bot n’est administrable que depuis Xcode, il faut être dans le projet correspondant pour les administrer • Ordonnancement de l’assemblage • Notifications • Scripts pre/post assemblage Bots 9
  10. 10. Triggers • Pre/Post • Variables d’environnement 10
  11. 11. µXcodeServerBot • Pre/Post hook • Diffusion de l’état du bot sur Slack • Limitations… manipulations de xcode server pour lancer une intégration comme dans la vidéo 415 de la WWDC 2014 11
  12. 12. Instruments • Analyse de problèmes "simplifié" • Génération de trace en cas de problèmes ? • instruments -t Automation -D test.trace -w 82A63925-D544-48C2-A433-DF29F5270461 PagesJaunes.app -e UIASCRIPT test.js -e UIARESULTSPATH test_instruments/ 12
  13. 13. Problèmes • Pas mal de problème avec le ssh • if (Xcode Server < 3.2.1) [NSNightmare start]; • Message d’erreurs pas forcément compréhensible • Qui est _xcsbuildd ? • Il manque des variables d’environnement au niveau des triggers(le chemin vers le projet) 13
  14. 14. Solutions • cd /Library/Developer/XcodeServer • xcodebuild test -workspace projet.xcworkspace -scheme projet -sdk iphonesimulator8.0 | xcpretty • rm -rf /Library/Developer/XcodeServer/ Integrations/Caches/* 14
  15. 15. CMDs • instruments • xcodebuild • xcrun • xcrun simctl • xcpretty (Gem ruby) 15
  16. 16. Retour d’expérience • Xcode Server fonctionne de façon vraiment fiable depuis la dernière version(v2) • Coupling entre Xcode et Xcode Server trop fort • Sur device ce n’est pas encore parfait • iOS 6 pas correctement supporté 16
  17. 17. Un peu de fun ? • Xcode Server a une API REST versionnée a quand une documentation officielle ? • Xcode Server est composé d’une app node.js (/Library/Developer/ XcodeServer/CurrentXcodeSymlink/Contents/Developer/usr/share/xcs/ xcsd/) qui manipule des binaires sur la machine hôte • Il stoque ses données dans : • CouchDB -> http://127.0.0.1:10355/_utils • Redis (127.0.0.1:10356)(a debugger avec redis-desktop-manager) • http://127.0.0.1:20300/diagnostics/ (je n’ai pas encore compris l’utilitée de cette interface) 17
  18. 18. Contact • @jeffreymacko • Breakpoint.fm • Consultant iOS • Q/A 18

×