【问题标题】:Automating 2FA using Fastlane/CircleCI使用 Fastlane/CircleCI 自动化 2FA
【发布时间】:2019-04-05 14:44:33
【问题描述】:

设置 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 通道之前运行下面的 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 命令 circleci 因等待 2FA 超时而失败。

Fastlane 网站说没有必要使用 spaceauth,除非正在使用额外的应用商店连接 API,例如上传元数据等。它指出,对于上传到 testflight,只有应用程序特定密码就足够了,尽管这不起作用要么。

有没有人解决过这个问题,可以指教一下吗?

【问题讨论】:

标签: ios circleci fastlane


【解决方案1】:

您可以通过 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]
  )

【讨论】:

    【解决方案2】:

    使用 CI 服务器的 REST API 更新 FASTLANE_SESSION 配置参数的值。在我们的例子中,我们在一个地方定义了它,它被所有需要验证到 Dev Center / App Store Connect 的作业重用。我没有查看细节,但我确信有一种方法可以通过 REST 调用更新作业/项目参数。再说一次,有一个运行 spaceauth 并使用 REST API 设置新值的计划作业。

    【讨论】:

      【解决方案3】:

      那里的文档有误 - 这是我的错。在合并启用此功能的实际代码之前,我更新了文档文章。

      目前最好的方法是创建第二个未启用 2FA 的帐户,或在本地使用 spaceauth,然后将返回的值复制到 CI 提供程序上的 ENV 变量中,尽管它可能只能工作 24 小时.我们目前正在研究如何改进这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 2020-07-17
        • 1970-01-01
        相关资源
        最近更新 更多