使用两步验证的 Fastlane Boarding

har*_*all 4 heroku ios testflight fastlane

我遵循了登机 github 页面上的“入门”指南,但在我的 heroku 页面上不断收到此错误 We're sorry, but something went wrong.

登机页面确实说双因素身份验证有效并转到这里:https : //github.com/fastlane/fastlane/blob/master/spaceship/README.md#2-step-verification但我不确定如何将该cookie添加到我的heroku站点。

提前致谢。

Mar*_*din 6

Fastlane 现在(从2.160.0版本开始)支持Apple 的 App Store Connect API。这避免了 2FA 会话黑客的所有问题。仍然有一些 fastlane 操作没有得到完全支持,但大多数都得到了支持。

https://docs.fastlane.tools/app-store-connect-api/解释了如何在 fastlane 中开始使用 API 密钥。

总之,您需要执行以下操作(这些示例直接来自该文档):

  1. 创建 App Store Connect API 密钥
  2. 从同一页面,下载新的密钥 .p8 私钥文件并将其保存在安全的地方(警告:您只能下载一次)。记下 Key ID 和 Issuer ID,因为您很快就会再次需要它们。
  3. 要么使用该app_store_connect_api_key操作在您的Fastfile:
lane :release do
  api_key = app_store_connect_api_key(
    key_id: "D383SF739",
    issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
    key_filepath: "./AuthKey_D383SF739.p8",
    duration: 1200, # optional
    in_house: false, # optional but may be required if using match/sigh
  )

  pilot(api_key: api_key)
end
Run Code Online (Sandbox Code Playgroud)

或者,将详细信息写入 JSON 文件:

{
  "key_id": "D383SF739",
  "issuer_id": "6053b7fe-68a8-4acb-89be-165aa6465141",
  "key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHknlhdlYdLu\n-----END PRIVATE KEY-----",
  "duration": 1200, # optional
  "in_house": false, # optional but may be required if using match/sigh
}
Run Code Online (Sandbox Code Playgroud)

并在您的 JSON 文件中引用Fastfile

lane :release do
  pilot( api_key_path: "fastlane/D383SF739.json" )
end
Run Code Online (Sandbox Code Playgroud)

或者通过命令行:

$ fastlane pilot distribute --api_key_path fastlane/D383SF739.json
Run Code Online (Sandbox Code Playgroud)


Jij*_*ohn 0

请遵循https://docs.fastlane.tools/best-practices/continuous-integration/#application-specific-passwords

如果您想从 CI 机器将构建上传到 App Store Connect(操作 upload_to_app_store 和交付)或 TestFlight(操作 upload_to_testflight、pilot 或 testflight),则需要生成应用程序特定密码:

注意:如果您的操作用途除了上传二进制文件之外还执行其他任何操作,例如更新任何元数据(例如设置发行说明或分发给测试人员等),则应用程序特定的密码将不起作用。

这就是我最近启用 2FA 时使用 Fastlane 设置 2FA 的方法。

  • export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=<您的应用程序密码>
  • 在我的车道中使用了upload_to_testflight,无需任何其他设置。Fastlane 将使用上述变量进行身份验证。

与 Apple API 交互的所有其他操作不接受应用程序特定的密码。

这是您需要在 Fastlane 中存储并使用 cookie 的地方。我必须通过 CI/CD 设置来更新变更日志。

  1. 解锁钥匙串以存储我的用户密码

    安全解锁钥匙串 -p $SYSTEM_PASSWORD

  2. 生成重定向到文件 (token.txt) 的 cookie。

    捆绑执行 fastlane spaceauth -u ci-user@company.com >& token.txt

  3. 将身份验证令牌提取到文件“session”

    awk -F"'" '$0=$2' token.txt > 会话

  4. 在运行 Fastlane 通道之前设置 FASTLANE_SESSION 变量,它会从上面创建的“会话”文件中读取值。

    导出 FASTLANE_SESSION='$(<会话)'

  5. 照常运行 Fastlane 试飞通道。

在上面,我使用了两种方法,如果您只是将包上传到 Testflight,则只需设置 FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 变量。