基于nodejs和码云webhook实现前端单项目自动化部署

node后台

项目目录
在这里插入图片描述
app.js
这里需要一个child_process模块来帮助读取shell脚本

var http = require('http')
var process = require('child_process');
const fs = require('fs');
let options = {
  flags: 'a', // 
  encoding: 'utf8', // utf8编码
 }
 let stderr = fs.createWriteStream('./a.log', options);
 // 创建logger
 let logger = new console.Console(stderr);

http.createServer(function (req, res) {
  // 这里只是简单判断了 请求事件为Push Hook, x-gitee-token 在这里对应的是你git上配置webhook的密码
  if (req.headers['x-gitee-event'] === 'Push Hook' && req.headers['x-gitee-token'] === 'wobuzhidao') {
    logger.log('start build')
    // 读取shell脚本
    process.exec(__dirname +'/auto_build.sh', function (err, sto) {
      logger.log('部署成功', sto);
    })
  }else {
    logger.log('非法访问')
  }
}).listen(7777,()=> { logger.log('开始监听github webhook')})

这个7777端口记得开反向代理

autu_build.sh

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#git项目路径
gitPath="你的前端存放服务器目录"
#git 网址
gitHttp="你的前端git地址"

echo "Web站点路径:$gitPath"

error_exit() {
  echo "经过了判断 $1"
  echo "$1" 1>&2
  exit 1
}

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        npm install || error_exit "下载包失败"
    	npm run build  || error_exit "打包失败"
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

把这个后台项目放到服务器上用pm2启动app.js

如果报git权限问题,请教了后台 执行了 好像是更改权限为777的意思

chmod -R 777  /www/wwwroot

如果fatal: could not read Username for ‘https://gitee.com’: No such device or address的话,就把你的git地址 修改为

https://[userName]:[password]@gitee.com/[username]/xxx.git

配置码云webhook

在这里插入图片描述
这里的url 就是你node服务跑的那个域名
这里的密码对于的是node服务app.js里面解析的header里面的x-gitee-token

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值