在 Heroku 上安装私有 ssh 部署密钥
问题:在 Heroku 上安装私有 ssh 部署密钥
我正在创建一个 node.js 应用程序,该应用程序用作 Github 的 Web 挂钩,它将在推送更改时自动部署某个私有存储库。为了使 webhook 应用程序尽可能高效,我想在部署时克隆私有 repo 并将其拉入 webhook 的 Heroku 实例中的临时目录中,这样当 webhook 触发时,我只需要“git pull”即可获取最新的更新并部署它们。在部署 webhook 应用程序(使用 package.json 或 Procfile)时运行 shell 脚本很容易,但在运行 git 命令之前,我必须安装私有部署密钥。目前,私钥和公钥在我的 webhook 存储库中(我知道,我知道,一旦我让它工作我会做得更好)所以我尝试通过将它添加到我的 shell 脚本来安装它(这里建议)
mkdir /app/.ssh
cp config/ssh/* /app/.ssh/
mkdir /tmp/repos
git clone --bare ssh://github.com/<username>/<repo>.git /tmp/repos/<repo>
但我得到:
在 /tmp/repos/assets/ 中初始化空 Git 存储库主机密钥验证失败。致命:远端意外挂断
公钥已作为部署密钥添加到我正在提取的存储库中,所以我的问题是:
-
我是否将私钥安装在正确的目录中?
-
私钥文件必须有特定的名称吗?
-
这种方法甚至可能/推荐吗?
-
如果不是最好的选择是什么?
谢谢!
解答
如果你想在构建期间访问私有存储库,那么这个 buildpack 是最好的选择:
https://github.com/timshadel/heroku-buildpack-github-netrc
这允许您使用Github 访问令牌设置环境变量。在构建过程中,将使用访问令牌创建一个 .netrc 文件,这将使您能够访问该用户的任何存储库。
但是,如果您想在构建期间访问私有存储库,例如如果您的 web dyno 正在执行 git 操作,那么您可以以包含访问令牌的方式指定存储库 URI:
https://your_user:your_token@github.com/ABASystems/abas-engineering.git
这两种方法都允许您在不暴露密码的情况下访问私有 git 存储库。
更多推荐


所有评论(0)