node+gitee实现自动化部署

1,066 阅读1分钟

1. gitee中配置webhook

如图

2. 服务器中部署用于接收webhook请求的服务器

新建目录并安装依赖

mkdir webHookServer && cd webHookServer
// pm2是一个进程管理工具,可以用它来管理你的node进程,主要是用来重启你的服务器
npm install pm2 -g

bash脚本,实现代码拉取和重启服务器

touch deploy.sh
chmod 770 deploy.sh
vim deploy.sh

#!/bin/bash
echo "Start deployment"
# 假设你要自动化部署的服务器位于/root/yourServer
cd /root/yourServer
git pull
npm install
# 重启你的服务器
pm2 delete app
pm2 start app.js

webHook服务器

// 安装依赖,此处使用express
npm init
npm install express body-parser
/* whServer.js */
const express = require('express')
const bodyParser = require('body-parser')
const router = express.Router()
const cp = require('child_process')

router.post('/wh', (req, res) => {
  let password = req.body.password
  // password填写gitee中webhook设置的密码
  if(password === 'yourpassword') {
    console.log(password)
    // 运行bash脚本
    cp.execFile('/root/webHookServer/deploy.sh', (error, stdout, stderr) => {
      if (error) {
        throw error;
      }
      console.log(stdout);
      console.log('部署成功')
    })
    
    res.status(200).json({
      msg: 'deploy success!'
    })
  }
  // 密码不对,拒绝服务
  else {
    res.status(400).json({
      msg: 'reject'
    })
  }
  
})
const server = express()
server.use(bodyParser.urlencoded({extended: false}));
server.use(bodyParser.json());
server.use(router)
server.listen(3333, function() {
  console.log('webHook服务器开始运行')
})

部署webHook服务器

// 我用的是centos7, 下面这条命令在后台运行上面的webhook服务器
node whServer.js &

3. 测试一下

回到gitee点击webhook的测试,此时应该能够收到deploy success!的响应并实现了服务器重启