当我们更新和迭代Node项目时,我们需要做以下步骤:gitpush将代码提交到代码仓库在服务器上执行gitpull来拉取最新的代码pm2start运行你的代码当然是这样的对,但是一旦项目更新迭代太快,需要重复上面的步骤,在各个bash面板来回切换,很麻烦。这时候,Webhooks登场了!对于Webhooks,Github给出的解释是:WebhooksallowyoutobuildorsetupintegrationswhichsubscribetocertaineventsonGitHub.com。简单的说,使用Webhooks,我们就可以实现网站的自动部署,我们现在就来看看配置脚本具体是怎么做的这个脚本的内容就是我们需要服务器自动执行#autoBuild.sh#!/bin/bashgitreset--hardorigin/mastergitclean-fgitpullnpmstart注意:这个脚本会在服务器自动执行并写入js文件来执行脚本由于我使用的是Github作为代码仓库,所以这里我们使用库github-Webhooks-handler来实现我们脚本的自动执行。根据文档,我们是这样写js文件的://autoBuild.jsvarhttp=require('http')varspawn=require('child_process')。spawnvarcreateHandler=require('github-Webhooks-handler')varhandler=createHandler({path:'/pushCode',secret:''})//配置http.createServer(function(req,res){handler(req,res,function(err){res.statusCode=404;res.end('没有这样的位置')})}).listen(7777)handler.on('error',function(err){console.error('Error:',err.message)})//监听推送事件handler.on('push',function(event){console.log('收到推送事件f或%s到%s',event.payload.repository.name,event.payload.ref)rumCommand('sh',['./autoBuild.sh'],function(txt){//执行autoBuild.sh脚本文件console.log(txt)})})functionrumCommand(cmd,args,callback){varchild=spawn(cmd,args)varresponse=''child.stdout.on('data',function(buffer){response+=buffer.toString();})child.stdout.on('end',function(){callback(response)})}在app.js中,我们设置端口为3001,这里的代码没有已发布,您可以在文末Github链接中找到本教程的所有示例代码。Nginx配置由于我们的示例代码运行在3001端口,自动部署的js文件运行在7777端口,所以我们需要配置Nginx来开启这两个端口:#Enableport7777server{listen7777;listen[::]:7777server_namehuangxizhou.com;#填写自己的服务器ip地址或域名root/var/www/html/auto-build;}#启用3001端口server{listen3001;listen[::]:3001server_namehuangxizhou.com;#这里填写你自己的服务器ip地址或者域名root/var/www/html/auto-build;}这样,Nginx就配置好了,接下来就是代码仓库的Webhooks配置Webhooks配置首先,我们进入你要实现自动部署的仓库,点击设置->Web右边是配置Hooks,就是配置你的接口地址和Secret,对应前面js文件中的Secret,选择Contenttype为application/json来初始化项目。项目的第一次部署还是需要我们自己手动操作,先将代码提交到代码仓库(这里是Github),然后进入服务器执行gitpull。这样我们的Node实现自动部署的代码就部署成功了。让我们修改代码看看它是如何工作的。gitpush后,去服务器看看。完美,运行成功看到Github已经自动触发接口,Node自动部署成功最后这个技术不受Node的限制,只能针对单个项目自动部署,必须依赖代码仓库处end...有2019年毕业的前端开发实习生吗?请采纳我的简历TT本项目源码地址:https://github.com/HuangXiZhou/auto-build感谢阅读;)
