使用Azure DevOps Pipeline部署iOS应用至App Store Connect后仍需6位验证码
我正在用Azure DevOps Pipeline实现iOS应用到Apple App Store的自动化部署,已经成功把IPA上传到App Store Connect了,但流程还是会弹出要求输入6位验证码的提示。
我的Pipeline任务代码如下:
- task: AppStoreRelease@1 inputs: serviceEndpoint: 'Apps Store Connection' releaseTrack: 'TestFlight' appIdentifier: 'com.company.myapp' appType: 'iOS' ipaPath: 'output/package/some.ipa' appSpecificId: '1234567'
对应的Service Connection已经配置了App专用密码和Fastlane Session,采用Basic Authentication认证方式。
检查App专用密码的权限和有效性
你在Apple ID安全设置里生成的App专用密码,必须是针对「App Store Connect」服务创建的,且该Apple ID拥有对应应用的TestFlight管理权限。别用针对iCloud等其他服务生成的专用密码,这类密码不适用。重新生成Fastlane Session
Fastlane Session大概率已过期,在本地终端执行以下命令生成新的session:fastlane spaceauth -u 你的Apple ID邮箱跟着提示完成两步验证后,把新生成的session字符串替换到Azure DevOps的Service Connection中。
核对Service Connection的配置
使用Basic Authentication时,用户名填你的Apple ID邮箱,密码字段要填入App专用密码(不是Apple ID的登录密码)。同时确认Fastlane Session字段填的是刚生成的有效session,不要混淆两者的配置。添加跳过构建等待的参数
在AppStoreRelease@1任务里添加skipWaitingForBuildProcessing: true参数,避免因等待Apple端处理构建而触发验证码请求:- task: AppStoreRelease@1 inputs: serviceEndpoint: 'Apps Store Connection' releaseTrack: 'TestFlight' appIdentifier: 'com.company.myapp' appType: 'iOS' ipaPath: 'output/package/some.ipa' appSpecificId: '1234567' skipWaitingForBuildProcessing: true将代理设备设为信任设备
如果使用的是Azure DevOps自托管代理,试着在代理机器上手动登录一次App Store Connect,完成两步验证后将该设备标记为信任,后续自动化流程大概率不会再触发验证码请求。
内容的提问来源于stack exchange,提问作者MensinBM

