从GitHub推送到Web服务器

And*_*rew 22 git ftp github

我想把我的所有网站都移到GitHub,以获得所有明显的好处.我不是命令行的忠实粉丝,所以我喜欢GitHub,因为它让我可以避免触及所有这些.在GitHub上设置存储库,然后将其与我的计算机同步很容易.我需要能够自动从GitHub推送到网络服务器,所以当我在本地更新主分支,与GitHub同步时,它会在网站上运行.从谷歌搜索主题似乎大多数技术要么需要命令行或看起来相当复杂.我想用大约15-20个站点(其中许多站点托管在来自不同客户端的不同服务器上)执行此操作.我想找到一个在我的技能范围内的选项,每个站点不需要2-3个小时.有人知道最好,最简单的设置方法吗?

Von*_*onC 8

复杂的部分是GitHub上webhook

每当推送存储库时,每个GitHub存储库都可以选择与Web服务器通信.

这意味着您的网站必须有一个进程监听GitHub在收到提交时发送的JSON消息.

你可以看到这些监听器的多个例子,比如这个webhook-deployer,带有auto.php(对于php服务器):

<?php

 // Prevent accidental XSS
 header("Content-type: text/plain");

 // Run the script 
 if ( $_POST['payload'] ) {
  shell_exec("./pull.sh");
}
Run Code Online (Sandbox Code Playgroud)

GitHub项目建议使用没有密码的SSH密钥,我首先同意(测试它).
但是,特别是对于私有项目,最好运行ssh-agent并管理受保护的ssh密钥密码.
正如janos 评论:

  • 如果GitHub存储库是公共的,那么他甚至不需要一个.
  • 如果回购是私有的,那么他需要它,但不应该这么做.如果可能,他应该使用密钥代理.
    如果这太复杂了,那么他就可以使用专用的SSH密钥而不使用密码来进行此部署,并且该密钥永远不会离开部署PC.


小智 5

我知道这张票很旧,但对于那些以某种方式找到它的人,请结帐dploy.io.它是一个托管服务,专门用于将您的repo从GitHub/Bitbucket部署到您的服务器.它支持SFTP/FTP/S3/Heroku/SSH命令等.

免责声明:我在dploy.io上工作