Buildpacks Pack:将 Bundler Config 传递给 Buildpack

Buildpacks Pack: Passing Bundler Config to the Buildpack

我正在尝试使用 the Buildpacks Pack tool 作为 CLI 并使用“buildpacks:18”映像来创建构建器来构建我的解决方案。

除了 Ruby 之外,一切正常,因为我的一个应用程序正在使用私有 gem 存储库。

通常情况下,bundle config $address "$user:$token"(将每个 $ 替换为实际值)构建过程将在本地运行,无需 Buildpacks。正常 Ruby 东西。

但是,当使用 Buildpack Builder/Image 时,它不会读取我本地机器上的配置并不断返回:

Bundler Output: Authentication is required for rubygems.pkg.github.com.
       Please supply credentials for this source. You can do this by running:
        bundle config set rubygems.pkg.github.com username:password

 !
 !     Failed to install gems via Bundler.

所以我猜它应该传递给 Buildpack 图像。这是最佳做法吗?如果是这样……怎么办?因为 Buildpacks 文档在 Heroku usage 上很重要,但在使用 Pack 工具时并没有那么多,这是一个抽象。

我已经考虑并搜索了使用变量或映射我的本地文件的方法(这在抽象的 CI/CD 管道上不太实用)但我仍然无法获得关于这个的明确答案和硬编码 gem 文件上的信用是一个很大的禁忌(在 best practices 之后)。我试图避免做一个“自定义图像”,因为它感觉有点矫枉过正,所以也许有一种方法我完全错过了。

在此先感谢您的帮助。

您需要 运行 pack build 使用 BUNDLE_GEMS__<HOST>__<TLD>=<user>:<token> 形式的环境变量,使用 -e 标志。例如:

pack build -e BUNDLE_GEMS__EXAMPLE__COM=itme:xxx myapp

有关详细信息,请参阅 Heroku guide to bundler configuration(在大多数情况下使用 pack 时仍然适用)