如何解决azure DevOps 中应用商店的 CI-CD 过程中的 2 因素身份验证
我正在尝试将应用发布到应用商店,但由于现在 Apple 帐户必须使用 2FA,因此我在将应用上传到应用商店时遇到了问题。
我尝试按照 this link 使用 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
但没有成功。
我还在服务连接中添加了应用专用密码。
在其中添加特定于应用程序的密码并收到以下错误后:
另外,据说您可以在环境变量中使用 FASTLANE_PASSWORD
传递密码,但我不知道如何传递它。
我经历了
提供的答案Two-factor Authentication With Fastlane 但它对我的 Azure DevOps 没有帮助。还有其他方法可以让它工作吗?
解决方法
把三个变量都设置为环境变量怎么样?
FASTLANE_PASSWORD
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
FASTLANE_SESSION
另外请注意,与普通管道变量不同,秘密管道变量在管道运行期间不会自动映射为代理上的环境变量。您需要将秘密变量显式映射为环境变量。有关详细信息,请参阅“Set secret variables”。
[更新]
FASTLANE_PASSWORD
应该是您的 iCloud 帐户(或 App Store Connect 帐户)的密码。但是通常在 CI/CD 管道中不需要。
您可以尝试以下命令行:
fastlane spaceauth -u <your-email-address>
此命令行可以提前为您的 Apple ID 生成登录会话。然后您需要将生成的值存储在代理机器上的 FASTLANE_SESSION
环境变量中。
要查看更多详细信息,您可以查看“Storing a manually verified session using spaceauth
”。
解决方案很少,但您可以使用管道变量。
名称:key_id
值:<You will find this in AppStoreConnect>
名称:issuer_id
值:<You will find this in AppStoreConnect>
名称:key
值:<Open the .p8 Certificate in editor and add '\n' for every newline>
当您下载 API 密钥时,您将获得一个 .p8 证书(例如 AuthKey_426ZIF325NY.p8
),但很可能您无法将此文件保存为管道变量,但可以将其保存为字符串。
打开终端并转到您的 Download Folder
,然后使用一些文本编辑器(首选)打开您的文件,例如 vim AuthKey_426ZIF325NY.p8
或 nano AuthKey_426ZIF325NY.p8
,但您可以使用您熟悉的任何编辑器(例如VS代码)。
您需要将此密钥保存为字符串,但您不能只复制内容,因为有些 \n
符号您看不到,并且您不会通过正常的复制/粘贴来复制它们。所以你需要手动添加它们并删除线刹车:
之前:
-----BEGIN PRIVATE KEY-----
GTAGTAgEAMBMGByqGSM49AgEGTTqGSM49AwEHBHkwdwIBAQQg6YnlZ7oLdukc99KL
TZBVNjYeCpNQtZh3uY2SZw6jh+igCgYIKoZIzj0DAQehRANCAAQ2dMU6ss1I3760
OLjYhPBLn5f1T9ZXVbI4kFcKARM/JfPOKh7rK95LHoEOGdpBQHEaAmZo0x2pnF1+
AhD4UTiE
-----END PRIVATE KEY-----
之后:
"-----BEGIN PRIVATE KEY-----\nGTAGTAgEAMBMGByqGSM49AgEGTTqGSM49AwEHBHkwdwIBAQQg6YnlZ7oLdukc99KL\nTZBVNjYeCpNQtZh3uY2SZw6jh+igCgYIKoZIzj0DAQehRANCAAQ2dMU6ss1I3760\nOLjYhPBLn5f1T9ZXVbI4kFcKARM/JfPOKh7rK95LHoEOGdpBQHEaAmZo0x2pnF1+\n
AhD4UTiE\n-----END PRIVATE KEY-----"
现在将此“After”参数(但使用您的证书)保存为名称为 key
的管道变量。
您上传作业(上传到 TestFlight)需要访问此证书和其他两个变量。
如果你愿意,你可以在这里发布你的 fastlane 上传通道,我会给你写附加部分。
,很可能 FASTLANE_SESSION
不再有效,因此您需要创建一个新的:https://docs.fastlane.tools/best-practices/continuous-integration/
推荐的方式是使用 App Store Connect API,这样你就不需要 2FA 也不需要重新创建 fastlane 会话: https://docs.fastlane.tools/app-store-connect-api/
您需要设置一次 key_id
、issuer_id
和 key
(密钥可以存储为字符串)并且永远不需要更改。
帐户持有人必须授予您访问 App Store Connect API 的权限。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。