ios - 适用于 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()
解决方案
感谢您对 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()
推荐阅读
- angular - 在 Visual Studio 中创建独立的 Angular 项目
- node.js - discord.js 发送不想要的多条消息
- html - 结合 flex-start 和 space-between 的外观
- kotlin - 如何从 kotlin 中的标准输入读取所有行?
- php - Laravel 从缓存中加载设置
- react-native - React-Native 的 Vs 代码:是否可以手动链接库?
- wso2 - 管理员无法在 wso2 carbon 中查看或分配角色
- python - 根据多索引的一部分选择pandas系列中的条目
- java - 在另一个 Spring Entity 中使用 Spring Entity
- excel - 我可以简化 Airtable 公式的 if 语句吗?