首页 > 解决方案 > 适用于 iOS 的 Azure Devops 管道集成

问题描述

我正在尝试不断交付我的 iOS 应用程序以进行 QA 测试。为此,我首先需要生成一个 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()

标签: ioscontinuous-integrationazure-pipelines

解决方案


感谢您对 Levi Lu-MSFT 的帮助。你把我引向了正确的方向。最初,问题是我的配置证书错误,并且使用的是“sdk iphonesimulator”而不是“sdk iphoneos”。然后我尝试使用两种不同的配置文件(一个用于 iphone 目标,一个用于扩展),但我遇到了问题。然后我意识到我可以只使用一个证书和一个配置文件并启用应用程序组。这与其他小的更改一起使我能够导出和创建工件。虽然我在使用我的 ipa 通过 MS App Center 分发应用程序时仍然遇到问题,但我认为这张票可以关闭。以下是我的 yaml 文件,以防有人遇到问题:

# 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

# The following lists all of the  Xcode options
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/xcode?view=azure-devops

trigger:
- Development

pool: 'OSX'

steps:

- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'TFSDJR-Certificates.p12'
    certPwd: '$(TSFMyAppPW)' #MyAppiOSDistributionCert
    keychain: 'temp'


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

- task: Xcode@5
  inputs:

  # Build Aurguments
    actions: 'clean'
    scheme: 'MyApp'
    **sdk: 'iphoneos'**
    configuration: 'Debug'
    xcWorkspacePath: '**/MyApp.xcworkspace'
    xcodeVersion: 'default' # Options: 8, 9, 10, default, specifyPath

# Package options
    packageApp: true
    exportOptions: specify
    **exportMethod: 'development'**
    exportPath: '$(system.defaultworkingdirectory)'
    teamId: YOURTEAMID
    exportTeamId: YOURTEAMID


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

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

推荐阅读