Неправильный профиль команды/подготовки при использовании команды xcodebuild

Я пытаюсь создать сценарий непрерывной интеграции в своем проекте xcode, но я застрял, пытаясь заархивировать мой проект xcode с помощью команды xcodebuild. При попытке:

sudo xcodebuild -scheme MyScheme -archivePath builds/XXX.xcarchive archive DEVELOPMENT_TEAM=YYY CODE_SIGN_IDENTITY='iPhone Distribution' CODE_SIGN_STYLE='Manual' PROVISIONING_PROFILE_SPECIFIER=ZZZ
  • XXX – это название моего проекта

  • YYY — это идентификатор моей команды разработчиков, например ABC123DEF, это строка

  • ZZZ – это название моего профиля подготовки, а не код, а строка, например "Мой профиль подготовки".

Я всегда получаю эту ошибку:

error: No profile for team 'YYY' matching 'ZZZ' found: Xcode couldn't find any provisioning profiles matching 'YYY/ZZZ'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor. 

Однако при открытии проекта XCode вручную и попытке заархивировать он работает отлично.

Что мне не хватает? Как получить полный список team/provisionning_profile, установленных на моем Mac?

Что я пробовал до сих пор:

  1. Я попытался убрать часть, где я указываю команду разработчиков и профиль обеспечения, оставив только идентификатор схемы. Тот же результат, учитывая, что схема определяется с той же информацией.

  2. Я попытался зайти в свою папку mobileprovision, чтобы проверить, существует ли профиль обеспечения (он существует)

  3. Я попытался отобразить командные строки архива xcode в редакторе (на вкладке навигатора отчетов). На самом деле он никогда не показывает команду xcodebuild напрямую, а показывает набор подкоманд. Однако я мог узнать, что мой идентификатор команды XXX и профиль подготовки YYY, которые я использую, используются в этом скрипте.

Кто-нибудь знает, как я могу решить эту проблему?


person Olympiloutre    schedule 05.11.2018    source источник


Ответы (2)


Наконец-то я нашел проблему, она возникла от sudo до xcodebuild.

Команда sudo по умолчанию выполнит следующее действие под пользователем root, у которого не установлен какой-либо профиль подготовки, поскольку я всегда регистрировал их под своим профилем пользователя.

вот что я сделал:

sudo -u myuser xcodebuild -scheme MyScheme -archivePath builds/XXX.xcarchive archive DEVELOPMENT_TEAM=YYY CODE_SIGN_IDENTITY='iPhone Distribution' CODE_SIGN_STYLE='Manual' PROVISIONING_PROFILE_SPECIFIER=ZZZ

и ошибка исчезла. Надеюсь, это может помочь кому-то.

person Olympiloutre    schedule 08.11.2018
comment
часть sudo -u myuser позволяет мне запустить следующую команду под myuser вместо jenkins - person Olympiloutre; 20.11.2018
comment
Ах. Спасибо. Немного странно, что пользователь jenkins может выполнять команды от имени пользователя root, но, читая онлайн, кажется, что люди делают это довольно часто. Не уверен, почему люди не использовали бы вместо этого su. Рад, что ты понял это. - person Dad; 20.11.2018
comment
Чтобы быть в курсе, я опрометчиво установил jenkins на свой OSX, я думаю, если бы я сделал это правильно, мне не пришлось бы везде добавлять sudo. Если вас интересует правильная установка пользователя jenkins на OSX, вот ссылка, которая объясняет, как этого добиться medium.com/@ved.pandey/ - person Olympiloutre; 21.11.2018

Профили обеспечения находятся в ~/Library/MobileDevice/Provisioning Profiles/

Вы можете добавить -allowProvisioningUpdates, чтобы позволить xcodebuild "решить" проблему самостоятельно, но... ¯_(ツ)_/¯ за то, насколько безопасным/хорошим будет результат. Вы указали «вручную», поэтому я предполагаю, что вы не хотите этого делать.

Я подозреваю, что вы пытаетесь заархивировать проект, но у вас установлен только профиль разработки. Создайте выпускную сборку проекта из Xcode, и это должно заставить его загрузить для вас профиль обеспечения выпуска (распространения), который затем можно использовать из командной строки.

person Dad    schedule 05.11.2018
comment
Нет, это настройка Release. Я подозреваю, что проблема связана с предоставлением: мой клиент отправил его мне, и у меня нет доступа к его учетной записи разработчика Apple. На самом деле это работает при архивировании из XCode, но не в командной строке xcodebuild. - person Olympiloutre; 06.11.2018
comment
Вы можете открыть заархивированный пакет приложения и посмотреть профиль подготовки, чтобы узнать, какой из них использовался. (он переименован, но вы можете понять это). Генератор быстрого просмотра профиля подготовки очень полезен для этого. Если Apple еще не предоставляет его (вздох), есть этот, который хорошо работает: github.com/chockenberry/Provisioning - person Dad; 06.11.2018