xcode server - jeffrey macko
Post on 15-Jul-2015
4.211 Views
Preview:
TRANSCRIPT
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 qualité du logiciel
• Automatisation et simplification de la distribution
• La re-factorisation devient plus envisageable
2
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 -> Provisioning profile Intégration
• Créer les bots sur la machine du serveur 6
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 Xcode simplifiée
• Archivage des ipa
• Hébergement du repository Git
8
• 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
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 lancer une intégration comme dans la vidéo 415 de la WWDC 2014
11
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
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
Solutions
• cd /Library/Developer/XcodeServer
• xcodebuild test -workspace projet.xcworkspace -scheme projet -sdk iphonesimulator8.0 | xcpretty
• rm -rf /Library/Developer/XcodeServer/Integrations/Caches/*
14
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 Xcode et Xcode Server trop fort
• Sur device ce n’est pas encore parfait
• iOS 6 pas correctement supporté
16
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
Contact
• @jeffreymacko
• Breakpoint.fm
• Consultant iOS
• Q/A
18
top related