我在尝试使用 GitHub Actions 将 Ruby gem 发布到 RubyGems.org 时遇到问题。尽管工作流程似乎执行没有错误,但在将 gem 推送到 RubyGems 时遇到了问题。
我使用的是从 RubyGems 生成的 API 密钥,我已将其作为 Secret 添加到我的 GitHub 存储库中。但是,我在 GitHub Actions 日志中遇到以下错误:
Run gem push *.gem --key rubygems_api_key
ERROR: No such API key. Please add it to your configuration (done automatically on initial `gem push`).
Error: Process completed with exit code 1.
以下是我的工作流程在
release.yml
中的配置方式:
- name: Publish to RubyGems
run: gem push *.gem --key rubygems_api_key
env:
RUBYGEMS_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
我已验证 API 密钥是否已在 GitHub 中正确添加为 Secret,并且 Secret 名称在工作流程中是否匹配。我是否遗漏了什么,或者我需要采取额外的步骤吗?任何帮助将不胜感激。
谢谢!
--key
的
gem push
选项期望在文件中找到密钥~/.gem/credentials
。
使用 GitHub Actions,无需将密钥写入文件并从那里读回,而是在环境变量中传递密钥要容易得多。如果省略
--key
选项,RubyGems 将在名为 GEM_HOST_API_KEY
的环境变量中查找 API 密钥。
因此,您需要做的就是从对
--key
的调用中删除 gem push
选项,并在名为 GEM_HOST_API_KEY
的环境变量中发布秘密 API 密钥:
- name: Publish to RubyGems
run: gem push *.gem
env:
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}