问题描述
我正在尝试使用 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
时仍然适用)