You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Github Workflows流水线中下载私有Ruby gem Sidekiq Pro

Sidekiq Pro在GitHub Workflows中授权失败的排查与解决

问题背景

Sidekiq Pro是需授权的私有Ruby Gem,本地运行正常,但在GitHub Workflows流水线中执行bundle install时始终报未授权错误。已尝试多种bundle配置方式,且通过cat ./bundle/config能看到密钥已写入,但问题仍未解决。

现有尝试的配置问题

首先注意到你尝试的配置中存在路径拼写错误:mkdir -p ~./bundle应为mkdir -p ~/.bundle,错误的路径会导致bundle无法读取到配置文件,这很可能是核心原因之一。

可行的解决方案

方案1:修正路径并正确写入bundle配置

使用正确的用户目录路径写入bundle配置,同时用单引号避免shell解析变量:

- name: Configure Sidekiq
  run: |
    mkdir -p ~/.bundle
    echo 'BUNDLE_GEMS__CONTRIBSYS__COM: "${{ secrets.SIDEKIQ_KEY }}:${{ secrets.SIDEKIQ_PASS }}"' >> ~/.bundle/config

或者直接配置项目本地的bundle:

- name: Configure Sidekiq
  run: |
    bundle config set --local https://gems.contribsys.com "${{ secrets.SIDEKIQ_KEY }}:${{ secrets.SIDEKIQ_PASS }}"

方案2:针对Docker Build的配置(如果流水线涉及Docker构建)

如果你的docker build过程中需要安装Sidekiq Pro,主机的bundle配置不会自动继承到容器内,需通过构建参数传递密钥:

  1. 修改Dockerfile,添加构建参数并配置bundle:
ARG SIDEKIQ_KEY
ARG SIDEKIQ_PASS
# 配置Sidekiq Pro私有源
RUN bundle config set --local https://gems.contribsys.com "$SIDEKIQ_KEY:$SIDEKIQ_PASS"
# 执行bundle install
RUN bundle install --without development test
  1. 在GitHub Workflows中传递构建参数:
- name: Build Docker Image
  run: |
    docker build \
      --build-arg SIDEKIQ_KEY=${{ secrets.SIDEKIQ_KEY }} \
      --build-arg SIDEKIQ_PASS=${{ secrets.SIDEKIQ_PASS }} \
      -t your-image-name .

方案3:验证Secrets是否正确注入

有时Secrets可能未被正确传递,可添加步骤验证:

- name: Verify Secrets
  run: |
    echo "Sidekiq Key Length: ${#SIDEKIQ_KEY}"
    echo "Sidekiq Pass Length: ${#SIDEKIQ_PASS}"
  env:
    SIDEKIQ_KEY: ${{ secrets.SIDEKIQ_KEY }}
    SIDEKIQ_PASS: ${{ secrets.SIDEKIQ_PASS }}

如果输出的长度为0,说明Secrets未正确配置,需检查GitHub仓库的Secrets设置。

额外注意事项

  • 若密钥包含特殊字符(如@、:、/),需用双引号包裹整个密钥字符串,避免shell解析出错
  • 确保bundle install命令在配置完私有源之后执行,顺序不能颠倒

内容的提问来源于stack exchange,提问作者tofersApology

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:31:05