使用GitHub Actions推送Ruby Gem至RubyGems.org失败求助
解决GitHub Actions发布RubyGem到RubyGems.org失败的问题
问题分析
你遇到的No such API key错误,核心原因是gem push命令里的--key rubygems_api_key是指定本地gem配置文件中已保存的密钥别名,但GitHub Actions的运行环境是全新的,并没有预先配置这个别名对应的密钥。尽管你设置了RUBYGEMS_API_KEY环境变量,但--key参数并不会直接读取该环境变量的值。
解决方案
方案1:直接利用环境变量推送(推荐)
RubyGems默认会读取RUBYGEMS_API_KEY环境变量作为推送密钥,无需额外指定--key参数。修改你的工作流步骤如下:
- name: Publish to RubyGems run: gem push *.gem env: RUBYGEMS_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
方案2:先配置密钥别名再推送
如果一定要使用--key参数,需要先在GitHub Actions环境中把密钥添加到gem配置里,再执行推送:
- name: Configure RubyGems key run: gem config --global rubygems_api_key $RUBYGEMS_API_KEY env: RUBYGEMS_API_KEY: ${{ secrets.GEM_HOST_API_KEY }} - name: Publish to RubyGems run: gem push *.gem --key rubygems_api_key
额外验证步骤
- 确认
*.gem能匹配到正确的gem包文件,可在推送前添加ls -la *.gem步骤检查文件是否存在 - 再次核对GitHub仓库Secret的名称
GEM_HOST_API_KEY和工作流中引用的名称完全一致 - 确保RubyGems的API密钥拥有推送权限(密钥类型需为"Push")
内容的提问来源于stack exchange,提问作者Nazi
相关产品推荐
相关产品推荐

