我有一个公共存储库,它是一个Ansible角色。此Ansible角色使用GitHub API以获取给定存储库的最新版本。我使用此元数据,然后随后下载给定项目的最新版本二进制文件。
不幸的是,我在Travis中运行我的测试时遇到GitHub的API速率限制,偶尔在我的本地机器上。由于这是一个面向公众的项目,我有哪些选择来克服这个速度限制?
我可以在Ansible中使用某种秘密管理系统或通过Travis环境变量公开价值,但有没有一种标准的做法来处理公共代码的这些场景?
未经身份验证的请求只能获得60 /小时。经过身份验证的请求获得5000 /小时。
要进行身份验证,generate a personal API access token供项目使用。把它放在encrypted Travis environment variable或其他方式存储加密的秘密(例如,Rails内置encrypted credentials。使用该令牌访问API。
为项目创建一个单独的Github帐户,并使用API令牌。这避免了与其他任何人分享其速率限制。
尽可能在本地克隆上使用Git命令。例如,如果要查找提交而不是doing it via the API,请克隆存储库并使用常规Git命令。定期缓存克隆和git fetch
以使它们保持最新。
最后,使用conditional requests。它们使用HTTP标头,因此您可以安全地使用缓存查询。这些不计入您的费率限制。一个好的Github身份验证库应该有一个缓存选项。