2

我在 Azure DevOps 中使用 YAML 管道来构建 iOS 应用程序。

我的 YAML 如下所示:

# Xcode
# Build, test, and archive an Xcode workspace on macOS.
# Add steps that install certificates, test, sign, and distribute the app, save build artifacts, and more:
# https://docs.microsoft.com/vsts/pipelines/languages/xcode

pool:
  vmImage: 'macOS 10.13'

steps:
- task: InstallAppleCertificate@2
  displayName: 'Install an Apple certificate'
  inputs:
    certSecureFile: 'FILE_ID'
    certPwd: '$(P12password)'

- task: InstallAppleProvisioningProfile@1
  displayName: 'Install an Apple provisioning profile'
  inputs:
    provProfileSecureFile: 'FILE_ID'

- task: CocoaPods@0
  displayName: 'pod install using the CocoaPods task with defaults'

- task: Xcode@5
  displayName: 'Xcode build'
  inputs:
    xcWorkspacePath: 'MyApp.xcworkspace'
    scheme: 'MyApp'
    xcodeVersion: 'Default'
    signingOption: manual
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

我在安装 Apple 证书步骤中遇到错误:

2018-10-02T20:08:23.4496940Z ##[section]Starting: Install an Apple certificate
2018-10-02T20:08:23.4786520Z ==============================================================================
2018-10-02T20:08:23.4786680Z Task         : Install Apple Certificate
2018-10-02T20:08:23.4786800Z Description  : Install an Apple certificate required to build on a macOS agent
2018-10-02T20:08:23.4786940Z Version      : 2.137.0
2018-10-02T20:08:23.4787050Z Author       : Microsoft Corporation
2018-10-02T20:08:23.4787160Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=862067)
2018-10-02T20:08:23.4787280Z ==============================================================================
2018-10-02T20:08:24.9657760Z [command]/usr/local/bin/openssl pkcs12 -in /Users/vsts/agent/2.140.2/work/_temp/PWEKQ6YCZA.p12 -nokeys -passin pass:*** | /usr/local/bin/openssl x509 -noout -fingerprint
2018-10-02T20:08:25.0196330Z 140735606010824:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1220:
2018-10-02T20:08:25.0197000Z 140735606010824:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:386:Type=PKCS12
2018-10-02T20:08:25.0332040Z unable to load certificate
2018-10-02T20:08:25.0332600Z 140735606010824:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:697:Expecting: TRUSTED CERTIFICATE
2018-10-02T20:08:25.0437120Z ##[error]Error: /usr/local/bin/openssl failed with return code: 1
2018-10-02T20:08:25.0514080Z ##[section]Finishing: Install an Apple certificate

知道这里有什么问题吗?

我还尝试通过 UI 在 Azure DevOps 中设置构建管道,但得到了相同的结果。

4

4 回答 4

2

对于它的价值,我带着这个确切的错误来到这里,但通过确保证书密码没有特殊字符来解决它。在构建运行时,似乎存在转义密码(尤其是 £ 符号)的问题。

于 2020-01-23T14:05:02.000 回答
2

您似乎和我一样一直在遵循本指南。

问题似乎在于读取$(P12password)变量。我尝试在没有变量的情况下直接在安装 Apple 证书任务中输入证书密码并通过。

希望我们可以一起改进这个答案,使其成为“解决方案”,而不仅仅是一种解决方法。

于 2019-09-13T13:59:23.263 回答
1

为了允许任务读取像您这样的变量,$(P12password)您需要链接变量组。例如,对于构建管道,您可以在 UI 中以“编辑”模式执行此操作。在“YAML”选项卡旁边,您可以找到带有子项“变量组”和“链接变量组”按钮的“变量”,它允许您从库中选择一个。

对于“变量”选项卡位于“任务”下拉列表旁边的发布管道也是如此。

详细信息:https ://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml

于 2019-12-11T12:36:52.387 回答
0

当 Azure 不知道如何访问变量时会出现此错误。

请注意,在下面的代码中,我们没有引用任何变量组:

pool:
  vmImage: 'macOS 10.13'

steps:
- task: InstallAppleCertificate@2
  displayName: 'Install an Apple certificate'
  inputs:
    certSecureFile: 'FILE_ID'
    certPwd: '$(P12password)'

因此,当 Agent macOS 运行它没有密码的任务时,它与环​​境变量具有相同的概念。

为了完成这项工作,我们必须定义存储信息的变量组,如下所示:

pool:
  vmImage: 'macOS 10.13'
variables:
  - group: 'suitableVariableGroupName'
steps:
- task: InstallAppleCertificate@2
  displayName: 'Install an Apple certificate'
  inputs:
    certSecureFile: 'FILE_ID'
    certPwd: '$(P12password)'

请注意,变量组“suitableVariableGroupName”应该有一个名为:P12password 的变量,然后为其分配一个值。

于 2021-05-06T14:46:46.877 回答