(git)将更改推送到开发服务器并使其自动重新启动Node应用程序的最佳方法?

以前和在本地机器上,我一直在使用nodemonnodemon Node应用程序的变化,并在每次更改时重新加载它。 但是在我自己的机器上运行开发服务器不再可行,所以我已经在指定的开发服务器上为应用程序设置了git。

事先,我更喜欢Sublime Text,所以通过terminal编辑开发服务器上的文件并不符合我的工作stream程,而且我喜欢默认情况下在本地机器上拥有一切。 我也检查了rsync ,但我喜欢git提供的细粒度版本控制。

那么我怎样才能在本地编辑文件, git push他们到一个开发服务器,并有Node应用程序每次推后自动重新加载?

你可以写一个服务器端钩子。 在.git目录中有一个钩子目录。 只需cd到.git /钩子。 在那里,你可以用你需要的任何语言编写一个脚本。基本上,在你推它之后,它将运行你告诉它的脚本。 这里是关于git钩子的更多信息

https://git-scm.com/book/es/v2/Customizing-Git-Git-Hooks

快速教程,使这项工作:

  1. 在开发服务器上,使用git init --bare example.git导航到/home/dev-user/Node并在/home/dev-user/Node/example.git初始化裸仓库。

  2. 使用git clone example.git将资源git clone example.git/home/dev-user/Node/example git clone example.git

  3. 根据需要添加文件到/home/dev-user/Node/example ,然后git add .git commit -m "init" ,最后git push origin master将这些文件推送到example.git

  4. 编辑或创build/home/dev-user/Node/example.git/hooks/post-receive并添加以下行: GIT_WORK_TREE=/home/dev-user/Node/example/ git checkout -f

    这将自动更新/home/dev-user/Node/example/ ,任何更改推送到/home/dev-user/Node/example.git

  5. 如果您尚未安装nodemon ,请使用npm install -g nodemon 。 你可能不得不使用sudo

  6. 假设您的主节点应用程序位于/home/dev-user/Node/example/app.js ,请使用nodemon /home/dev-user/Node/example/app.js启动应用程序(或者如果您已经在/home/dev-user/Node/example ,当然只是nodemon app.js )。

  7. 在本地机器上,导航到/home/timbur/Node ,假设你能够通过SSH自动连接到服务器,使用git clone dev-user@dev.server.ip.address:Node/example.git裸仓库git clone dev-user@dev.server.ip.address:Node/example.git 。 现在,您将拥有/home/timbur/Node/example

  8. 编辑本地计算机上的文件,并像往常一样向开发服务器添加/提交/推送文件,更改将自动更新服务器的example目录, nodemon将检测哪个应用程序并重新启动应用程序。

最好的办法是设置一个像Jenkins一样的持续集成服务器: https : //jenkins-ci.org/

然后有基本上任何你想要做的插件,就像这个node.js例如: https : //wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

但这可能不是最简单的方法。 你也可以在你的服务器上设置一个post-receive钩子,当你推送任何更改时检查代码,然后让它重新启动你的服务器。 这是我发现的要点(但从来没有尝试过) https://gist.github.com/tlrobinson/8035884