GitHub Actions执行carthage bootstrap报API rate limit exceeded错误如何解决
错误原因
该报错是Carthage拉取依赖预编译二进制时调用GitHub API触发了限流:GitHub Actions公共运行器默认发起匿名API请求,限流阈值极低,极易触发上限。
解决方案
可根据你的实际需求选择以下任意一种方案:
- 方案1:传入GitHub身份凭证提升限流阈值
Carthage支持自动读取GITHUB_ACCESS_TOKEN环境变量作为身份凭证发起API请求,认证后的API限流阈值远高于匿名请求。操作步骤如下:- 直接使用GitHub Actions默认生成的
GITHUB_TOKEN即可,无需手动创建个人访问令牌 - 修改你的CI工作流配置,在执行Carthage命令的步骤中注入环境变量,示例配置如下:
- name: 拉取Carthage依赖 env: GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: carthage bootstrap --platform iOS --use-xcframeworks - 直接使用GitHub Actions默认生成的
- 方案2:强制本地编译所有依赖
给Carthage命令添加--no-use-binaries参数,跳过预编译二进制拉取步骤,直接在CI环境本地编译所有依赖,完全避开GitHub API调用:
该方案的缺点是CI运行时长会有所增加。carthage bootstrap --platform iOS --use-xcframeworks --no-use-binaries - 方案3:将依赖编译产物提交到代码仓库
本地执行Carthage命令完成依赖编译后,将Carthage目录直接提交到代码仓库,CI工作流中跳过carthage bootstrap步骤,直接使用仓库内的预编译产物。该方案CI运行速度最快、稳定性最高,缺点是会增加代码仓库的体积。
内容的提问来源于stack exchange,提问作者wristbands
相关产品推荐
相关产品推荐

