我有一个公共存储库,它是 Ansible 角色。此 Ansible 角色使用 GitHub API 来获取给定存储库的最新版本。我使用此元数据以便随后下载给定项目的最新版本二进制文件。
不幸的是,当我在 Travis 中运行测试并偶尔在本地计算机上运行测试时,我遇到了 GitHub 的 API 速率限制。由于这是一个面向公众的项目,我有什么选择来克服这个速率限制?
I could在 Ansible 中使用某种秘密管理系统或通过 Travis 环境变量公开值,但是公共代码是否有处理此类场景的标准实践?
未经身份验证的请求每小时只能获得 60 个。经过身份验证的请求每小时可达 5000 个。
要进行身份验证,生成个人 API 访问令牌 https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line供项目使用。将其放入加密的 Travis 环境变量 https://docs.travis-ci.com/user/environment-variables/#defining-encrypted-variables-in-travisyml或其他一些存储加密秘密的方式(例如,Rails 内置了加密凭证 https://www.engineyard.com/blog/rails-encrypted-credentials-on-rails-5.2。使用该令牌访问 API。
为该项目创建一个单独的 Github 帐户,并为此使用 API 令牌。这可以避免与其他人共享其速率限制。
尽可能在本地克隆上使用 Git 命令。例如,如果您想查找提交而不是通过API来做 https://developer.github.com/v3/git/commits/,克隆存储库并使用普通的 Git 命令。缓存克隆并git fetch
定期使它们保持最新状态。
最后,利用有条件的请求 https://docs.github.com/en/rest/overview/resources-in-the-rest-api#conditional-requests。它们使用 HTTP 标头,因此您可以安全地使用缓存的查询。这些不计入您的速率限制。一个好的 Github 身份验证库应该有一个缓存选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)