Ios 无法加载证书,Xcode生成无法安装证书(VSTS/Azure DevOps,YAML管道)
我正在使用Azure DevOps中的YAML管道来构建一个iOS应用程序 我的YAML如下所示:Ios 无法加载证书,Xcode生成无法安装证书(VSTS/Azure DevOps,YAML管道),ios,xcode,azure-devops,Ios,Xcode,Azure Devops,我正在使用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/
# 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中设置构建管道,但我得到了相同的结果。您似乎一直在遵循我所做的 问题似乎在于读取
$(P12password)
变量。我尝试在安装Apple certificate任务中直接输入证书密码,但没有变量,结果成功了
希望我们能够一起改进这个答案,使其成为一个“解决方案”,而不仅仅是一个解决办法。为了让任务能够读取变量,如您的
$(p12密码)
您需要链接变量组。
例如,对于构建管道,您可以在UI中以“编辑”模式执行此操作。在“YAML”选项卡旁边,您可以找到带有子项“变量组”和按钮“链接变量组”的“变量”,该按钮允许您从库中选择一个变量
发布管道也是如此,其中“变量”选项卡位于“任务”下拉列表的旁边
详细信息:无论如何,我带着这个错误来到这里,但通过确保证书密码没有特殊字符来解决它。当构建运行时,似乎有一个逃逸密码的问题(尤其是£符号)。当Azure不知道如何访问变量时,会出现此错误 请注意,在下面的代码中,我们没有提及任何变量组:
pool:
vmImage: 'macOS 10.13'
steps:
- task: InstallAppleCertificate@2
displayName: 'Install an Apple certificate'
inputs:
certSecureFile: 'FILE_ID'
certPwd: '$(P12password)'
因此,当代理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的变量,然后给它分配一个值。我遇到了完全相同的问题。你成功地做到了吗?没有,我仍然卡住了。错误通常发生在证书格式无效时,你能检查一下吗?你能用同样的命令在本地机器上安装这个文件吗?很高兴看到这个问题,我遇到了一个非常类似的问题。我在Github()的文档中打开了一个澄清请求,但到目前为止还没有得到确认。您是否能够成功引用您的证书?我特别注意到这个错误:“Job MacOSX:Step input certSecureFile引用了找不到的安全文件my_file_name.p12。该安全文件不存在或未被授权使用。”我在YAML中尝试了一些方法,但无法通过error@EddieChen-MSFT我试过了,在我的Mac电脑上也出现了同样的错误。因此,证书的格式确实是个问题。我用fastlane match来存储证书,显然他们对证书做了一些不同的处理。。。我解决了这个问题,从我的密钥链中导出证书,作为安全文件等上传,现在它可以工作了。