我正在尝试将Node.js应用程序推送到Heroku。该应用程序使用npm来获取私有github存储库,这些存储库在package.json
中指定,就像这样......
"dependencies": {
"my-private-dep": "github:my-org/my-repo"
}
在npm install
阶段构建失败,因为github主机密钥不在容器known_hosts
文件中。
remote: npm ERR! Host key verification failed.
这是SSH的预期行为。 Heroku是否为此提供了解决方法?例如,使用相同dokku的buildpack具有host keys plugin,它会在每次构建之前将主机密钥注入容器,从而解决此问题。 Heroku有类似的解决方案吗?
答案 0 :(得分:1)
事实证明,有一个buildpack使这相对容易 -
https://github.com/debitoor/ssh-private-key-buildpack
然而,我发现,无论出于何种原因,设置SSH_HOSTS
环境变量对我来说都不正常 - 根据文档,它应该默认设置Github,然后你可以添加其他你喜欢...我实际上是在这个特定的项目中使用Gitlab,但发现当我像这样设置配置时:
$ heroku config:set SSH_HOSTS="git@gitlab.com"
没有被发现。我最终克隆了buildpack并将bin/compile
第13行更改为
ssh_hosts=${SSH_HOSTS:-"git@gitlab.com"}
并将其推送到我自己的仓库以用于此项目。工作就像一个魅力。