heroku - 在 Heroku 上安装私有(private) ssh 部署 key

标签 heroku github ssh-keys

我正在创建一个 node.js 应用程序,该应用程序用作 Github 的 Web Hook ,当推送更改时,它将自动部署某个私有(private)存储库。为了使 webhook 应用程序尽可能高效,我想在部署时克隆私有(private) repo 并将其拉入 webhook 的 Heroku 实例中的临时目录中,这样当 webhook 触发时,我只需要“git pull”即可获取最新的更新并部署它们。在部署 webhook 应用程序(使用 package.json 或 Procfile)时运行 shell 脚本很容易,但在运行 git 命令之前,我必须安装私有(private)部署 key 。目前,私钥和公钥在我的 webhook 存储库中(我知道,我知道,一旦我让它工作我会做得更好)所以我尝试通过将它添加到我的 shell 脚本来安装它(建议 here )

mkdir /app/.ssh
cp config/ssh/* /app/.ssh/
mkdir /tmp/repos
git clone --bare ssh://github.com/<username>/<repo>.git /tmp/repos/<repo>

但我得到:

Initialized empty Git repository in /tmp/repos/assets/ Host key verification failed. fatal: The remote end hung up unexpectedly



公钥已作为部署 key 添加到我正在提取的存储库中,所以我的问题是:
  • 我是否将私钥安装在正确的目录中?
  • 私钥文件是否必须具有特定名称?
  • 这种方法甚至可能/推荐吗?
  • 如果不是最好的选择是什么?

  • 谢谢!

    最佳答案

    如果你想在构建期间访问私有(private)存储库,那么这个 buildpack 是最好的选择:

    https://github.com/timshadel/heroku-buildpack-github-netrc

    这允许您使用 Github Access Token 设置环境变量.在构建过程中,将使用访问 token 创建一个 .netrc 文件,这将使您能够访问该用户的任何存储库。

    但是,如果您想在构建期间访问私有(private)存储库,例如如果您的 web dyno 正在执行 git 操作,那么您可以以包含访问 token 的方式指定存储库 URI:

    https://your_user:your_token@github.com/ABASystems/abas-engineering.git

    这两种方法都允许您在不暴露密码的情况下访问私有(private) git 存储库。

    关于heroku - 在 Heroku 上安装私有(private) ssh 部署 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25961970/

    相关文章:

    github - 从上游获取时,github 上的权限被拒绝(公钥)

    ruby-on-rails - heroku 应用程序无法启动

    ruby-on-rails - Heroku 广告横幅?

    git - 为什么 pull 的时候会出现pull requests

    github - Ubuntu Github ssh key 问题

    ssh-keys - Digital Ocean Droplet 上的 cloud-init .yaml 脚本

    ruby-on-rails - 如何配置裸域名以使用 Heroku 的 SSL 端点?

    flask - 如何使 Flask Heroku 应用程序成为渐进式 Web 应用程序 (pwa)

    git - 将 pull 请求 merge 到不同的分支

    github - 在微服务中,为数据库迁移脚本和 API 代码建立单独的代码存储库是否有意义?