我正在尝试使用 Azure 管道进行 CI/CD,但无法构建我的应用程序。我在 Xcode 中设置了自动代码签名。我还上传了所有需要的安全文件,包括证书和配置文件。
pool: vmImage: 'macos-13'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'development_cert.p12'
certPwd: $(cert_password)
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'Developer_Profile.mobileprovision'
在执行管道脚本时,我通过命令确保证书和配置文件存在:
security find-identity -p codesigning -v
ls -lGa ~/Library/MobileDevice/Provisioning\ Profiles/
但是构建脚本失败了:
- script: |
set -e
xcodebuild build \
-workspace MyApp.xcworkspace \
-scheme 'MyApp (QA)' \
-configuration 'Release (QA)' \
-destination 'generic/platform=iOS'
displayName: 'Xcode Build'
Error: MyApp.xcodeproj: error: No profiles for 'com.my.app' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.my.app'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. (in target 'MyTarget' from project 'MyApp')
那么,问题是为什么 azure pipeline 无法获取上传的配置文件以及如何解决这个问题?
相同的脚本在我的本地 Mac 上运行正常。
当我传递相同的证书和配置文件作为参数时
CODE_SIGN_STYLE=Manual \
CODE_SIGN_IDENTITY='iPhone Distribution: My App Inc. (XXYYYYZZZZ)' \
PROVISIONING_PROFILE_SPECIFIER="My Developer Profile" \
脚本可以识别配置文件。 (但是由于其他原因失败了)
在
InstallAppleCertificate@2
和 InstallAppleProvisioningProfile@1
任务之后,您可以使用内置 Xcode@5
任务来运行 Xcode 构建步骤。
steps:
- task: InstallAppleCertificate@2
displayName: 'Install Apple certificate'
inputs:
certSecureFile: 'development_cert.p12'
certPwd: '$(cert_password)'
- task: InstallAppleProvisioningProfile@1
displayName: 'Install Apple provisioning profile'
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'Developer_Profile.mobileprovision'
- task: Xcode@5
inputs:
actions: 'build'
configuration: 'Release (QA)'
xcWorkspacePath: 'MyApp.xcworkspace'
scheme: 'MyApp (QA)'
packageApp: false
signingOption: 'manual'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
destinationPlatformOption: 'iOS'
变量
APPLE_CERTIFICATE_SIGNING_IDENTITY
和 APPLE_PROV_PROFILE_UUID
由 InstallAppleCertificate@2
和 InstallAppleProvisioningProfile@1
任务自动设置,以便后续任务可以使用它们安装的证书和配置文件。
有关更多详细信息,请参阅“签署您的 Apple iOS、macOS、tvOS 或 watchOS 应用程序”。