iOS - ошибка Xcode 10 в Azure DevOPS - проблемы с задачей профиля обеспечения - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблема с конвейером Azure DevOPS для приложения Xcode iOS.Я создал конвейер с нуля, и он использует файл yaml, в котором я определяю сборку, а также подписывание и инициализацию на основе официальной документации Microsoft.Сборка использует XcodeVersion = 10 с CocoaPods и реализует подписывание и предоставление.У меня нет проблем с предварительной установкой сертификата P12, сборка извлекает его из библиотеки Secure Files и успешно устанавливает.

Проблема в том, что у меня есть профиль обеспечения.Я должен делать что-то не так в задаче InstallAppleProvisioningProfile @ 1 или в конфигурации ProvisioningProfileUuid в задаче XCode, потому что сборка вызывает следующую ошибку в задаче XCode:

❌ error: «Register» требует инициализациипрофиль с функцией настройки беспроводного аксессуара.Выберите профиль обеспечения для конфигурации сборки «Release» в редакторе проекта.(в целевом 'Register')

Я попытался установить параметр provProfileSecureFile в задаче InstallAppleProvisioningProfile @ 1, чтобы он указывал на файл ' .provisionprofile' и файл ' .mobileprovision', но явсе еще не вижу никакой команды, выполняемой в журналах.Приложение может быть построено, подписано и подготовлено на основе «MyProvisioning_Profile.mobileprovision» локально без проблем.

pool:
    vmImage: 'macOS-10.13'

variables:
    scheme: ''
    sdk: 'iphoneos'
    configuration: 'Release'

steps:
# Install an Apple certificate required to build on a macOS agent
- task: InstallAppleCertificate@2
    inputs:
    certSecureFile: 'MyProductionCert.p12'
    certPwd: $(P12password)

# Install an Apple provisioning profile required to build on a macOS agent
- task: InstallAppleProvisioningProfile@1
inputs:
    provisioningProfileLocation: 'Secure Files'
    provProfileSecureFile: 'MyProvisioning_Profile.provisionprofile'
    removeProfile: false

- task: Xcode@5
inputs:
    sdk: '$(sdk)'
    configuration: '$(configuration)'
    xcodeVersion: '10' 
    exportPath: '$(agent.buildDirectory)/output/$(sdk)/$(configuration)'
    packageApp: false
    xcWorkspacePath: 'Register.xcworkspace' 
    scheme: 'Register'
    signingOption: 'manual' 
    signingIdentity: $(APPLE_CERTIFICATE_SIGNING_IDENTITY)
    provisioningProfileUuid: $(APPLE_PROV_PROFILE_UUID)

Я ожидаю увидеть выполнение хотя бы команды из задачи InstallAppleProvisioningProfile @ 1, но чтоЯ вижу, 2 успешных, но пустых задач в журналах: 1. Предварительное задание: InstallAppleProvisioningProfile 2. InstallAppleProvisioningProfile

Задача Azure DevOPS Xcode затем завершается с ошибкой:

2019-02-08T01:35:05.1819530Z [command]/usr/bin/xcodebuild -sdk iphoneos -configuration Release -workspace /Users/vsts/agent/2.146.0/work/1/s/Register.xcworkspace -scheme Register build CODE_SIGN_STYLE=Manual CODE_SIGN_IDENTITY=iPhone Distribution: [MyCompany LLC] ([MyTeamID]) PROVISIONING_PROFILE= PROVISIONING_PROFILE_SPECIFIER= | /usr/local/lib/ruby/gems/2.6.0/bin/xcpretty -r junit --no-color
2019-02-08T01:35:10.6519500Z ❌  error: "Register" requires a provisioning profile with the Wireless Accessory Configuration feature. Select a provisioning profile for the "Release" build configuration in the project editor. (in target 'Register')
2019-02-08T01:35:10.6560090Z ** BUILD FAILED **

Имееткто-нибудь, использующий конвейеры Azure, видел эту проблему раньше?Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

Вы можете найти GUID профиля, когда запускаете один раз конвейер с задачей InstallAppleProvisioningProfile@1.(По моему опыту, GUID в URL-адресе от SecureFiles является GUID из конвейеров Azure и не имеет ничего общего с GUID профиля обеспечения.

Если вы загрузили профиль обеспечения в защищенные файлы конвейера и имеетев вашем конвейере:

- task: InstallAppleProvisioningProfile@1
  displayName: 'Install Ad Hoc Apple Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'SomeProfile.mobileprovision'

В журналах конвейера вы увидите нечто подобное:

sr/libexec/PlistBuddy -c Print UUID _xcodetasktmp.plist
12345678-abcd-1234-abcd-1234567890ab
sr/libexec/PlistBuddy -c Print Name _xcodetasktmp.plist
Company Profile iOS Distribution or Ad-Hoc

скопируйте оттуда GUID профиля, обновите ваш конвейер и попробуйте снова.

Моя конфигурация задачи XCode выглядит следующим образом:

- task: Xcode@5
  displayName: 'Build React Native for iOS'
  inputs:
    actions: 'build'
    scheme: 'AwesomeAppNative'
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: './ios/AwesomeAppNative.xcworkspace'
    xcodeVersion: '10' # Options: 8, 9, 10, default, specifyPath
    args: '-UseModernBuildSystem=N' # See https://github.com/facebook/react-native/issues/20492
    useXcpretty: 'false' 
    signingOption: 'manual' # Options: nosign, default, manual, auto
    signingIdentity: 'Certificate identity name (<TEAMID>)'
    provisioningProfileUuid: 12345678-abcd-1234-abcd-1234567890ab # Ad Hoc
    # provisioningProfileName: DONT PUT THE NAME HERE IT WOULD TAKE PRECENDENCE
    # teamId: <TEAMIDFromCertificat> # for signingOption: auto
    packageApp: 'true' # Package the app
    exportOptions: 'auto'
0 голосов
/ 26 марта 2019

Необходимо использовать GUID файла профиля обеспечения (то же самое для сертификата подписи), а не его имя.

Если вы просматриваете сведения о файле в DevOps Azure (Конвейеры> Библиотека> Защищенные файлы>{Ваш файл профиля обеспечения}) вы можете получить GUID в URL-адресе из параметра строки запроса secureFileId.

...