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
操作
需要 () 输入以空格分隔的操作列表。 有效选项包括 buildcleantestanalyze 、、和。 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.xcworkspaceMyApp/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-storepackagead-hocenterprisedevelopment
默认值:开发
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,可以指定测试运行标题。

任务控制选项

示例

生成 Xcode 应用

开源

此任务开放源代码上GitHub。 欢迎提供反馈和建议。

使用多个预配配置文件

目前不支持 Xcode 任务库的多个预配配置文件 (例如 iOS 应用扩展)

常见问题解答

需要使用代理吗?

至少需要一个代理才能运行生成或发布。

我遇到了问题。 如何对其进行故障排除?

请查看排查生成和发布问题

我无法选择默认代理池,无法将生成或发布排队。 如何修复此问题?

请查看代理池

我的 NuGet 推送任务失败,出现“错误: 无法获取本地颁发者证书”错误。 如何解决此问题?

可通过添加受信任的根证书来解决此问题。 可将环境变量 NODE_EXTRA_CA_CERTS=file 添加到生成代理,也可在管道中添加任务变量 NODE.EXTRA.CA.CERTS=file。 有关此变量的更多详细信息,请参阅 Node.js 文档。 有关在管道中设置变量的说明,请参阅在管道中设置变量