Не удалось создать архив сборки xcode конвейера Azure Devops при автоматическом входе в код

Я пытаюсь создать конвейер, который позволит архивировать и загружать сборки во время тестового полета как задачу CI/CD. Но когда я пытаюсь заархивировать сборку, она постоянно терпит неудачу из-за ошибки подписи кода. Я сделал yml с автоматическим входом, но все равно выдает ошибку при входе, поскольку учетная запись разработчика не добавлена ​​в xcode конвейера Azure.

Причина следующая

 Using default simulator: iPhone 7.
    /usr/bin/xcodebuild -version
    Xcode 15.2
    Build version 15C500b
    
    /usr/bin/xcodebuild -sdk iphoneos -configuration Debug -workspace /Users/runner/work/1/s/xxxxx.xcworkspace -scheme xxxxxx -destination platform=ios Simulator,name=iPhone 7 archive -verbose
-allowProvisioningUpdates CODE_SIGN_STYLE=Automatic DEVELOPMENT_TEAM=xxxxxxx
    Command line invocation:
        /Applications/Xcode_15.2.app/Contents/Developer/usr/bin/xcodebuild
-sdk iphoneos -configuration Debug -workspace /Users/runner/work/1/s/xxxxxx.xcworkspace -scheme xxxxx -destination "platform=ios Simulator,name=iPhone 7" archive -verbose
-allowProvisioningUpdates CODE_SIGN_STYLE=Automatic DEVELOPMENT_TEAM=xxxxxxxx
    
    User defaults from command line:
        IDEPackageSupportUseBuiltinSCM = YES
    
    Build settings from command line:
        CODE_SIGN_STYLE = Automatic
        DEVELOPMENT_TEAM = xxxxxxx
        SDKROOT = iphoneos17.2
    
    --- xcodebuild: WARNING: Using the first of multiple matching destinations:
    { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }
    { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device }
    { platform:iOS Simulator, id:B06E40B9-47B6-4BA2-8E28-90AC66C3ADF4, OS:17.0.1, name:iPad (10th generation) }
    { platform:iOS Simulator, id:337853BE-7CA6-4920-82EF-47C6B3410DAD, OS:17.2, name:iPad (10th generation) }
    { platform:iOS Simulator, id:5293F755-CF59-4378-839E-0CBDA7CFA08C, OS:17.0.1, name:iPad Air (5th generation) }
    { platform:iOS Simulator, id:74DD7A76-4D60-4055-BA7D-8F0298ADCA60, OS:17.2, name:iPad Air (5th generation) }
    { platform:iOS Simulator, id:C8ECBCEA-380D-493A-A85F-C220E7EC871C, OS:17.0.1, name:iPad Pro (11-inch) (4th generation) }
    { platform:iOS Simulator, id:2A028112-D9A9-44AC-9296-F3BAC1BCBB3F, OS:17.2, name:iPad Pro (11-inch) (4th generation) }
    { platform:iOS Simulator, id:6639FAC9-EF1C-45FA-B010-D17C6DCE6446, OS:17.0.1, name:iPad Pro (12.9-inch) (6th generation) }
    { platform:iOS Simulator, id:555FF61B-3C0A-47D9-8D0D-96A1790F9D4A, OS:17.2, name:iPad Pro (12.9-inch) (6th generation) }
    { platform:iOS Simulator, id:02471309-E0BE-4F47-9833-25AFDE1D1357, OS:17.0.1, name:iPad mini (6th generation) }
    { platform:iOS Simulator, id:6464AF5D-17D8-4A45-A155-05EFCF792BD3, OS:17.2, name:iPad mini (6th generation) }
    { platform:iOS Simulator, id:5870AEBC-AC7B-4C21-86F6-065C10524EDA, OS:17.0.1, name:iPhone 14 }
    
    
    /Users/runner/work/1/s/xxxxxx.xcodeproj: error: No Accounts: Add a new account in Accounts settings. (in target 'xxxxx' from project 'xxxxx')
    /Users/runner/work/1/s/xxxxxx.xcodeproj: error: No profiles for 'xxxxxxx.xxx.xxx.xx' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'xxxxxxx.xxx.xxx.xx'. (in target 'xxxxxx' from project 'xxxxx')


trigger:
- development

pool:
  vmImage: 'macos-13'

jobs:
- job: iOS
  steps:

  - checkout: self
    submodules: true
    persistCredentials : true

  - task: UseRubyVersion@0
    inputs:
      versionSpec: '>=2.6'
      addToPath: true

  - task: Cache@2
    inputs:
      key: 'pods | "$(Agent.OS)" | Podfile.lock'
      path: 'Pods'
      cacheHitVar: 'PODS_CACHE_RESTORED'
  
  - task: CocoaPods@0
    displayName: 'pod install using the CocoaPods task with defaults'
    condition: ne(variables.PODS_CACHE_RESTORED, 'true')
    inputs:
        forceRepoUpdate: false

  - task: Xcode@5
    inputs:
      actions: 'clean'
      xcWorkspacePath: 'xxxxx.xcworkspace'
      scheme: '$(SCHEME)'
    displayName: Clean Build

  - task: Xcode@5
    inputs:
      actions: 'build'
      sdk: $(SDK)
      scheme: $(SCHEME)
      signingOption: 'auto'
      teamId: $(TEAMID)
      packageApp: false
      destinationPlatformOption: 'ios'
      configuration: $(CONFIGURATION)
      xcWorkspacePath: 'xxxx.xcworkspace'
      destinationSimulators: 'iPhone 15'
      args: '-verbose"'
      useXcpretty: false
    env:
      PODS_ROOT: '$(Build.SourcesDirectory)/Pods'
      PODS_XCFRAMEWORKS_BUILD_DIR: '$(Build.BinariesDirectory)/xcframeworks'

  - task: Xcode@5
    inputs:
      actions: 'archive'
      configuration: '$(CONFIGURATION)'
      xcWorkspacePath: 'xxxxx.xcworkspace'
      scheme: '$(SCHEME)'
      packageApp: true
      archivePath: '$(Build.BinariesDirectory).archive.xcarchive'
      exportPath: '$(Build.BinariesDirectory)/exported'
      signingOption: 'auto'
      teamId: '$(TEAMID)'
      destinationPlatformOption: 'ios'
      args: '-verbose -allowProvisioningUpdates'
      useXcpretty: false
    env:
      PODS_ROOT: '$(Build.SourcesDirectory)/Pods'
      PODS_XCFRAMEWORKS_BUILD_DIR: '$(Build.BinariesDirectory)/xcframeworks'

140
1

Ответ:

Решено

ошибка: профили для «xxxxxxx.xxx.xxx.xx» не найдены: Xcode не смог найти ни одного профиля обеспечения разработки приложений для iOS, соответствующего «xxxxxxx.xxx.xxx.xx». (в цели «xxxxxx» из проекта «xxxxxx»)

В образце YAML вы используете агент, размещенный в Microsoft: агент macOS-13. В этом случае в среде компьютера нет предварительно настроенных или кэшированных учетных данных и профилей обеспечения.

Вам необходимо добавить задачу Установить сертификат Apple и задачу Установить профиль обеспечения Apple, чтобы установить сертификаты и профили обеспечения перед сборкой Xcode.

Например:

steps:
- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'my-secure-file.p12' 
    certPwd: '$(P12password)'
- task: InstallAppleProvisioningProfile@1
  inputs:
    provProfileSecureFile: 'my-provisioning-profile.mobileprovision' 

- task: Xcode@5

Для получения более подробной информации вы можете обратиться к этому документу: Подпишите свое приложение Apple iOS, macOS, tvOS или watchOS и Xcode@4 — задача Xcode v4

Указывает метод подписания сборки. Выберите «Не кодировать подпись», чтобы отключить подпись. Выберите «Параметры проекта по умолчанию», чтобы использовать только конфигурацию подписи проекта. Выберите Подписание вручную, чтобы принудительно подписать вручную, и при необходимости укажите удостоверение подписи и профиль подготовки. Выберите Автоматическое подписание, чтобы принудительно выполнить автоматическое подписание, и при необходимости укажите идентификатор группы разработчиков. Если ваш проект требует подписи, используйте задачи «Установить Apple...», чтобы установить сертификаты и профили подготовки перед сборкой Xcode.

Обновлять:

Вот пример подписи приложения вручную:

steps:
- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'my-secure-file.p12' 
    certPwd: '$(P12password)'
- task: InstallAppleProvisioningProfile@1
  inputs:
    provProfileSecureFile: 'my-provisioning-profile.mobileprovision' 
- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: 'App'
    sdk: 'iphoneos'
    configuration: 'Release'
    xcWorkspacePath: '**/App.xcworkspace'
    xcodeVersion: 'default'
    packageApp: true
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
    archivePath: "$(System.DefaultWorkingDirectory)/archive"