我有一个公共存储库,它是Ansible角色。这个Ansible角色使用GitHub API来获取给定存储库的最新版本。我使用此元数据以便随后为给定项目下载最新版本的二进制文件。
不幸的是,当我在Travis中运行测试,偶尔在本地计算机上运行测试时,我遇到了GitHub的API速率限制。既然这是一个面向公众的项目,那么克服此速率限制有什么选择?
我可以在Ansible中使用某种秘密管理系统,还是可以通过Travis环境变量公开其值,但是是否存在处理此类公共代码场景的标准做法?
答案 0 :(得分:1)
未经身份验证的请求每小时仅可获得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身份验证库应具有用于缓存的选项。