Fastlane не может найти профиль подготовки на Bitrise

Я создаю приложение для iOS локально, используя Fastlane, без каких-либо проблем.

Я использую match с отдельным репо, чтобы отслеживать сертификаты и профили обеспечения.

Локально работает нормально.

Однако на Bitrise я получаю такую ​​ошибку:

[05:23:16]: All required keys, certificates and provisioning profiles are installed ????
[05:23:16]: Setting Provisioning Profile type to 'app-store'
[05:23:16]: -----------------------
[05:23:16]: --- Step: build_app ---
[05:23:16]: -----------------------
[05:23:16]: $ xcodebuild -list -workspace Myapp.xcworkspace -configuration Debug
[05:23:17]: $ xcodebuild -showBuildSettings -workspace Myapp.xcworkspace -scheme Myapp -configuration Debug
[05:23:20]: Couldn't automatically detect the provisioning profile mapping
[05:23:20]: Since Xcode 9 you need to provide an explicit mapping of what
[05:23:20]: provisioning profile to use for each target of your app
[05:23:20]: No such file or directory @ rb_sysopen - /Users/vagrant/git/Pods/Target Support Files/Pods-Myapp/Pods-Myapp.debug.xcconfig
[05:23:20]: Detected provisioning profile mapping: {:"com.myapp.myapp"=>"match AppStore com.myapp.myapp"}

Я попытался явно сопоставить профиль обеспечения в моем Fastfile:

lane :beta do
    clear_derived_data
    increment_build_number
    match(app_identifier: "com.myapp.myapp", type: "appstore", clone_branch_directly: true)
    build_app(
        workspace: "Myapp.xcworkspace",
        scheme: "Myapp",
        configuration: "Debug",
        export_options: {
            method: "app-store",
            provisioningProfiles: { 
                "com.myapp.myapp" => "match AppStore com.myapp.myapp"
            }
        }
    )
    upload_to_testflight(skip_waiting_for_build_processing: true)
end

Есть идеи, что мне нужно, чтобы решить эту проблему?


person MartinHN    schedule 04.02.2018    source источник
comment
Та же проблема: работает локально, но возникает проблема на Bitrise. Удалось ли в итоге решить?   -  person Guy Daher    schedule 19.11.2018
comment
Нет, я сдался ..   -  person MartinHN    schedule 19.11.2018
comment
Для меня добавление обновления модуля и отключение подписи управления xcode автоматически заставили его работать.   -  person Guy Daher    schedule 20.11.2018
comment
Наконец-то обнаружена проблема с Fastlane и профилем: создайте профиль с именем, в котором нет пробелов, например xxx_Adhoc.   -  person user1760527    schedule 04.07.2020


Ответы (2)


Часть 1: как решить эту проблему и понять, что происходит

Чтобы воспроизвести / разрешить это локально, я бы предложил отключить автоматическую подпись. Таким образом, вы будете намного ближе к вашей конфигурации CI / CD. У вас может быть локальный доступ к сертификатам, которые позволят вам заставить его работать локально. Отключение автоматической подписи кода покажет вам, какие именно сертификаты использует ваш XCode. Для этого вы можете использовать команду disable_automatic_code_signing.

disable_automatic_code_signing(
    path: "demo-project/demo/demo.xcodeproj"
)

Как только это будет сделано, вы можете зайти в свой локальный XCode и посмотреть, какой профиль он использует. Это первый шаг. Я также предлагаю удалить все локальные профили подготовки из вашей библиотеки. (Гораздо ближе к конфигурации Bitrise, которая не имеет загруженных профилей после запуска потока). Следующие команды позволят добиться этого:

cd ~/Library/MobileDevice/Provisioning\ Profiles
rm -fr *

Как только это будет сделано, очень вероятно, что это не позволит вам экспортировать архив, используя желаемую цель (и конфигурацию). Надеюсь, он выйдет из строя локально так же, как и удаленно. После этого вы можете войти в свой XCode, чтобы увидеть различные профили обеспечения, которые были загружены с match, и выяснить, почему он не может автоматически разрешить это.

Часть 2: обоснованное предположение о том, что происходит и как с этим справиться.

Я подозреваю, что вы пытаетесь подписать код с помощью идентификатора подписи кода разработчика iPhone, но используемая вами команда match получает сертификат распространения (идентификатор подписи распространения iOS). Используя автоматическую подпись, XCode ищет профили обеспечения, соответствующие вашей цели и конфигурации. Он пытается найти сертификат разработчика iOS, но это не то, что вы получаете с помощью match.

Простым решением этой проблемы (если это проблема) было бы изменение метода идентификации знака до и после того, как вы build_app. Добиться этого можно так:

automatic_code_signing(
    path: "demo.xcodeproj",
    code_sign_identity: "iPhone Distribution"
)

Или прямо внутри build_app / gym с параметром code_sign_identity:

build_app(
    workspace: "Myapp.xcworkspace",
    scheme: "Myapp",
    configuration: "Debug",
    codesigning_identity: "iPhone Distribution" # or iPhone Developer
)
person Swift Rabbit    schedule 13.02.2019

Поскольку вы используете Bitrise, почему бы не использовать их интеграции, которые могут автоматически позаботиться о подписании кода и развертывании? Недавно я перешел с ступенек Fastlane на ступени Bitrise. См. Мой ответ здесь: https://stackoverflow.com/a/60836343/1271474

person Sukhrob    schedule 24.03.2020