Fastlane Match 无法使用个人访问令牌和用户名连接。

11

我在连接私有仓库以获取证书和配置文件时遇到了一些问题。以下是在Circle-CI作业/工作流程中运行的fastlane lane中的一些代码。我想这应该是可能的,因为这里

username = ENV['USERNAME']
personal_github_access_token = ENV["PERSONAL_GITHUB_ACCESS_TOKEN"]
authorization_token_str = "#{username}:#{personal_github_access_token}"
basic_authorization_token = Base64.encode64(authorization_token_str)

match(
  git_basic_authorization:basic_authorization_token,
  type: "development",
  app_identifier: app_identifiers(),
  readonly: true
)

错误 [12:08:10]: 克隆远程git仓库... [12:08:10]: 如果克隆仓库需要太长时间,您可以在match中使用clone_branch_directly选项。克隆到'/var/folders/1b/gl7yt7ds26vcyr1pkgld6l040000gn/T/d20191030-1122-178s7ae'... 错误:未找到存储库。致命错误:无法从远程存储库读取。 请确保您具有正确的访问权限并且存储库存在。[12:08:10]: 退出状态:128 [12:08:10]: 克隆证书存储库时出错,请确保您对要使用的存储库具有读取访问权限[12:08:10]: 手动运行以下命令以确保您已经得到适当的身份验证:

你解决了吗? - axunic
3个回答

10

在 Github 强制要求我使用 Github 个人访问令牌后,这个方法对我有效。我正在将我的代码推送到 TestFlight 进行 Beta 测试。

git_url("https://github.com/{github_username}/git_repo_name.git")
match(
  git_basic_authorization: Base64.strict_encode64("github_username:github_personal_token"),
  type: "appstore"
)

1
谢谢您提供清晰的答案。似乎每个人都认为每个人都知道如何创建git基本身份验证。 - Xaxxus
是的,我大多数时候也有这种感觉。如果人们在回答问题时多提供一些上下文,那么就能更好地帮助更多的人,并节省其他人的时间。 - Jose

10

如果您正在使用OAuth令牌,请确保您使用的是通过https而不是ssh协议的git。

请检查您的Matchfile,它应该是git_url("https://github.com/<user>/<repo>.git")而不是git_url("git@github.com:<user>/<repo>.git")

如果您需要使用ssh协议,请配置一个ssh密钥。


1
我真的希望他们的文档能够更清晰一些,这可能对某些人很明显,但并非所有人都是如此。谢谢你的回答 :) - Eman

3

1
Base64.strict_encode64 是什么意思?您能详细说明解决错误的步骤吗? - NiFi
很抱歉我不能给你详细的步骤,因为那可能会超出这个帖子的范围。这是由fastlane提供的未记录的函数。如果你想使用Fastlane Match,你必须提供git_basic_authorization令牌。要获取该令牌,你必须提供用户名个人令牌,然后使用Base64.strict_encode64进行编码。请参阅上面的链接以获取更多信息。 - axunic
谢谢你的回答。目前该链接后面没有更多信息。对于未来的读者,您需要的是您的GitHub用户名和密码或个人访问令牌(如果已激活2FA),并获取一个Base64编码值,例如使用javascript btoa('UNAME:PWorPAT')。如果编码值不正确,即match无法验证,则会出现“无法读取用户名”错误,详见https://github.com/fastlane/fastlane/issues/15682#issuecomment-573243571。 - NiFi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接