我在VPS(Linux)上部署了我的应用程序(node.js)。我正在使用git hub作为存储库。如何在git push上自动部署应用程序?
我在VPS(Linux)上部署了我的应用程序(node.js)。我正在使用git hub作为存储库。如何在git push上自动部署应用程序?
Answers:
PHP中的示例:
导航到github到您的github存储库中,然后单击“管理员”
单击标签“服务挂钩” =>“ WebHook URL”
并添加
http://your-domain-name/git_test.php
然后创建git_test.php
<?php
try
{
$payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
exit(0);
}
//log the request
file_put_contents('logs/github.txt', print_r($payload, TRUE), FILE_APPEND);
if ($payload->ref === 'refs/heads/master')
{
// path to your site deployment script
exec('./build.sh');
}
在build.sh中,您将需要放置常用命令以从github检索您的站点。
过去曾有几次提到Git挂钩作为答案/评论,这对我有用。.所以如果有人需要更多细节,这是我的食谱。
我结合使用git post-receive钩子和node-supervisor来完成简单的自动部署(假设您在该机器上使用git远程存储库)。
设置您的接收后挂钩
在您的存储库中: sudo vi hooks/post-receive
它看起来应该像这样:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
设置文件权限: chmod +x hooks/post-receive
推送到仓库后,Git将刷新您应用目录中的文件。
使用Node-Supervisor运行Node
您需要在计算机上将Node-Supervisor作为全局节点模块安装: sudo npm install supervisor -g
现在,只需使用node-supervisor运行您的节点应用程序,它将监视您的工作目录中文件的更改:
supervisor /home/path/to/your/www/server.js
(请注意,supervisor
而不是node
)。
npm install -l
在远程服务器上执行部署策略很聪明。当然,这可以与使用后接收挂钩的方法结合在一起。
在这里回复的时间可能很晚。但是我在github上找到了这个项目,并且似乎可以做的很简单,但是却可以做到。
https://github.com/logsol/Github-Auto-Deploy
看看这个。也将有兴趣知道其他人在评论和投票方面对此有何看法。
干杯,
S
在我目前正在开发的一个项目中,我遵循Jez Humble出色的著作“ Continuous Delivery”(非常值得一读)中涵盖的指导原则。
这意味着使用某种形式的连续集成服务器(我使用Thought软件的Go社区免费版)创建部署管道,该服务器负责首先检查代码的质量,复杂性和运行单元测试。然后,它可以遵循部署管道,从而推送到生产服务器。
这听起来很复杂,但不是必须的,它确实使编写代码的整个过程变得安全且无忧(无需担心发行日!)。
我为实时系统使用了完整的部署管道,为我编写的npm模块使用了简化版本,并且两者共享相同的一键式部署技术。
我刚刚发布了针对您问题的基于节点的解决方案:node-cd
它包含一个在VPS上运行的简单节点应用程序,该应用程序将接收Github接收后挂钩并执行您喜欢的脚本(例如,将杀死您的应用程序,git pull并重新启动它的shell脚本)。
这是另一个简单的nodeJS实现。
这是一个非常简单的节点服务器,可在您配置的主机名和端口上运行,并可设置为处理GitHub post receive web hooks。实际的pul / test / deploy操作可以进行自定义以执行您想要的任何事情。在当前实现中,这是一个在nodeJS服务器脚本中内联指定的shell命令。同时,还有一个非常简单的基于secret_key的安全方案。
https://github.com/shyam-habarakada/rscds
我的登台服务器已经安装并正在运行节点,因此编写此脚本既快速又容易。
如果您需要基于python / tornado的解决方案,我编写了一个脚本来处理来自Github的Webhook Services的 POST请求。您可以在https://github.com/Akobi/ops/tree/master/autodeploy中找到它
它基本上使用JSON配置文件来列出您希望从中推送哪些存储库,要在部署时运行的命令以及必须在哪个目录中运行。您所要做的就是根据自己的喜好修改配置文件并运行剧本!
另外,我使用Nginx作为反向代理,将这些POST转发到我的脚本。您可以在“ nginx”文件夹下的同一Github存储库中找到Nginx配置。
快乐推!
在我看来,PHP的答案是完全合法的,但是如果您喜欢Ruby,则可以写一个解决方案。它和PHP答案是一样的,只是语言不同。您使用Web挂钩,并且有一个简单的脚本来侦听相关的HTTP请求。
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
我已经创建了自己的基本部署工具,该工具会自动从存储库中提取新更新-https: //github.com/jesalg/SlimJim-基本上,它会监听github post-receive-hook并使用代理触发更新脚本。
我是https://commando.io的创始人,最近我们宣布通过一项服务与GitHub集成。通过集成,您可以在推送到GitHub存储库时在服务器上运行执行。这是在推送代码时自动运行部署脚本的绝佳机会。
执行是您在Commando.io内部编写的脚本,可以用bash,perl,python,ruby,go或node.js编写。要了解更多信息,并查看running的示例执行脚本git pull
,请参阅我们的博客文章公告:http : //blog.commando.io/run-executions-via-github-push/
还请注意,那里有免费/廉价的服务,例如REPOMAN.IO,几乎可以为您自动执行所有这些操作。