Подтвердить что ты не робот

Команды 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 говорит, что нет схем, когда есть? И почему он ведет себя по-другому, когда убегает из Дженкинса?

4b9b3361

Ответ 1

Выяснилось, что все, что вам нужно сделать, это установить общую схему. Схемa > Управление схемами Убедитесь, что установлен флажок "Общий доступ".

Затем будет генерироваться новая папка/файл.../xcshareddata/xcschemes/???. xcscheme

Проверьте этот файл в исходном элементе управления, и теперь схема должна появиться в вашем окне jenkins.

Ответ 2

вы должны игнорировать ваш .xcodeproj/xcuserdata/.xcuserdatad в вашем файле .gitignore. xcodebuild -list получает схемы из .xcodeproj/xcuserdata/.xcuserdatad/xcschemes. У jenkins server нет этого файла, поэтому нет схем, вы можете открыть *.xcodeproj на своем сервере jenkins, он создаст файл, а затем сделает xcodebuild -list может получить текущие схемы. У меня такая же проблема и решена методом выше.