Xcode Server - Jeffrey Macko

  • View
    4.211

  • Download
    0

  • Category

    Software

Preview:

Citation preview

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