Azure DevOps CI/CD流水线中Fastlane上传iOS构建至TestFlight失败
Azure Pipeline中Fastlane Pilot上传TestFlight认证失败问题
错误提示
正在查找fastlane/fastlane相关的GitHub问题...
[!] 请求无法完成,原因:认证凭据缺失或无效。请提供配置正确且已签名的Bearer令牌,并确保其未过期。API Key JSON已创建于:/Users/runner/work/_temp/appstoreconnect_api_key.json
所用YAML脚本
- task: Bash@3 displayName: Create API Key JSON File for Fastlane inputs: targetType: 'inline' script: | # Define variables API_KEY_PATH=$(Agent.TempDirectory)/AuthKey.p8 API_KEY_JSON_PATH=$(Agent.TempDirectory)/appstoreconnect_api_key.json PRIVATE_KEY=$(awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' $API_KEY_PATH) # Convert the AuthKey.p8 into JSON format required by Fastlane echo '{ "key_id": "'"${APP_STORE_CONNECT_API_KEY_ID}"'", "issuer_id": "'"${APP_STORE_CONNECT_API_ISSUR_ID}"'", "key": "'"${PRIVATE_KEY}"'" }' > $API_KEY_JSON_PATH # Output the path to the generated JSON file for Fastlane echo "Contents of the API Key JSON:" cat $API_KEY_JSON_PATH # Upload the build to TestFlight using Fastlane - task: Bash@3 displayName: Upload to TestFlight using Fastlane inputs: targetType: 'inline' script: | # Set environment variables API_KEY_JSON_PATH=$(Agent.TempDirectory)/appstoreconnect_api_key.json # Upload to TestFlight using Fastlane fastlane pilot upload \ --api_key_path $API_KEY_JSON_PATH \ --app_identifier "XXXXXXXXXXXXXXX" \ --team_id $(TEAM_ID) \ --ipa $(build.artifactstagingdirectory)/build/*.ipa echo "API Key JSON created at: $API_KEY_JSON_PATH"
已确认信息
APP_STORE_CONNECT_API_KEY_ID、AuthKey.p8文件内容均正确- 已在Azure门户配置对应环境变量
- Fastlane版本:2.226
解决步骤
1. 修正环境变量拼写错误
脚本中issuer_id对应的变量名是${APP_STORE_CONNECT_API_ISSUR_ID},存在拼写错误——正确拼写应为ISSUER,即变量名需改为${APP_STORE_CONNECT_API_ISSUER_ID}。拼写错误会导致生成的JSON文件中issuer_id值无效,直接触发认证失败。
2. 确保私钥格式正确
原脚本处理私钥的方式可能导致换行符或转义字符异常,建议替换私钥提取逻辑:
PRIVATE_KEY=$(cat $API_KEY_PATH | sed 's/\\/\\\\/g; s/"/\\"/g')
该命令能更可靠地处理私钥中的特殊字符,保证生成的JSON格式符合Fastlane要求。
3. 验证JSON文件可用性
在Fastlane任务中添加文件内容检查,确认文件路径正确且内容无误:
echo "Verifying API Key JSON:" cat $API_KEY_JSON_PATH
若文件不存在或内容异常,需排查Azure Pipeline临时目录的文件共享逻辑。
4. 确认API密钥权限
检查App Store Connect中创建的API密钥权限,需至少拥有Developer或App Manager权限,权限不足也会导致认证失败。
内容的提问来源于stack exchange,提问作者Apavaiya
相关产品推荐
相关产品推荐

