Команды xcodebuild дают разные результаты при запуске из командной строки, чем при запуске из Jenkins
Я настраиваю систему CI, используя Jenkins, и обнаружил, что сборка была неудачной, поскольку в отчетах xcodebuild нет схем, когда я выполнял строку
-xcodebuild -workspace XXX-схема NNN.
Я не мог понять, почему это может произойти, поэтому, чтобы устранить что-то неловкое, с моей рабочей областью, я создал новый шаблон проекта с помощью XCode и обнаружил, что я получаю разницу в поведении для любой команды xcodebuild и для любого Рабочая область/проект.
Проект шаблона был назван scrap, и если из командной строки терминала я запустил эту команду, например:
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.
Schemes:
scrap
Но если я запустил xcodebuild -list из Jenkins, тогда вместо этого будет:
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.
Это самый простой из заданий jenkins - все, что я делаю, это создать новое задание, установить его в проект со свободным стилем, а затем добавить этап сборки оболочки Execut и добавить команду xcodebuild -list, чтобы она была.
Почему xcodebuild говорит, что нет схем, когда есть? И почему он ведет себя по-другому, когда убегает из Дженкинса?
Ответы
Ответ 1
Выяснилось, что все, что вам нужно сделать, это установить общую схему.
Схемa > Управление схемами
Убедитесь, что установлен флажок "Общий доступ".
Затем будет генерироваться новая папка/файл.../xcshareddata/xcschemes/???. xcscheme
Проверьте этот файл в исходном элементе управления, и теперь схема должна появиться в вашем окне jenkins.
Ответ 2
вы должны игнорировать ваш .xcodeproj/xcuserdata/.xcuserdatad в вашем файле .gitignore.
xcodebuild -list получает схемы из .xcodeproj/xcuserdata/.xcuserdatad/xcschemes.
У jenkins server нет этого файла, поэтому нет схем, вы можете открыть *.xcodeproj на своем сервере jenkins, он создаст файл, а затем сделает xcodebuild -list может получить текущие схемы. У меня такая же проблема и решена методом выше.