博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node 自动化部署
阅读量:6452 次
发布时间:2019-06-23

本文共 2440 字,大约阅读时间需要 8 分钟。

当我们在更新迭代 Node 项目的时候,我们需要做以下几步:

  1. git push 将代码提交至代码仓库
  2. 在服务器中执行 git pull 拉取最新代码
  3. pm2 start 运行你的代码

这样做固然没错,但是一旦项目更新迭代过快,就需要不断的重复着上面的步骤,在各种 bash 面板中来回切换,很是麻烦。

这时候,Webhooks 闪亮登场!

对于 Webhooks, Github 给出的解释是:

Webhooks allow you to build or set up integrations which subscribe to certain events on GitHub.com.

简单来说,利用 Webhooks,我们就可以实现网站的自动部署,现在就来看看具体该怎么做

配置脚本

这段脚本内容是我们需要服务器自动执行的

# autoBuild.sh#! /bin/bashgit reset --hard origin/mastergit clean -fgit pullnpm start

注:这段脚本将会自动在服务器中执行

编写 js 文件执行脚本

由于我使用的是 Github 作为代码仓库,所以在这里,我们使用 这个库来实现我们的脚本自动执行工作

按照文档,我们按照以下方式来编写 js 文件:

// autoBuild.jsvar http = require('http')var spawn = require('child_process').spawnvar createHandler = require('github-Webhooks-handler')var handler = createHandler({ path: '/pushCode', secret: '' }) // 在代码仓库的 Webhooks 选项处配置http.createServer(function (req, res) {  handler(req, res, function (err) {    res.statusCode = 404;    res.end('no such location')  })}).listen(7777)handler.on('error', function (err) {  console.error('Error:', err.message)})// 监听 push 事件handler.on('push', function (event) {  console.log('Received a push event for %s to %s',    event.payload.repository.name,    event.payload.ref)  rumCommand('sh', ['./autoBuild.sh'], function( txt ) { // 执行 autoBuild.sh 脚本文件    console.log(txt)  })})function rumCommand( cmd, args, callback ) {    var child = spawn( cmd, args )    var response = ''    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 来启用这两个端口:

# 启用 7777 端口server {    listen 7777;    listen [::]:7777    server_name huangxizhou.com; #在这里填上你自己的服务器 ip 地址或者域名        root /var/www/html/auto-build;}# 启用 3001 端口server {    listen 3001;    listen [::]:3001    server_name huangxizhou.com; #在这里填上你自己的服务器 ip 地址或者域名        root /var/www/html/auto-build;}

这样一来,Nginx 就配置完毕了,接下来就是代码仓库的 Webhooks 配置

Webhooks 配置

首先,我们进入你想实现自动化部署的仓库,点击 settings -> Webhooks 来配置

Webhooks

在右侧,就是配置你的接口地址以及 Secret,对应之前的 js 文件里面的 Secret,选择 Content type 为 application/json

初始化项目

第一次部署项目,还是需要我们自己手动操作的。

首先提交代码至代码仓库(这里是Github),然后进入服务器执行 git pull

这样,我们就成功部署了我们 Node 实现自动部署的代码了

让我们修改代码来试试效果怎么样

git push 之后转到服务器内一看,完美,成功运行

再看看 Github

已经自动触发了接口,Node 自动化部署成功

最后

此技术不仅仅局限于 Node

局限性也是有的,只能单项目自动化部署,且必须依赖代码仓库

最后的最后... 各位大佬有要2019年毕业的前端开发实习生的嘛,请大佬收下 T T

本项目的源码地址:

感谢阅读 ; )

转载地址:http://gmgwo.baihongyu.com/

你可能感兴趣的文章
我的世界java免费云电脑,云电脑app下载_云电脑官方版下载-我的世界中文网
查看>>
java编程一般类抽象类的定义,抽象类_Java面向对象 - 编程那点事
查看>>
php utf8 字符串截取,php utf8编码的字符串截取方法
查看>>
java web 航空公司类图,认识类图 - blogjava's web log - BlogJava
查看>>
java复制文件流,javaIO源之字节流的四种方式复制文件方式总结
查看>>
mysql select 作为条件查询,在mysql查询条件where中使用case根据字段条件查询
查看>>
帝国没有php.ini,帝国cms上传文件大小的限制php.ini设置方法
查看>>
php 域控,内网渗透系列之域渗透深入弹shell开3389拿域控
查看>>
matlab 柱子m-n曲线 代码,[2018年最新整理]5-MATLAB(M).ppt
查看>>
matlab打开word里的图片,Matlab往Word里面插入图片范例代码
查看>>
ajax长连接 php,ajax怎么实现服务器与浏览器长连接
查看>>
matlab 条件熵,求数列的条件熵
查看>>
.' matlab,求助matlab
查看>>
redenvelope php,Red Envelope (红包)
查看>>
php基础 正则表达式,PHP基础 —— 正则表达式
查看>>
php mongo 防注入,php mongodb 注入_PHP教程
查看>>
oracle存储过程常见异常,oracle_存储过程exception异常处理大全跟实例经典最终.doc...
查看>>
oracle报1405,【案例】Oracle报错ORA-15054 asm diskgroup无法mount的解决办法
查看>>
php 5.4.24 win32,PHP 5.4.14 和 PHP 5.3.24 发布
查看>>
oracle top pid,Linux Top 命令解析 比较详细
查看>>