You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:43:19