Buildpacks Pack:将 Bundler 配置传递给 Buildpack

问题描述

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

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

通常,执行 <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script> <link href="styles.css" rel="stylesheet"> </head> <script> document.addEventListener('DOMContentLoaded',function() { let picture = document.querySelectorAll('.picture'); for (let i = 0; i <picture.length; i++) { picture.addEventListener("mouSEOver",function () { var text; var pictureid = picture.getElementById(); if (pictureid === '#pic1') { text = 'First response'; } else { text = 'Second response'; } document.getElementById('#subtext').innerHTML = text; } )}; }); </script> <body> <img src="IMG_1.jpg" width="300" height="400" class = picture id="pic1"> <img src="IMG_2.jpg" width="300" height="400" class = picture id ="pic2"> <sub id="subtext"></sub> </body> </html> (将每个 $ 替换为实际值)构建过程将在本地运行,无需 Buildpack。普通的 Ruby 东西。

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

bundle config $address "$user:$token"

所以我猜它应该传递给 Buildpack 映像。这是最好的做法吗?如果是……怎么办?因为 Buildpacks 文档对 Heroku usage内容很重,但在使用 Pack 工具(这是一种抽象)时却没有那么多。

我已经考虑并搜索了使用变量或映射本地文件方法(这在抽象的 CI/CD 管道上不太实用),但我仍然无法得到关于这和对 gemfile 上的信用进行硬编码是一个很大的禁忌(遵循 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 时仍然适用)