Azure Devops Трубопроводная интеграция для iOS - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь постоянно доставлять мое iOS приложение для тестирования качества. Для этого мне сначала нужно сгенерировать файл ipa. К сожалению, я не вижу, чтобы это генерировалось в задаче 'XCode'. Я вижу, что архив был успешно создан, и у меня есть флажок для создания пакета. Ниже мой текущий файл yml.

# Xcode

# Build, test, and archive an Xcode workspace on macOS.
# Add steps that install certificates, test, sign, and distribute an app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/xcode

trigger:
- Development

pool: 'OSX'

steps:

- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'MyAppDistributionCert-20200305.320pm.p12'
    certPwd: '$(MyAppiOSDistributionCert)'
    keychain: 'temp'

- task: InstallAppleProvisioningProfile@1
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'Bot_MyApp_Debug.mobileprovision'

- task: Xcode@5
  inputs:
    actions: 'clean build test archive'
    scheme: 'MyApp'
    sdk: 'iphonesimulator'
    configuration: 'Debug'
    xcWorkspacePath: '**/MyApp.xcworkspace'
    xcodeVersion: 'default' # Options: 8, 9, 10, default, specifyPath
    packageApp: true
    destinationPlatformOption: 'iOS'
    destinationSimulators: 'iPhone 8 Plus'
    signingOption: default
    provisioningProfileName: 'Bot_MyApp_Debug.mobileprovision'
    exportMethod: 'Development'
    exportPath: '$(system.defaultworkingdirectory)'

- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Спасибо за вашу помощь Леви Лу-MSFT. Вы привели меня в правильном направлении. Первоначально проблема заключалась в том, что у меня был неправильный сертификат для инициализации, и я использовал «sdk iphonesimulator» вместо «sdk iphoneos». Затем я попытался использовать два разных профиля обеспечения (один для цели iphone и один для расширения), но у меня возникли проблемы. Затем я понял, что могу использовать только один сертификат и один профиль обеспечения с включенными группами приложений. Это, наряду с другими небольшими изменениями, позволило мне экспортировать и создать артефакт. Хотя у меня все еще есть проблемы с использованием моего ipa для распространения приложения через MS App Center, я думаю, этот билет можно закрыть. Ниже приведен мой файл yaml на случай, если у кого-то возникнут проблемы:

0 голосов
/ 08 апреля 2020

Вы можете попробовать указать другую папку для exportPath (ie. $(agent.buildDirectory)/output/$(sdk)/$(configuration)) вместо $(system.defaultworkingdirectory), если содержимое (вместе с файлом ipa) в рабочей папке по умолчанию перезаписано по экспортированному содержимому.

Вы также можете проверить журнал задачи xcode, чтобы увидеть, был ли создан файл ipa и где он был расположен.

Вы также можете проверить параметр путь к архиву для задачи XCode. Файл ipa будет помещен в папку, указанную в пути к архиву. Вы можете указать место для хранения файла ipa. Для примера ниже я помещаю файл ipa в папку $(system.defaultworkingdirectory)/archive. Затем в следующей задаче я буду ссылаться на файл ipa по пути $(system.defaultworkingdirectory)/archive/*.ipa

- task: Xcode@5
  inputs:
    ...
    exportPath: "$(agent.buildDirectory)/output/$(sdk)/$(configuration)"
    archivePath: "$(system.defaultworkingdirectory)/archive"


- task: CopyFiles@2
  inputs:
    sourceFolder: "$(system.defaultworkingdirectory)/archive"
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1

Надеюсь, что выше поможет!

...