Azure Devops Pipelines - проект Xcode с несколькими профилями инициализации не может архивироваться и подписываться - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в DevOps, поэтому, пожалуйста, будьте осторожны, если я пропустил что-то простое:)

В конвейерах Azure я использую следующее: размещенный MacOS с агентом сборки Xcode (версия Xcode 5.142.0)

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

  • Intents
  • ItentsUI
  • Widget
  • App

Я следовал инструкциям по настройке сертификатов и профилей обеспечения здесь (хотя в моем проекте используется автоматическая подпись) : https://docs.microsoft.com/en-us/azure/devops/pipelines/apps/mobile/app-signing?view=vsts&tabs=apple-install-during-build

Они корректно устанавливаются на размещенный агент компоновки (без ошибок), и сборка продолжается до подписания.

Во время подписи кажется, что ни одна из целей не может найти свои профили обеспечения (как при использовании «ручного», так и «автоматического» назначения).

Вот что запускается в логах:

[command]/usr/bin/xcodebuild -workspace /Users/vsts/agent/2.142.1/work/1/s/*MYAPP**.xcworkspace -scheme **MYAPP** archive -sdk iphoneos -configuration Release -archivePath /Users/vsts/agent/2.142.1/work/1/s/**MYAPP** CODE_SIGN_STYLE=Manual PROVISIONING_PROFILE= PROVISIONING_PROFILE_SPECIFIER= | /usr/local/bin/xcpretty --no-color

Затем, когда дело доходит до архивации, для каждой схемы происходит следующее:

error: "xxx Today Widget" requires a provisioning profile with the Push Notifications and App Groups features. Select a provisioning profile for the "Release" build configuration in the project editor. (in target 'xxx Today Widget')

Несколько вопросов:

1.) Кто-нибудь может указать мне обновленное руководство? Это похоже на обычный случай использования, и я явно что-то упускаю.

2.) В качестве альтернативы, есть ли способ заставить какой профиль использовать какую схему для какой схемы при архивировании и подписании нескольких схем в одной сборке?

3.) Является ли автоматическая подпись опцией в конвейерах?

Для полноты я видел здесь что-то похожее: https://github.com/Microsoft/azure-pipelines-tasks/issues/964, но оно было закрыто более двух лет.

Спасибо, что заглянули, ребята!

Andrew

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Вот как мы создали приложение для iOS с несколькими профилями обеспечения для работы в DevOps Azure.

  • Убедитесь, что в вашей учетной записи установлено расширение Apple App Store Azure DevOps , написанное Microsoft.
  • Установите все необходимые профили обеспечения с помощью нескольких Установите профиль обеспечения Apple tasks
  • Добавьте задачу сборки Xcode и настройте ее в соответствии с настройками своего рабочего пространства / проекта
  • Установите для параметра «Стиль подписания» значение «Автоматическая подпись» и укажите идентификатор своей команды в поле «Идентификатор команды» в разделе «Подписывание и подготовка»
  • Создайте файл .plist, настройте его, как показано ниже, и поместите его куда-нибудь (хранилище кода, защищенные файлы и т. Д.). Этот пример относится к приложению наблюдения, но это может быть любой сценарий, когда необходимо несколько профилей обеспечения. Чтобы узнать UUID профиля обеспечения, откройте его в текстовом редакторе и найдите ключ «UUID».
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>provisioningProfiles</key>
        <dict>
            <key>YOUR_BUNDLE_ID.watchkitapp.watchkitextension</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
            <key>YOUR_BUNDLE_ID.watchkitapp</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
            <key>YOUR_BUNDLE_ID</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
        </dict>
        <key>signingCertificate</key>
        <string>iOS Distribution</string>
        <key>signingStyle</key>
        <string>manual</string>
        <key>method</key>
        <string>app-store</string>
        <key>teamID</key>
        <string>YOUR_TEAM_ID</string>
    </dict>
    </plist>
  • В разделе «Параметры пакета» укажите «Plist» в поле «Параметры экспорта» и укажите путь к .plist, созданному вами в поле «Список параметров экспорта»
0 голосов
/ 25 апреля 2019

Убедитесь, что вы правильно указали файл .xcworkspace вашего проекта, вместо того, чтобы по умолчанию установить его на <Project Name>.xcodeproj/project.xcworkspace. Это преследовало меня в течение двух дней во время тестирования.

Пример:

- task: Xcode@5
  inputs:
    sdk: '$(sdk)'
    scheme: '$(scheme)'
    configuration: '$(configuration)'
    xcWorkspacePath: '**/<Project Name>.xcworkspace' # Make sure this line is here
    xcodeVersion: 'default' # Options: default, 10, 9, 8, specifyPath
    exportPath: '$(agent.buildDirectory)/output/$(sdk)/$(configuration)'
0 голосов
/ 09 ноября 2018

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

Теперь я могу успешно создавать, архивировать и подписывать.

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

Andrew

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...