如何修复 azure devops 构建代理中的“*pod* 不支持配置文件”
How to fix ' *pod* does not support provisioning profiles' in azure devops build agent
我目前在 Azure Devops 中遇到管道问题。自 3 月 27 日以来,我收到错误:
error: Alamofire does not support provisioning profiles. Alamofire does not support provisioning profiles, but provisioning profile prov profile name has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor. (in target 'Alamofire')
我的所有 pods.
都有这个错误
代码:
前一天正确构建了完全相同的分支。
Xcode版本:
我知道代理仍在 Xcode 10.1 上,我还没有将我的项目更新到 10.2,所以应该没问题。
配置文件:
有效。
疑点:Apple在这一天发布了Xcode和Swift的新版本。微软也在这一天更新Agents:github.com/Microsoft/azure-pipelines-tasks/commit/1b019b9f65202d65ac58150bff6514938b53ff78#diff-93b5db3773bba1013dce9d814869dffd
太棒了,有人有想法吗?我的管道有什么问题?
问题是最新版本的 Cocoapods 正在尝试签署框架。
将以下代码添加到您的 podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
对于使用 NativeScript 和 macOS-11 的任何人,我发现您无法卸载 cocoapods 并将其降级到较低版本。所以你需要采用更新 Podfile 的方法。 Podfile 在您 运行 构建至少一次之后才会被配置,因此您需要构建,替换为您自己的,然后再次构建。
Azure 管道
pool:
vmImage: 'macOS-11'
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.16.1'
displayName: 'Install Node.js'
- task: DownloadSecureFile@1
name: releaseJksFile
displayName: 'download android keystore file'
inputs:
secureFile: 'release.jks'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: AppleCertificate.p12
certPwd: $(AppleCertificatePassword)
keychain: 'temp'
deleteCert: true
displayName: Install Apple Certificate
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'AppleReleaseProfile.mobileprovision'
removeProfile: true
displayName: 'Install Apple Provisioning Profile'
# Optional... was running into build issues with latest version
#downgrading cocoapods version
- script: |
$ANDROID_HOME/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
displayName: 'Remove Android 31 SDK'
- script: |
pip install six
npm install -g @angular/cli nativescript
tns clean
npm install
mkdir $(Build.ArtifactStagingDirectory)/android
mkdir $(Build.ArtifactStagingDirectory)/iphoneos
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/iOS/Info.plist
sed -i -e 's/1000000/10$(Build.BuildId)/g' App_Resources/Android/src/main/AndroidManifest.xml
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/Android/src/main/AndroidManifest.xml
tns build android --env.production --release --key-store-path '$(releaseJksFile.secureFilePath)' --key-store-password '$(KeyStorePassword)' --key-store-alias '$(KeyAlias)' --key-store-alias-password '$(KeyPassword)' --bundle
cp -rf "platforms/android/app/build/outputs/apk/release/" "$(Build.ArtifactStagingDirectory)/android"
echo "uninstalling all cocoapods versions"
sudo gem uninstall cocoapods -ax
echo "installing cocoapods version latest"
sudo gem install cocoapods
tns run ios --provision #see what provisioning profile and certificate are installed... helpful for debugging
tns build ios #creates podfile we are going to replace
cp -rf Podfile platforms/ios/Podfile
rm platforms/ios/Podfile.lock
cd platforms/ios
pod install
cd ../../
tns build ios --env.production --release --bundle #creates xcworkspace
displayName: 'Setup/Build'
- task: Xcode@5
inputs:
actions: 'build'
scheme: 's'
sdk: 'iphoneos'
configuration: 'Release'
exportPath: '$(Build.ArtifactStagingDirectory)/iphoneos/'
packageApp: true
xcWorkspacePath: 'platforms/ios/s.xcworkspace'
xcodeVersion: 'default' # Options: 8, 9, 10, default, specifyPath
signingOption: 'manual'
signingIdentity: '$(AppleCertificateSigningIdentity)'
provisioningProfileUuid: '$(AppleProvisioningProfileUuid)'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
Podfile(放在项目目录的根目录下)
use_frameworks!
target "s" do
# Begin Podfile - /Users/runner/work/1/s/node_modules/@nativescript/secure-storage/platforms/ios/Podfile
pod 'SAMKeychain', '~> 1.5.3'
# End Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
post_installNativeScript_CLI_Architecture_Exclusions_0 installer
end
# Begin Podfile - /Users/runner/work/1/s/platforms/ios/Podfile-exclusions
def post_installNativeScript_CLI_Architecture_Exclusions_0 (installer)
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete "VALID_ARCHS"
config.build_settings["EXCLUDED_ARCHS_x86_64"] = "arm64 arm64e"
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "i386 armv6 armv7 armv7s armv8 $(EXCLUDED_ARCHS_$(NATIVE_ARCH_64_BIT))"
config.build_settings["EXCLUDED_ARCHS[sdk=iphoneos*]"] = "i386 armv6 armv7 armv7s armv8 x86_64"
end
end
# End Podfile
end
我目前在 Azure Devops 中遇到管道问题。自 3 月 27 日以来,我收到错误:
error: Alamofire does not support provisioning profiles. Alamofire does not support provisioning profiles, but provisioning profile prov profile name has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor. (in target 'Alamofire')
我的所有 pods.
都有这个错误代码: 前一天正确构建了完全相同的分支。
Xcode版本: 我知道代理仍在 Xcode 10.1 上,我还没有将我的项目更新到 10.2,所以应该没问题。
配置文件: 有效。
疑点:Apple在这一天发布了Xcode和Swift的新版本。微软也在这一天更新Agents:github.com/Microsoft/azure-pipelines-tasks/commit/1b019b9f65202d65ac58150bff6514938b53ff78#diff-93b5db3773bba1013dce9d814869dffd
太棒了,有人有想法吗?我的管道有什么问题?
问题是最新版本的 Cocoapods 正在尝试签署框架。
将以下代码添加到您的 podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
对于使用 NativeScript 和 macOS-11 的任何人,我发现您无法卸载 cocoapods 并将其降级到较低版本。所以你需要采用更新 Podfile 的方法。 Podfile 在您 运行 构建至少一次之后才会被配置,因此您需要构建,替换为您自己的,然后再次构建。
Azure 管道
pool:
vmImage: 'macOS-11'
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.16.1'
displayName: 'Install Node.js'
- task: DownloadSecureFile@1
name: releaseJksFile
displayName: 'download android keystore file'
inputs:
secureFile: 'release.jks'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: AppleCertificate.p12
certPwd: $(AppleCertificatePassword)
keychain: 'temp'
deleteCert: true
displayName: Install Apple Certificate
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'AppleReleaseProfile.mobileprovision'
removeProfile: true
displayName: 'Install Apple Provisioning Profile'
# Optional... was running into build issues with latest version
#downgrading cocoapods version
- script: |
$ANDROID_HOME/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
displayName: 'Remove Android 31 SDK'
- script: |
pip install six
npm install -g @angular/cli nativescript
tns clean
npm install
mkdir $(Build.ArtifactStagingDirectory)/android
mkdir $(Build.ArtifactStagingDirectory)/iphoneos
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/iOS/Info.plist
sed -i -e 's/1000000/10$(Build.BuildId)/g' App_Resources/Android/src/main/AndroidManifest.xml
sed -i -e 's/1.00000000.00/1.$(Build.BuildNumber)/g' App_Resources/Android/src/main/AndroidManifest.xml
tns build android --env.production --release --key-store-path '$(releaseJksFile.secureFilePath)' --key-store-password '$(KeyStorePassword)' --key-store-alias '$(KeyAlias)' --key-store-alias-password '$(KeyPassword)' --bundle
cp -rf "platforms/android/app/build/outputs/apk/release/" "$(Build.ArtifactStagingDirectory)/android"
echo "uninstalling all cocoapods versions"
sudo gem uninstall cocoapods -ax
echo "installing cocoapods version latest"
sudo gem install cocoapods
tns run ios --provision #see what provisioning profile and certificate are installed... helpful for debugging
tns build ios #creates podfile we are going to replace
cp -rf Podfile platforms/ios/Podfile
rm platforms/ios/Podfile.lock
cd platforms/ios
pod install
cd ../../
tns build ios --env.production --release --bundle #creates xcworkspace
displayName: 'Setup/Build'
- task: Xcode@5
inputs:
actions: 'build'
scheme: 's'
sdk: 'iphoneos'
configuration: 'Release'
exportPath: '$(Build.ArtifactStagingDirectory)/iphoneos/'
packageApp: true
xcWorkspacePath: 'platforms/ios/s.xcworkspace'
xcodeVersion: 'default' # Options: 8, 9, 10, default, specifyPath
signingOption: 'manual'
signingIdentity: '$(AppleCertificateSigningIdentity)'
provisioningProfileUuid: '$(AppleProvisioningProfileUuid)'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
Podfile(放在项目目录的根目录下)
use_frameworks!
target "s" do
# Begin Podfile - /Users/runner/work/1/s/node_modules/@nativescript/secure-storage/platforms/ios/Podfile
pod 'SAMKeychain', '~> 1.5.3'
# End Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
post_installNativeScript_CLI_Architecture_Exclusions_0 installer
end
# Begin Podfile - /Users/runner/work/1/s/platforms/ios/Podfile-exclusions
def post_installNativeScript_CLI_Architecture_Exclusions_0 (installer)
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete "VALID_ARCHS"
config.build_settings["EXCLUDED_ARCHS_x86_64"] = "arm64 arm64e"
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "i386 armv6 armv7 armv7s armv8 $(EXCLUDED_ARCHS_$(NATIVE_ARCH_64_BIT))"
config.build_settings["EXCLUDED_ARCHS[sdk=iphoneos*]"] = "i386 armv6 armv7 armv7s armv8 x86_64"
end
end
# End Podfile
end