欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node 自動化部署的方法

 更新時間:2017年10月17日 11:38:33   作者:HASIK1  
本篇文章主要介紹了Node 自動化部署的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

當(dāng)我們在更新迭代 Node 項目的時候,我們需要做以下幾步:

  • git push 將代碼提交至代碼倉庫
  • 在服務(wù)器中執(zhí)行 git pull 拉取最新代碼
  • pm2 start 運行你的代碼

這樣做固然沒錯,但是一旦項目更新迭代過快,就需要不斷的重復(fù)著上面的步驟,在各種 bash 面板中來回切換,很是麻煩。

這時候,Webhooks 閃亮登場!

對于 Webhooks, Github 給出的解釋是:

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

簡單來說,利用 Webhooks,我們就可以實現(xiàn)網(wǎng)站的自動部署,現(xiàn)在就來看看具體該怎么做

配置腳本

這段腳本內(nèi)容是我們需要服務(wù)器自動執(zhí)行的

# autoBuild.sh

#! /bin/bash
git reset --hard origin/master
git clean -f
git pull
npm start

注:這段腳本將會自動在服務(wù)器中執(zhí)行

編寫 js 文件執(zhí)行腳本

由于我使用的是 Github 作為代碼倉庫,所以在這里,我們使用 github-Webhooks-handler 這個庫來實現(xiàn)我們的腳本自動執(zhí)行工作

按照文檔,我們按照以下方式來編寫 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)
})

// 監(jiān)聽 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 ) { // 執(zhí)行 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 中,我們將端口設(shè)置為 3001,在這里代碼就不放出來了,可以在文末的 Github 鏈接里找到本教程的全部示例代碼

Nginx 配置

由于我們的示例代碼是跑在 3001 端口的,執(zhí)行自動化部署的 js 文件則跑在 7777 端口,所以我們需要配置一下 Nginx 來啟用這兩個端口:

# 啟用 7777 端口
server {
  listen 7777;
  listen [::]:7777
  server_name huangxizhou.com; #在這里填上你自己的服務(wù)器 ip 地址或者域名
  
  root /var/www/html/auto-build;
}

# 啟用 3001 端口
server {
  listen 3001;
  listen [::]:3001
  server_name huangxizhou.com; #在這里填上你自己的服務(wù)器 ip 地址或者域名
  
  root /var/www/html/auto-build;
}

這樣一來,Nginx 就配置完畢了,接下來就是代碼倉庫的 Webhooks 配置

Webhooks 配置

首先,我們進(jìn)入你想實現(xiàn)自動化部署的倉庫,點擊 settings -> Webhooks 來配置

在右側(cè),就是配置你的接口地址以及 Secret,對應(yīng)之前的 js 文件里面的 Secret,選擇 Content type 為 application/json

初始化項目

第一次部署項目,還是需要我們自己手動操作的。

首先提交代碼至代碼倉庫(這里是Github),然后進(jìn)入服務(wù)器執(zhí)行 git pull

這樣,我們就成功部署了我們 Node 實現(xiàn)自動部署的代碼了

讓我們修改代碼來試試效果怎么樣

git push 之后轉(zhuǎn)到服務(wù)器內(nèi)一看,完美,成功運行

再看看 Github

已經(jīng)自動觸發(fā)了接口,Node 自動化部署成功

最后

此技術(shù)不僅僅局限于 Node

局限性也是有的,只能單項目自動化部署,且必須依賴代碼倉庫

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.JS如何實現(xiàn)JWT原理

    Node.JS如何實現(xiàn)JWT原理

    jwt是json web token的簡稱,本文介紹它的原理,最后后端用nodejs自己實現(xiàn)如何為客戶端生成令牌token和校驗token
    2020-09-09
  • windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境

    windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境

    這篇文章主要介紹了windows8.1+iis8.5下安裝node.js開發(fā)環(huán)境的方法,需要的朋友可以參考下
    2014-12-12
  • Node的stream數(shù)據(jù)流你了解嗎

    Node的stream數(shù)據(jù)流你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Node的stream數(shù)據(jù)流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • package.json文件配置詳解

    package.json文件配置詳解

    這篇文章主要介紹了package.json文件配置詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-06-06
  • 詳解nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊

    詳解nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊

    上一篇文章:nodejs微信公眾號開發(fā)(2)自動回復(fù),實現(xiàn)了簡單的關(guān)注回復(fù)。采用拼接字符串的形式,并不是很方便,這里我們將其封裝承接口。
    2017-04-04
  • Node.js中的流(Stream)介紹

    Node.js中的流(Stream)介紹

    這篇文章主要介紹了Node.js中的流(Stream)介紹,本文講解了什么是流、pipe方法、流的分類、Readable流狀態(tài)的切換等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • node.js Promise對象的使用方法實例分析

    node.js Promise對象的使用方法實例分析

    這篇文章主要介紹了node.js Promise對象的使用方法,結(jié)合實例形式分析了node.js中Promise對象的功能、定義、調(diào)用方法及相關(guān)使用技巧,需要的朋友可以參考下
    2019-12-12
  • 前端必會的輕量打包工具gulp使用詳解

    前端必會的輕量打包工具gulp使用詳解

    這篇文章主要為大家介紹了前端必會的輕量打包工具gulp使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 使用Node.js搭建Vue項目的詳細(xì)步驟

    使用Node.js搭建Vue項目的詳細(xì)步驟

    Vue.js 是一款流行的 JavaScript 框架,而 Node.js 提供了一個強大的運行環(huán)境,兩者的結(jié)合使得開發(fā)者可以輕松構(gòu)建現(xiàn)代化的前端項目,本文將介紹如何使用 Node.js 搭建一個基本的 Vue 項目,需要的朋友可以參考下
    2023-12-12
  • Koa2框架快速入門與基本使用方式

    Koa2框架快速入門與基本使用方式

    這篇文章主要介紹了Koa2框架快速入門與基本使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論