ios - 使用 FaSTLane/CircleCI 自动化 2FA

标签 ios circleci fastlane

设置 2FA 以将测试版上传到 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 channel 之前运行下面的预验证命令

- 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 命令,circleci 将因等待 2FA 超时而失败。

FaSTLane 网站表示,除非使用其他应用程序商店连接 API(例如上传元数据等),否则无需使用 spaceauth。它指出,对于上传到 testflight,仅应用程序特定密码就足够了,尽管这不起作用要么。

有谁解决了这个问题可以提供建议吗?

最佳答案

您可以通过 API key 向 Apple 进行身份验证。您可以在此处生成 key :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
)

执行命令后, key session 存储在以下环境变量中: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]
  )

关于ios - 使用 FaSTLane/CircleCI 自动化 2FA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537956/

相关文章:

ios - 第一次点击后停止创建标签

testing - Meteor.js CircleCI 集成在 linting 上失败

ios - 将 FaSTLane 与 CircleCI 集成 : Cocoapods framework not found

ios - 如何实现 native 代码以自动填充 iOS 中的 OTP 文本字段?

objective-c - NSMutableURLRequest:使用setHTTPBodyStream而不是setHTTPBody上传文件

docker - 仅在测试成功后,如何使Circle CI上传并在AWS ECS上部署镜像?

android - 更改 Android React-Native 应用程序的上传 key

ios - Xcode UI Test 的屏幕截图文件在哪里?

android - VS Appcenter 是否仍然需要 faSTLane?

ios - 如何从 presentView Controller 返回到 RootViewController?