【问题标题】:2 Factor Authentication in CI-CD process for app store in azure DevOps2 天蓝色 DevOps 应用商店 CI-CD 流程中的因素身份验证
【发布时间】:2021-06-10 06:19:26
【问题描述】:

我正在尝试将应用发布到应用商店,但由于 Apple 帐户现在必须执行 2FA,因此我在将应用上传到商店时遇到了问题。

我尝试按照this link 使用FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 但没有成功。

我还在服务连接中添加了应用专用密码。

在其中添加应用专用密码后,出现以下错误: 另外,据说您可以在环境变量中使用FASTLANE_PASSWORD 传递密码,但我不知道如何传递它。

我浏览了由

提供的答案

Two-factor Authentication With Fastlane 但它对 Azure DevOps 没有帮助。有没有其他方法可以让它工作?

【问题讨论】:

  • 您能展示一下您使用 azure dev ops 尝试过的内容吗?
  • @Paulw11 我更新了这个问题...你能帮忙吗?
  • 您是否尝试过从密码字段中删除该值?您只需要一个应用专用密码。
  • 你的意思是在服务连接中我应该删除密码并只保留应用程序专用密码...对吗?
  • 是的。没错

标签: ios azure-devops continuous-integration fastlane two-factor-authentication


【解决方案1】:

当您下载 API 密钥时,您将获得一个 .p8 证书(例如 AuthKey_426ZIF325NY.p8),但很可能您无法将此文件保存为管道变量,但您可以将其保存为字符串。

打开终端并转到您的Download Folder,然后使用一些文本编辑器(首选)打开您的文件,例如vim AuthKey_426ZIF325NY.p8nano AuthKey_426ZIF325NY.p8,但您可以使用任何您熟悉的编辑器(例如VS Code)。

你会得到这样的东西:

您需要将此密钥保存为字符串,但不能只复制内容,因为有些\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 上传通道,我会给你写附加部分。

【讨论】:

    【解决方案2】:

    解决方案很少,但例如可以使用管道变量。

    姓名: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>

    【讨论】:

    • 名称:key 值:<Open the .p8 Certificate in editor and add '\n' for every newline> 对此我很困惑,比如这个.p8 文件需要上传到哪里以及如何访问它,你能解释一下吗?
    【解决方案3】:

    很可能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_idissuer_idkey(密钥可以存储为字符串),无需更改。

    帐户持有人必须允许您访问 App Store Connect API。

    【讨论】:

    • 你能告诉我如何以及在哪里添加 key_id, issuer_idkey 在 azure DevOps 中?
    【解决方案4】:

    把这三个变量都设置成环境变量怎么样?

    • 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”。

    【讨论】:

    • 我在哪里可以获得 FASTLANE_PASSWORD`?是我需要使用的应用商店密码吗?
    • 嗨@RageshPikalmunde,我已经用更多信息更新了我的答案。请检查一下。
    • 感谢您的回答...我创建了 FASTLANE_SESSION 并且它现在可以正常工作,尽管我怀疑所有 3 个都需要在环境变量中设置,只是 FASTLANE_SESSION 应该可以工作。我会检查并通知您。
    • 嗨@RageshPikalmunde,不客气。有任何更新,请随时告诉我们。
    • 嗨@RageshPikalmunde,进展如何? FASTLANE_SESSION 适合你吗?
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 2019-07-10
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多