2011-05-11 7 views
43

Estoy configurando mi proyecto de iphone para ejecutar con hudson, mi script de construcción funciona bien localmente, pero al ejecutar el siguiente comando en mi leopardo de las nieves servidor macConstruyendo con xcodebuild Tiempo de espera agotado esperando <IDEWorkspace, 0x2004cebc0>/"runContextManager.runContexts"

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

Recibo los siguientes mensajes de error.

Build settings from command line: SDKROOT = iphoneos4.3

2011-05-11 10:32:17.729 xcodebuild[4151:903] WARNING: Timed out waiting for /"runContextManager.runContexts" (10.010780 seconds elapsed) xcodebuild: error: The workspace 'Moments.xcworkspace/' does not contain a scheme named 'Moments'.

¿Cuál es el tiempo de espera ?! Y por qué no puede encontrar el esquema llamado Momentos cuando definitivamente está allí. Si abro el espacio de trabajo en xcode en el servidor de compilación, puedo ver el esquema.

Respuesta

97

marcando la casilla "compartida" en el diálogo "Administrar Esquemas" mueve los esquemas de Project.xcodeproj/xcshareddata/xcschemes/Scheme.xcscheme

por lo que incluso si usted tiene una salida más limpia que nunca se ha abierto a través el xcode ui, esto funcionará. utilizamos esto para que buildbot pueda construir nuestras aplicaciones

+6

¡Leyenda! Gracias. – jennas

+1

gracias, hombre! me has salvado el día !!!! – Denis

+0

Woohoo !!! Las personas que visitan esta página !!! La respuesta comprobada es buena, ¡pero esta es aún mejor! Gracias @David! –

10

Desafortunadamente xcodebuild depende de algunos archivos de usuario generados por el XCode. Para solucionarlo, puede iniciar sesión como usuario de Hudson y ejecutar la interfaz de usuario de XCode una vez. Eso creará los archivos necesarios.

Actualmente estoy tratando de evitar esto, pero copiando los archivos necesarios en el árbol fuente antes de construir.

Si ejecuta xcodebuild y XCode se ejecuta en segundo plano, xcodebuild se comunicará con XCode para obtener los datos necesarios. Como XCode no se está ejecutando, obtienes el tiempo de espera.

+0

¡Ahh, increíble! ¡GRACIAS! – Erik

+0

FYI La respuesta a continuación funciona de manera mucho más confiable, especialmente si tiene múltiples trabajos en el mismo proyecto. –

-2

Los esquemas no se comparten por defecto entre los usuarios (y su servidor de construcción). Como David mentions, puede compartirlos, pero también puede invocar los objetivos, que son compartidos.

Así que en lugar de

xcodebuild -scheme Foobar 

que sería

xcodebuild -target Foobar 

desde esquemas son normalmente el mismo nombre que el objetivo.

+0

Si entiendo la documentación correctamente, no puede usar el indicador -target si está utilizando el indicador de espacio de trabajo. Es decir, si confías en los espacios de trabajo, necesitas utilizar esquemas y la solución al problema ha sido provista por David y Cornelius. – Erik

Cuestiones relacionadas