如何在 Azure Pipeline 中为 iOS 版本使用自动预配

Posted

技术标签:

【中文标题】如何在 Azure Pipeline 中为 iOS 版本使用自动预配【英文标题】:How to use automatic provisioning for iOS builds in Azure Pipeline 【发布时间】:2020-10-23 00:13:08 【问题描述】:

我正在尝试为 ios 构建使用自动配置。在我的 Mac 上它可以正常工作,但是当我尝试在 Azure 管道上执行此操作时,我收到以下错误

error: There are no accounts registered with Xcode. Add your developer account to Xcode (in target 'XXX' from project 'XXXX')
error: No profiles for 'com.devhaus.ljdev' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.XXXX'. (in target 'XXXX' from project 'XXXX')

在我的 yaml 中,我只有成功运行的 InstallAppleCertificate 任务

          - task: InstallAppleCertificate@2
            inputs:
              certSecureFile: $(p12File)
              certPwd: $(p12Password)

          - script: |
              npx run ionic build 
            displayName: "build"

          - script: |
              npx ionic cordova platform add ios@6
            displayName: "build for Apple"

# Didn't just do npx ionic cordova build ios here as there 
# is a bug that will cause the build to hang.

          - script: |
              npx cordova build ios --device
            displayName: "build for IOS"

【问题讨论】:

【参考方案1】:

this thread 中提到自动签名仅适用于开发版本。您不能在 DevOps 管道中使用自动签名进行分发(临时、应用商店等)。

但是,您始终可以通过指定 codeSignIdentityprovisioningProfile 参数来手动为您的 ios 签名以构建命令。对于下面的示例命令。见科尔多瓦文档Signing an App

 npx cordova build ios --device --codeSignIdentity="$(APPLE_CERTIFICATE_SIGNING_IDENTITY)" --provisioningProfile="$(APPLE_PROV_PROFILE_UUID)"

当您使用 Install Apple CertificateInstall Apple Provisioning Profile 任务在 azure devops 管道中下载证书和配置文件时。变量$(APPLE_CERTIFICATE_SIGNING_IDENTITY)$(APPLE_PROV_PROFILE_UUID) 由这些任务自动设置,允许您直接引用签名身份和配置文件UUID。请参阅 Microsoft 文档here。

在签名身份字段中,输入 $(APPLE_CERTIFICATE_SIGNING_IDENTITY)。此变量由您选择的证书的安装 Apple 证书任务自动设置。

在配置文件 UUID 字段中,输入 $(APPLE_PROV_PROFILE_UUID)。此变量由您选择的配置文件的安装 Apple 配置文件任务自动设置。

【讨论】:

以上是关于如何在 Azure Pipeline 中为 iOS 版本使用自动预配的主要内容,如果未能解决你的问题,请参考以下文章

如何组织 azure-pipeline.yaml 文件

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?

如何从 Azure DevOps Pipeline 读取 Azure 文件共享文件

如何在 ML Azure Pipeline 中使用环境

如何向 Azure 存储授予对 Azure Pipeline 的 Azure 文件副本的访问权限?

如何在 Azure Pipeline (Windows) 中安装 .msi 程序