Los comandos de xcodebuild dan resultados diferentes cuando se ejecutan desde la línea de comando que cuando se ejecutan desde Jenkins
(2)
Descubrió que todo lo que necesita hacer es establecer el esquema para compartir. Esquema> Administrar esquemas Asegúrese de que "Compartido" esté marcado.
Esto generará una nueva carpeta / archivo ... / xcshareddata / xcschemes / ???. Xcscheme
Verifique este archivo en su control de fuente y el esquema debería aparecer ahora en su caja de jenkins.
Estoy configurando un sistema de CI usando Jenkins y descubriendo que la construcción está fallando porque xcodebuild informa que no hay esquemas cuando estaba ejecutando la línea
-xcodebuild -workspace XXX -scheme NNN.
No pude entender por qué esto podría estar pasando, así que para eliminar algo torpe de mi espacio de trabajo, creé una nueva plantilla de proyecto usando XCode y descubrí que estoy obteniendo una diferencia de comportamiento para cualquier comando de xcodebuild y para cualquier espacio de trabajo / proyecto .
El proyecto de la plantilla se llamó chatarra y si desde la línea de comando del terminal ejecuto este comando, por ejemplo:
xcodebuild -list
Salidas
Information about project "scrap":
Targets:
scrap
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then "Release" is used.
Schemes:
scrap
Pero si ejecuto xcodebuild -list desde dentro de Jenkins, la salida en su lugar es:
Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap
[scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh
+ xcodebuild -list
Information about project "scrap":
Targets:
scrap
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then "Release" is used.
This project contains no schemes.
Este es el trabajo de jenkins más simple: lo único que hago es crear un nuevo trabajo, configurarlo en un proyecto de software de estilo libre, luego agregar un paso de compilación del shell Execut y agregar el comando xcodebuild -list, eso es todo.
¿Por qué dice xcodebuild que no hay esquemas cuando los hay? ¿Y por qué se comporta de manera diferente cuando se ejecuta desde dentro de Jenkins?
debe ignorar su .xcodeproj / xcuserdata / .xcuserdatad en su archivo .gitignore. xcodebuild -list obtiene esquemas de .xcodeproj / xcuserdata / .xcuserdatad / xcschemes. El servidor jenkins no tiene este archivo, así que no consigas ningún esquema, puedes abrir * .xcodeproj en tu servidor jenkins, creará el archivo y luego hará xcodebuild -list para obtener los esquemas actuales. Tengo el mismo problema y lo resuelvo con el método anterior. .