设置2FA以便将Beta上传到iTunesConnect / TestFlight的正确方法是什么?
有很多链接和论坛答案,但没有一个能解决问题。
当前,我已将环境变量添加到CircleCI中,包括在AppleID上生成的“应用程序专用密码”。
我在Fastlane中有一个这样的车道
desc "Alpha build"
lane :alpha do
match(type: "adhoc")
gym(export_method: "ad-hoc")
upload_to_testflight(skip_submission: true)
end
我在Alpha通道之前运行以下preauth命令
- run:
name: Spaceship pre-auth for 2FA
command: bundle exec fastlane spaceauth -u [redacted].com
即使密码正确,Fastlane似乎也无法通过身份验证
Please check your credentials and try again.
This could be an issue with App Store Connect,
Please try unsetting the FASTLANE_SESSION environment variable
如果我删除spaceauth命令,由于等待2FA超时,Circleci失败。
Fastlane网站表示,除非正在使用其他应用程序商店连接API(例如,上传元数据等),否则无需使用spaceauth。它指出,对于上传到testflight的应用程序,仅应用程序专用密码应该足够,尽管这样做不起作用要么。
有人解决了这个问题,可以请教吗?
答案 0 :(得分:2)
您可以通过 API 密钥向 Apple 进行身份验证。您可以在此处生成密钥:https://appstoreconnect.apple.com/access/api。
拥有 key.p8 文件后,您可以使用 fastlane 命令进行身份验证:app_store_connect_api_key
如下:
app_store_connect_api_key(
key_id: "ABCDEFG",
issuer_id: "Your_issuer_id",
key_content: File.read("./key.p8").chomp,
duration: 1200,
in_house: false
)
执行该命令后,密钥会话存储在以下环境变量中:APP_STORE_CONNECT_API_KEY
因此您上传到 testflight 应如下所示:
upload_to_testflight(
groups: ["Friends & Family","Mytest-Group"],
ipa: "./build/myapp.ipa",
api_key: Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
)
答案 1 :(得分:0)
那里的文档有误-这是我的错。我在合并启用此功能的实际代码之前更新了docs文章。
您目前最好的方法是创建一个未启用2FA的第二个帐户,或者在本地使用spaceauth
,然后将返回的值复制到CI提供程序上的ENV变量中,尽管它可能只会工作24小时。我们目前正在研究如何改善这一点。
答案 2 :(得分:0)
使用CI服务器的REST API更新FASTLANE_SESSION配置参数的值。在我们的案例中,我们将其定义在一个地方,并且需要身份验证到Dev Center / App Store Connect的所有作业都可以重用它。我没有研究细节,但是我敢肯定有一种方法可以通过REST调用来更新job / project参数。然后,再次执行一个运行任务,该任务运行spaceauth并使用REST API设置新值。