Node 自动化部署的方法

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

  • git push 将代码提交至代码仓库
  • 在服务器中执行 git pull 拉取最新代码
  • 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/bash
git reset --hard origin/master
git clean -f
git pull
npm start

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

编写 js 文件执行脚本

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

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

// autoBuild.js
var http = require('http')
var spawn = require('child_process').spawn
var 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 来配置

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

初始化项目

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

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

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

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

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

再看看 Github

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

最后

此技术不仅仅局限于 Node

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

本项目的源码地址:https://github.com/HuangXiZhou/auto-build

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 前端自动化开发之Node.js的环境搭建教程

    一.为什么我们前端自动化开发 相信任何学开发的,不管学什么语言,老师都这样讲过,作为一名开发人员,你最大的精力应该是放在创造力上面,don't you repeat myself 不要重复自己,而在我们开发过程中,往往存在很多大量的重复操作,所以我们需要为这些操作省去时间,腾出更多的时间来让我们创造. 而自动化开发能带来哪些自动化: 1.自动编译(将less,sass等自动编译) 2.自动合并(将页面引入的多个js文件,或者css文件,合并为同一个且压缩) 3.自动刷新(IDE保存,浏览器不用刷

  • nodejs前端自动化构建环境的搭建

    为了UED前端团队更好的协作开发同时提高项目编码质量,我们需要将Web前端使用工程化方式构建: 目前需要一些简单的功能: 1. 版本控制     2. 检查JS     3. 图片合并     4. 压缩CSS     5. 压缩JS     6. 编译SASS 这些都是每个Web项目在构建.开发阶段需要做的事情.前端自动化构建环境可以把这些重复工作一次配置,多次重复执行,极大的提高开发效率. 目前最知名的构建工具: Gulp.Grunt.NPM + Webpack:     grunt是前端工

  • 在Mac OS上安装使用Node.js的项目自动化构建工具Gulp

    安装 node.js 首先需要安装 node.js, 通常情况下,只需要到 Node.js 官网下载安装包安装就可以了.不过我可耻的失败了,弹出了如下错误: 于是我换成了 brew 大法: brew install nodejs 安装 Gulp gulp 使用 Node.js 的 npm 命令安装: npm install --global gulp 然后在项目目录中还要安装一遍: npm install --save-dev gulp 我对这步的操作比较费解.以我多年码农经验,即然全局安装过了

  • Node 自动化部署的方法

    当我们在更新迭代 Node 项目的时候,我们需要做以下几步: git push 将代码提交至代码仓库 在服务器中执行 git pull 拉取最新代码 pm2 start 运行你的代码 这样做固然没错,但是一旦项目更新迭代过快,就需要不断的重复着上面的步骤,在各种 bash 面板中来回切换,很是麻烦. 这时候,Webhooks 闪亮登场! 对于 Webhooks, Github 给出的解释是: Webhooks allow you to build or set up integrations w

  • Maven+Tomcat8 实现自动化部署的方法

    本文介绍了Maven+Tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml): <role rolename="tomcat"/> <role rolename="manager"/> <role rolename="manager-gui"/> <

  • GO 使用Webhook 实现github 自动化部署的方法

    通常大家开发大部分是本地git push 提交,服务器上git pull 手动更新.git 可以使用webhook实现自动部署. webhook是仓库平台的一个钩子事件,通过hook 钩子监听代码,回调通知(通知地址就是你在各个git仓库平台中填写的webhook地址,一般在你的某个项目仓库如myproject.git里面的设置中)仓库平台填写的地址. 其实原理流程就是: 所以自动部署主要实现方式就是: - 修改代码 push - github(其他仓库平台)发送请求给你的网站服务器 - 网站服

  • 基于Docker+Jenkins实现自动化部署的方法

    使用码云搭建Git代码存储仓库 https://gitee.com/login 使用码云创建私有私有git仓库 将本地springboot项目上传到git仓库中 基于Docker安装Jenkins环境 1.使用docker 安装jenkins docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 2.访问jenkins地址 8080 注意:第一次启动的时候正在加载j

  • 使用pm2自动化部署node项目的方法步骤

    1.pm2简介 pm2(process manager)是一个进程管理工具,维护一个进程列表,可以用它来管理你的node进程,负责所有正在运行的进程,并查看node进程的状态,也支持性能监控,负载均衡等功能. 1.1.使用pm2管理的node程序的好处 监听文件变化,自动重启程序 支持性能监控 负载均衡 程序崩溃自动重启 服务器重新启动时自动重新启动 自动化部署项目 2.pm2安装与使用 2.1.全局安装 npm install pm2 -g 2.2.常用命令 启动一个node程序 pm2 st

  • 从零搭建docker+jenkins+node.js自动化部署环境的方法

    本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker部分 1.1.docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口 1.2.docker架构 简单的说,docker就是一个轻量级的linux系统.Docker 容器通过 Docker 镜像来创建.

  • vue-cli3项目打包后自动化部署到服务器的方法

    一.安装 scp2 npm install scp2 --save-dev 二.写好脚本 例如 upload.js (下面任选一个即可) 位置和 package.json平级即可. 简略版 'use strict' // 引入scp2 var client = require('scp2'); client.scp('./dist/', { // 本地打包文件的位置 "host": 'XXX.XX.XX.XXX', // 服务器的IP地址 "port": 'XX',

  • Jenkins自动化部署Vue项目的方法实现

    目录 jenkins介绍 1. 环境准备 2. 首先登录服务器更新系统软件 3. 安装Java和git 4. 安装nginx 5. 安装Jenkins 6. 用jenkins创建一个构建任务 7. 填写jenkins构建时执行的shell脚本 8. 安装nodeJs 9.打开服务器 10.利用docker部署nginx访问项目 11.实现代码提交自动触发Jenkins构建 jenkins介绍 Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装.

  • 利用PM2部署node.js项目的方法教程

    前言 大家在开发中应该发现了,如果直接通过node app来启动,如果报错了可能直接停在整个运行,supervisor感觉只是拿来用作开发环境的.再网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种.下面本文将详细介绍利用PM2部署node.js项目的方法教程,需要的朋友们下面来一起看看详细的介绍: 使用场合: supervisor是开发环境用. forever管理多个站点,每个站点访问量不大,不需要监控. pm2 网站访问量比较大,需要完整的监控界面. P

  • node.js部署之启动后台运行forever的方法

    我们知道想要项目部署后运行 需要使用命令行 cd 到项目目录然后执行 npm install 或者 node index.js 或者使用bat文件执行 方法就是首先创建一个txt文件,把你需要执行的步骤写下来 cd C:\Program Files\nodejs\wh npm start 然后保存将后缀改成bat 然而这样启动后,cmd框一直在,如果退出,node.js项目就会关闭, 这个时候我们需要使用forever 1.首先切换到项目目录 cd 你的项目路径 2.然后安装 npm insta

随机推荐