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.
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. Intérêts des tests
• Trouver des bugs
• Limiter les risques de régression
• Augmenter la qualité du produit
3
4. Type de tests
• Test Unitaire (XCTest)
• Test asynchrone
• Test de performance
• Test d’interface (UIAutomation)
4
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. OSX Server
• Mac App Store (18€)
• Apple iOS Developer portal
(Gratuit)
• Simple
7
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. • 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
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. 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. 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. Solutions
• cd /Library/Developer/XcodeServer
• xcodebuild test -workspace projet.xcworkspace
-scheme projet -sdk iphonesimulator8.0 |
xcpretty
• rm -rf /Library/Developer/XcodeServer/
Integrations/Caches/*
14
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. 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