为快速通道安全存储 App Store Connect API 密钥?

NRi*_*itH 3 ios fastlane app-store-connect

我有一个 GitHub 操作,用于fastlane在 CI 管道中构建版本并将其部署到 TestFlight。我使用 App Store Connect API 密钥进行非交互式身份验证。

苹果的文档明确指出:

重要的

确保您的 API 密钥安全且私密。您永远不应该共享密钥、将密钥存储在代码存储库中或在客户端代码中包含密钥。

但我看到的每个示例都只是将文件作为纯文本文件签入源代码管理(通过参数)传递.p8给命令:app_store_connect_api_key()key_filepath

lane :release do
  app_store_connect_api_key(
    key_id: "D383SF739",
    issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
    key_filepath: "./AuthKey_D383SF739.p8"
  )

  pilot
end
Run Code Online (Sandbox Code Playgroud)

或作为明文密钥本身(通过key参数):

lane :release do
  app_store_connect_api_key(
    key_id: "D383SF739",
    issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
    "key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHknlhdlYdLu\n-----END PRIVATE KEY-----"
  )

  pilot
end
Run Code Online (Sandbox Code Playgroud)

有没有更安全的方法来存储它并仍然在 CI 管道中使用它?

rid*_*tun 5

您可以将想要保持私有的值存储为环境变量。据我所知,所有 CI/CD 服务都允许设置环境变量。您可以使用它ENV['XYZ']来访问 Fastfile 中的任何环境变量。

查看更多信息:https://docs.fastlane.tools/best-practices/continuous-integration/github/