国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Node 自動化部署的方法

2019-11-19 15:09:21
字體:
來源:轉載
供稿:網友

當我們在更新迭代 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/bashgit reset --hard origin/mastergit clean -fgit pullnpm start

注:這段腳本將會自動在服務器中執行

編寫 js 文件執行腳本

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

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

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

初始化項目

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

首先提交代碼至代碼倉庫(這里是Github),然后進入服務器執行 git pull

這樣,我們就成功部署了我們 Node 實現自動部署的代碼了

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

git push 之后轉到服務器內一看,完美,成功運行

再看看 Github

已經自動觸發了接口,Node 自動化部署成功

最后

此技術不僅僅局限于 Node

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图们市| 始兴县| 闽清县| 长沙县| 老河口市| 阳泉市| 谢通门县| 九台市| 红安县| 苍溪县| 九寨沟县| 屯留县| 长兴县| 南江县| 文登市| 五莲县| 霍林郭勒市| 泌阳县| 永清县| 鹤山市| 宜川县| 阜南县| 治多县| 锡林郭勒盟| 红桥区| 商都县| 科技| 嘉义县| 苏尼特右旗| 瑞安市| 遂昌县| 汾西县| 临西县| 夹江县| 客服| 汶川县| 永福县| 游戏| 江川县| 青浦区| 望城县|