Xcode 任务
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
使用此任务在 macOS 上生成、测试和存档 Xcode 工作区,并根据需要打包应用。
需求
xcode
YAML 代码段
# Xcode
# Build, test, or archive an Xcode workspace on macOS. Optionally package an app.
- task: Xcode@5
inputs:
#actions: 'build'
#configuration: '$(Configuration)' # Optional
#sdk: '$(SDK)' # Optional
#xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace' # Optional
#scheme: # Optional
#xcodeVersion: 'default' # Optional. Options: 8, 9, 10, default, specifyPath
#xcodeDeveloperDir: # Optional
packageApp:
#archivePath: # Optional
#exportPath: 'output/$(SDK)/$(Configuration)' # Optional
#exportOptions: 'auto' # Optional. Options: auto, plist, specify
#exportMethod: 'development' # Required when exportOptions == Specify
#exportTeamId: # Optional
#exportOptionsPlist: # Required when exportOptions == Plist
#exportArgs: # Optional
#signingOption: 'nosign' # Optional. Options: nosign, default, manual, auto
#signingIdentity: # Optional
#provisioningProfileUuid: # Optional
#provisioningProfileName: # Optional
#teamId: # Optional
#destinationPlatformOption: 'default' # Optional. Options: default, iOS, tvOS, macOS, custom
#destinationPlatform: # Optional
#destinationTypeOption: 'simulators' # Optional. Options: simulators, devices
#destinationSimulators: 'iPhone 8' # Optional. Default value: iPhone8 for Xcode 11 and iPhone 7 for other iOS projects; Apple TV for tvOS projects.
#destinationDevices: # Optional
#args: # Optional
#workingDirectory: # Optional
#useXcpretty: true # Optional
#publishJUnitResults: # Optional
参数
参数 | 说明 |
---|---|
actions 操作 |
需要 () 输入以空格分隔的操作列表。 有效选项包括 build 、 clean test analyze 、、和。 archive 例如, clean build 将运行干净的生成。 请参阅 Apple:从命令行生成 XCODE 常见问题解答。 默认值:生成 |
configuration 配置 |
(可选) 输入要生成的 Xcode 项目或工作区配置。 此字段的默认值为变量 $(Configuration) 。 使用变量时,请确保在 "变量" 选项卡上指定一个值 (例如 Release ) 。默认值: $ (配置) |
sdk SDK 中 IsInRole 中的声明 |
(可选) 指定生成 Xcode 项目或工作区时要使用的 SDK。 从 macOS 终端应用程序运行 xcodebuild -showsdks ,以显示 sdk 的有效列表。 此字段的默认值为变量 $(SDK) 。 使用变量时,请确保在 "变量" 选项卡上指定一个值 (例如 iphonesimulator ) 。默认值: $ (SDK) |
xcWorkspacePath 工作区或项目路径 |
(可选) 请输入从存储库的根目录到 Xcode 工作区或项目的相对路径。 例如,MyApp/MyApp.xcworkspace 或 MyApp/MyApp.xcodeproj 。 默认值: * */*. .xcodeproj/xcworkspace |
scheme Scheme |
(可选) 输入在 Xcode 中定义的方案名称。 它必须为共享方案,并在 Xcode 中的托管方案下启用其 "共享" 复选框。 如果在上面指定了 工作区或项目路径 ,但未指定方案,并且工作区有单个共享方案,则会自动使用该方案。 |
xcodeVersion Xcode 版本 |
(可选) 指定 Xcode 的目标版本。 选择 Default 此值将在代理计算机上使用 Xcode 的默认版本。 选择版本号 (例如 Xcode 10 ) 依赖于在代理计算机上为版本的位置设置的环境变量 (例如 XCODE_10_DEVELOPER_DIR=/Applications/Xcode_10.0.0.app/Contents/Developer ) 。 选择 Specify path 以提供 Xcode 开发人员目录的特定路径。 默认值:默认值 |
xcodeDeveloperDir Xcode 开发人员路径 |
(可选) 输入特定 Xcode 开发人员目录的路径 (例如 /Applications/Xcode_10.0.0.app/Contents/Developer ) 。 当代理计算机上安装了多个版本的 Xcode 时,这很有用。
|
签名和预配选项
参数 | 说明 |
---|---|
signingOption 签名样式 |
(可选) 选择为生成签名的方法。 选择 Do not code sign 禁用签名。 选择 Project defaults 此项目将只使用项目的签名配置。 选择 Manual signing 此设置可强制手动签名,还可以选择指定签名标识和预配配置文件。 选择 Automatic signing 此项目以强制自动签名,并选择性地指定开发团队 ID。 如果你的项目需要签名,请使用 "安装 Apple ..."在 Xcode 生成之前安装证书和预配配置文件的任务。 默认值: nosign |
signingIdentity 签名标识 |
(可选) 输入用于对生成进行签名的签名标识替代。 这可能需要解锁代理计算机上的默认密钥链。 如果未输入任何值,则将使用 Xcode 项目的设置。 |
provisioningProfileUuid 预配配置文件 UUID |
(可选) 输入要用于此生成的已安装预配配置文件的 UUID。 使用不同方案或目标的单独生成任务,按目标 (iOS、tvOS、watchOS) 中的单个工作区指定单独的预配配置文件。 |
provisioningProfileName 设置配置文件名称 |
(可选) 输入要用于此生成的已安装设置配置文件的名称。 如果指定此设置,则优先于预配配置文件 UUID。 使用不同方案或目标的单独生成任务,按目标 (iOS、tvOS、watchOS) 中的单个工作区指定单独的预配配置文件。 |
teamId 团队 ID |
(可选,除非你是多个开发团队的成员。 ) 指定10个字符的开发团队 ID。 |
包选项
参数 | 说明 |
---|---|
packageApp 创建应用包 |
指示是否应作为生成的一部分生成 IPA 应用包文件。 默认值:false |
archivePath 存档路径 |
(可选) 指定应在其中放置已创建存档的目录。 |
exportPath 导出路径 |
(可选) 指定从存档中导出的产品的目标。 默认值: output/$ (SDK) /$ (配置) |
exportOptions 导出选项 |
(可选) 选择一种方法来提供导出存档的选项。 选择的默认值 Automatic 时,将从存档中自动检测到导出方法。 选择 plist 此选项可指定包含导出选项的 info.plist 文件。 选择 Specify 此项目可提供特定的 导出方法 和 团队 ID。 默认值:自动 |
exportMethod 导出方法 |
需要 () 输入 Xcode 应用于导出存档的方法。 例如:app-store 、package 、ad-hoc 、enterprise 或 development 。
默认值:开发 |
exportTeamId 团队 ID |
(可选) 从 Apple 开发人员门户中输入10个字符的团队 ID,供导出过程使用。 |
exportOptionsPlist 导出选项 info.plist |
需要 () 输入包含要在导出过程中使用的选项的 info.plist 文件的路径。 |
exportArgs 导出参数 |
(可选) 输入要在导出过程中使用的其他命令行参数。 |
设备和模拟器选项
参数 | 说明 |
---|---|
destinationPlatformOption 目标平台 |
(可选) 在通用生成设备无效时选择要用于 UI 测试的目标设备平台。 选择 Custom 指定此列表中未包含的平台。 选中 Default 后,不会以模拟器和设备为目标。 默认值:默认值 |
destinationPlatform 自定义目标平台 |
(可选) 在通用生成设备无效时选择要用于 UI 测试的目标设备平台。 选择 Custom 指定此列表中未包含的平台。 选中 Default 后,不会以模拟器和设备为目标。 默认值:默认值 |
destinationTypeOption 目标类型 |
(可选) 选择要用于 UI 测试的目标类型。 设备必须通过电缆或网络连接连接到 Mac 以执行生成。 请参阅 Xcode 中的 设备和模拟器。 默认值:模拟器 |
destinationSimulators 模拟 |
(可选) 输入用于 UI 测试的 Xcode 模拟器名称。 例如,输入 (iPhone X iOS 和 watchOS) 或 Apple TV 4K (tvOS) 。 目标 OS 版本是可选的,可以"OS=versionNumber"格式指定,例如 iPhone X,OS=11.1 。 可在此处找到托管 macOS 代理上安装的模拟器 列表。 默认值:iPhone8 表示 Xcode 11,iPhone iOS 项目为 7;适用于 tvOS 项目的 Apple TV。 |
destinationDevices 设备 |
(可选) 输入用于 UI 测试的设备的名称,例如 Raisa's iPad 。 当前仅支持一个设备。 请注意,Apple 不允许在设备名称 () ' 撇号。 相反,可以使用 () ' 引号。
|
高级选项
参数 | 说明 |
---|---|
args 参数 |
(可选) 输入要生成的其他命令行参数。 这可用于指定 -target 或 -project 参数,而不是指定工作区/项目和方案。 请参阅 Apple:使用 Xcode 常见问题解答从命令行生成。
|
cwd 工作目录 |
(可选) 输入要运行生成的工作目录。 如果未输入任何值,则使用存储库的根目录。 参数别名: workingDirectory
|
useXcpretty 使用 xcpretty |
(可选) 指定是否使用 xcpretty 设置 xcodebuild 输出的格式并生成 JUnit 测试结果。 启用此功能需要在代理计算机上安装 xcpretty。 它预装在 Microsoft 托管的生成代理上。 请参阅 xcpretty on GitHub。 默认值:true |
xcprettyArgs xcpretty 的参数 |
(可选) 如果已启用 xcpretty,请为 xcpretty 指定参数。 有关 xcpretty 参数GitHub,请参阅 xcpretty on GitHub。 |
publishJUnitResults 将测试结果发布到 Azure Pipelines/TFS |
(可选) 如果上面启用了 xcpretty,请指定是否将 JUnit 测试结果发布到 Azure Pipelines/TFS。 默认值:false |
testRunTitle 测试运行标题 |
(可选) 如果上面启用了 xcpretty 和 publishJUnitResults,可以指定测试运行标题。 |
任务控制选项
示例
开源
此任务开放源代码上GitHub。 欢迎提供反馈和建议。
使用多个预配配置文件
目前不支持 Xcode 任务库的多个预配配置文件 (例如 iOS 应用扩展)
常见问题解答
需要使用代理吗?
至少需要一个代理才能运行生成或发布。
我遇到了问题。 如何对其进行故障排除?
请查看排查生成和发布问题。
我无法选择默认代理池,无法将生成或发布排队。 如何修复此问题?
请查看代理池。
我的 NuGet 推送任务失败,出现“错误: 无法获取本地颁发者证书”错误。 如何解决此问题?
可通过添加受信任的根证书来解决此问题。 可将环境变量 NODE_EXTRA_CA_CERTS=file
添加到生成代理,也可在管道中添加任务变量 NODE.EXTRA.CA.CERTS=file
。 有关此变量的更多详细信息,请参阅 Node.js 文档。 有关在管道中设置变量的说明,请参阅在管道中设置变量。