【问题标题】:DevOps CI error for Xamarin iOS build No valid iOS code signing keys found in keychainXamarin iOS 构建的 DevOps CI 错误在钥匙串中找不到有效的 iOS 代码签名密钥
【发布时间】:2019-10-09 00:54:02
【问题描述】:

我已经为我的 Xamarin iOS 应用程序创建了 YAML 构建配置并提供了证书文件( p12 和 mobileprovision ),但是当管道运行时,它在应用程序的构建步骤中失败。证书的安装通过。

注意具有相同证书文件和密码的构建在 App Center 上工作正常

在 DevOps 中出现以下错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.Common.targets(646,3): 错误:在钥匙串中找不到有效的 iOS 代码签名密钥。你需要 向https://developer.apple.com 申请代码签名证书。 [/Users/vsts/agent/2.150.3/work/1/s/AwesomeApp/AwesomeApp.iOS/AwesomeApp.iOS.csproj]

下面是我在 Azure DevOps 中的 yaml:

- job: iOS
pool:
  vmImage: 'macos-latest'

steps:
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0
  displayName: 'Select the Xamarin SDK version'
  enabled: false

- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '**/*.sln'

- task: InstallAppleProvisioningProfile@1
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'iOS_Distribution.mobileprovision'

- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'ios_distribution.p12'
    certPwd: '$(p12-password)'
    keychain: 'temp'

- task: XamariniOS@2
  inputs:
    solutionFile: '**/*.sln'
    configuration: 'Ad-Hoc'
    buildForSimulator: false
    packageApp: false

我在 yaml 上尝试了各种不同的选项,但仍然出现错误。

【问题讨论】:

    标签: xamarin xamarin.ios azure-devops


    【解决方案1】:

    你不应该这样设置属性吗:

    - task: InstallAppleCertificate@2
        inputs:
        certSecureFile: 'ios_distribution.p12'
        certPwd: '$(P12password)'
        keychain: 'temp'
    
    - task: InstallAppleProvisioningProfile@1
        inputs:
        provisioningProfileLocation: 'secureFiles'
        provProfileSecureFile: 'iOS_Distribution.mobileprovision'
    
    - task: XamariniOS@2
        displayName: Build iOS App 
        inputs:
        solutionFile: '$(SolutionFile)'
        configuration: '$(BuildConfiguration)'
        buildForSimulator: false
        packageApp: true
        # This value is automatically set by the InstallAppleCertificate task
        signingIdentity: $(APPLE_CERTIFICATE_SIGNING_IDENTITY)
        # This value is automatically set by the InstallAppleProvisioningProfile task
        signingProvisioningProfileID: $(APPLE_PROV_PROFILE_UUID)
    

    这里的关键位是XamariniOS@2 任务上的signingIdentitysigningProvisioningProfileID

    【讨论】:

    • 谢谢,这很有意义,现在修改和重建。让我们看看。
    • 那行得通,这是一件很明显的事情,但错过了。谢谢指出!
    • 容易犯错...你还需要查看构建日志才能成功?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多