43 votes

Construction avec xcodebuild Timed out waiting for <IDEWorkspace, 0x2004cebc0>/"runContextManager.runContexts"

Je suis en train de configurer mon projet iphone pour qu'il fonctionne avec hudson, mon build script fonctionne bien localement, mais lorsqu'on exécute la commande suivante sur mon mac serveur snow leopard.

xcodebuild -sdk iphoneos4.3 -workspace Moments.xcworkspace/ -scheme Moments -configuration DistributionTest

Je reçois les messages d'erreur suivants.

Paramètres de construction à partir de la ligne de commande : SDKROOT = iphoneos4.3

2011-05-11 10:32:17.729 xcodebuild[4151:903] WARNING : Timed out waiting for /"runContextManager.runContexts" (10.010780 secondes écoulées) xcodebuild : erreur : L'espace de travail 'Moments.xcworkspace/' ne contient pas de schéma nommé 'Moments'.

C'est quoi ce délai ? ! Et pourquoi ne trouve-t-il pas le schéma nommé Moments alors qu'il est bel et bien là. Si j'ouvre l'espace de travail dans xcode sur le serveur de construction, je peux voir le schéma.

97voto

David Points 944

En cochant la case "shared" dans la boîte de dialogue "Manage Schemes", les schémas sont déplacés vers Project.xcodeproj/xcshareddata/xcschemes/Scheme.xcscheme

Ainsi, même si vous avez un checkout propre qui n'a jamais été ouvert via l'interface utilisateur de xcode, cela fonctionnera. Nous utilisons ceci pour que buildbot puisse construire nos applications.

10voto

Cornelius Hald Points 101

Malheureusement, xcodebuild dépend de certains fichiers par utilisateur générés par XCode. Pour résoudre ce problème, vous pouvez vous connecter en tant qu'utilisateur hudson et lancer l'interface XCode une fois. Cela créera les fichiers nécessaires.

J'essaie actuellement de contourner ce problème, mais en copiant les fichiers nécessaires dans l'arborescence des sources avant la construction.

Si vous exécutez xcodebuild et que XCode est en cours d'exécution en arrière-plan, xcodebuild contactera XCode pour obtenir les données nécessaires. Comme XCode n'est pas en cours d'exécution, vous obtenez le timeout.

-2voto

Grav Points 854

Par défaut, les schémas ne sont pas partagés entre les utilisateurs (et votre serveur de construction). Comme David mentionne vous pouvez les partager, mais vous pouvez aussi simplement invoquer les cibles à la place, qui sont partagées.

Ainsi, au lieu de

xcodebuild -scheme Foobar

ce serait

xcodebuild -target Foobar

puisque les schémas portent normalement le même nom que la cible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X