远程从 GitHub 拉取到服务器

远程从 GitHub 拉取到服务器

我想设置从 GitHub 到我的 Digital Ocean 服务器的部署工作流程。为此,我不想登录服务器并手动git pull从我的服务器存储库运行。

我知道 git hooks,甚至在我的本地机器和服务器之间使用过它们,但我想要一种从 GitHub 部署到服务器的方法,这样我就可以保证 GitHub 仓库和服务器仓库之间的奇偶校验。

关于如何对不受支持的主机公司(Digital Ocean)执行此操作的文档很少,因此我认为远程执行此操作的一种方法是:

  1. 在我的服务器上设置一个用户。
  2. 为该用户创建 SSH 密钥对
  3. 将用户的公钥添加为部署密钥在我的 Github 存储库上
  4. cd /var/www/my-repo && git pull然后,当我想使用本地计算机进行部署时,我只需通过 ssh 向服务器发送一个 bash 命令(类似于

问题是我似乎只能到达第 3 点。为了从 GitHub 克隆/拉取存储库,我需要在我的 shell 中启动 ssh-agent。如果不这样做,我的服务器用户就无法从 GitHub 拉取。

一个显而易见的解决方案可能是简单地eval `ssh-agent -s`通过网络发送命令以及我的cdgit pull命令。然而,经过一些实验,我意识到当我终止与服务器的 shell 会话时,ssh-agents 并没有被终止。这意味着每次我想要部署时,我都会启动休眠的 ssh-agent 进程。

我的问题有两个:

  1. 对于一个相当低调的网站来说,这是一种糟糕的部署方式吗?
  2. 是否有一个好的,干净的 bash 脚本可以在每次执行时启动和终止 ssh 代理?

我的服务器是 Debian 服务器。

答案1

最后我做了两件事来成功通过 GitHub 身份验证:

1)创建一个没有密码的 SSH 密钥,并使用其 .pub 作为 GitHub 存储库上的部署密钥

2)通过将以下内容添加到〜/.ssh /配置

host github.com HostName github.com IdentityFile ~/.ssh/my-rsa User git

相关内容