繁体   English   中英

Azure Devops Pipelines for ionic iOS - 配置文件错误。 Select 签名和功能编辑器中的配置文件

[英]Azure Devops Pipelines for ionic iOS - Error of provisioning profile. Select a provisioning profile in the Signing & Capabilities editor

我是 Azure Devops 管道的新手,并且正在为离子项目开发管道以构建 android 和 iOS 构建。

对于 android,我已经成功了,apk 我也按照预期工作正常。 但是对于 iOS,我在过去 4 天被卡住了,无法继续。 下面是我的管道 yaml 文件。 虽然,我已经安装了配置文件证书,但仍然面临如下错误:错误:“APP”需要配置文件。 Select 签名和功能编辑器中的配置文件。 (在项目“APP”的目标“APP”中)

请建议如何解决此问题以生成 iOS build/ipa。

注意:现在我正在为 android 和 iOS 使用相同的 yaml 文件,请建议是否是标准方法。

YAML 管道文件:

trigger:
- main

pool:
  vmImage: 'macos-latest'

variables:
  projectName: 'APP'

   #ios variables
  certSecureFileName: 'Certificates.p12'
  P12Password: 'PQRXYZ'
  signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
  ##  provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
  provisioningProfile: 'APP_Distribution.mobileprovision'
  sdkOption: 'iphoneos'
  configurationOption: 'Debug'
  workspaceName: '$(Build.SourcesDirectory)/platforms/ios/APP.xcworkspace'
  schemeName: 'APP'
  ArchivePath: ~/output/APP.xcarchive
  ExportIpaPath: ~/output/APP.ipa 

steps:    
        - script: sudo npm install -g @ionic/cli
          displayName: 'Install Ionic CLI'

        - task: Npm@1
          inputs:
            workingDir: '$(Build.SourcesDirectory)'
            command: install
          displayName: 'NPM Install'
                
        - task: InstallAppleCertificate@2
          displayName: 'Install P12 Certificates'
          inputs:
            certSecureFile: '$(certSecureFileName)'
            certPwd: '$(P12Password)'
            signingIdentity: '$(signingIdentity)'
            deleteCert: true  

        - task: InstallAppleProvisioningProfile@1
          displayName: 'Install App provisioning profile'
          inputs:
            provisioningProfileLocation: 'secureFiles'
            provProfileSecureFile: '$(provisioningProfile)'
            removeProfile: true
        
        - task: PowerShell@2
          inputs:
            targetType: 'inline'
            script: |
              sudo npm i -g cordova
              ionic build                          
              cd $(Build.SourcesDirectory) 
              ionic cordova build ios --prod --release --buildConfig=build.json
              cd platforms/ios/
              xcodebuild clean archive -workspace APP.xcworkspace -scheme APP -archivePath build/APP.xcarchive
              xcodebuild -exportArchive -archivePath build/APP.xcarchive -exportPath build/export -exportOptionsPlist $(Build.SourcesDirectory)/exportOptions.plist
          displayName: "starting iOS build"  
          
- task: CopyFiles@2
          inputs:
          ## SourceFolder: '$(Build.SourcesDirectory)'
            contents: '**/*.ipa'
            TargetFolder: '$(build.artifactStagingDirectory)'
            overWrite: true

- task: PublishBuildArtifacts@1
          inputs:
            pathtoPublish: '$(build.artifactStagingDirectory)' 
            ArtifactName: 'drop'
            publishLocation: 'Container'

错误日志 2021 年 2 月 22 日:

export PRODUCT_TYPE=com.apple.product-type.application
2021-02-22T07:00:45.1045780Z     builtin-validationUtility /Users/runner/work/1/s/platforms/ios/build/emulator/APP.app
2021-02-22T07:00:45.1046100Z 
2021-02-22T07:00:45.1192290Z ** BUILD SUCCEEDED **
2021-02-22T07:00:45.1193110Z 
2021-02-22T07:00:46.0475340Z Command line invocation:
2021-02-22T07:00:46.0480470Z     /Applications/Xcode_12.3.app/Contents/Developer/usr/bin/xcodebuild clean archive -workspace APP.xcworkspace -scheme APP -archivePath build/APP.xcarchive
2021-02-22T07:00:46.0481320Z 
2021-02-22T07:00:46.0482090Z User defaults from command line:
2021-02-22T07:00:46.0482950Z     IDEArchivePathOverride = /Users/runner/work/1/s/platforms/ios/build/APP.xcarchive
2021-02-22T07:00:46.0483570Z 
2021-02-22T07:00:46.9814740Z note: Using new build system
2021-02-22T07:00:46.9815300Z note: Building targets in parallel
2021-02-22T07:00:47.0653590Z 
2021-02-22T07:00:47.0656080Z ** CLEAN SUCCEEDED **
2021-02-22T07:00:47.0656650Z 
2021-02-22T07:00:47.0780320Z note: Using new build system
2021-02-22T07:00:47.0781010Z note: Building targets in parallel
2021-02-22T07:00:47.0794200Z note: Planning build
2021-02-22T07:00:48.9307720Z note: Constructing build description
2021-02-22T07:00:49.1276620Z error: "APP" requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor. (in target 'APP' from project 'APP')
2021-02-22T07:00:49.1290480Z 
2021-02-22T07:00:49.1293730Z ** ARCHIVE FAILED **
2021-02-22T07:00:49.1316830Z 
2021-02-22T07:00:49.9439170Z error: archive not found at path '/Users/runner/work/1/s/platforms/ios/build/APP.xcarchive'
2021-02-22T07:00:49.9439810Z ** EXPORT FAILED **
2021-02-22T07:00:49.9439970Z 
2021-02-22T07:00:50.0313310Z ##[debug]$LASTEXITCODE: 65
2021-02-22T07:00:50.0521660Z ##[debug]Exit code 1 received from tool '/usr/local/bin/pwsh'
2021-02-22T07:00:50.0528430Z ##[debug]STDIO streams have closed for tool '/usr/local/bin/pwsh'
2021-02-22T07:00:50.0543440Z ##[debug]task result: Failed
2021-02-22T07:00:50.0576690Z ##[error]PowerShell exited with code '1'.
2021-02-22T07:00:50.0589460Z ##[debug]Processed: ##vso[task.issue type=error;]PowerShell exited with code '1'.
2021-02-22T07:00:50.0591720Z ##[debug]Processed: ##vso[task.complete result=Failed;]PowerShell exited with code '1'.
2021-02-22T07:00:50.0594820Z ##[section]Finishing: starting iOS build

Xcode 任务 2021 年 2 月 23 日

- task: Xcode@5
          displayName: 'Xcode archive'
          inputs:
            actions: archive
            xcWorkspacePath: '$(Build.SourcesDirectory)/platforms/ios/APP.xcworkspace'
            archivePath: 'APP.xcarchive'
            scheme: APP
            packageApp: true
            destinationTypeOption: devices
            exportOptions: plist
            exportOptionsPlist: '$(Build.SourcesDirectory)/exportOptions.plist'    
            exportPath: '$(agent.buildDirectory)/platforms/ios/output/iphoneos/Release'
            signingOption: manual
            signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
            provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

收到的错误是:


2021-02-23T05:26:30.8370720Z ##[error]Error: The Xcode workspace was specified, but it does not exist or is not a directory: /Users/runner/work/1/s/platforms/ios/APP.xcworkspace

使用Ionic构建时,使用--buildConfig标志来使用构建配置。
您可以为每个构建类型( debugrelease )配置每个平台。
您可以指定用于ios的供应配置文件,或用于android的密钥库。

由于您的问题涉及ios ,因此我不会显示android配置。


在项目的根目录下创建一个build.json文件,内容如下:

{
  "ios": {
    "release": {
      "provisioningProfile": "Your provisioning profile filename without .mobileprovision",
      "codeSignIdentity": "Your code sign identity name",
      "developmentTeam": "Your development team ID",
      "packageType": "app-store",
      "buildFlag": [
        "-UseModernBuildSystem=0",
        "-destination generic/platform=iOS",
        "-sdk iphoneos"
      ]
    },
    "debug": {
      ...
    }
  }
}

配置文件应该位于项目的根目录下,紧挨着 build.json。
buildFlags是可选的。

我没有尝试使用provisioningProfile的路径,也不包括.mobileprovision扩展名,但它可能也可以。


然后使用以下命令构建:

ionic cordova build ios --prod --release --buildConfig=build.json

如果不使用--release标志,它将默认为--debug

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM