Bläddra i källkod

发布脚本

master
leiyun 10 månader sedan
incheckning
cb556f7b6d
5 ändrade filer med 114 tillägg och 0 borttagningar
  1. +1
    -0
      .gitignore
  2. +66
    -0
      app.js
  3. +20
    -0
      config.js
  4. +7
    -0
      package.json
  5. +20
    -0
      pm2.json

+ 1
- 0
.gitignore Visa fil

@@ -0,0 +1 @@
node_modules

+ 66
- 0
app.js Visa fil

@@ -0,0 +1,66 @@
const { log } = require('console');
const express = require('express');
const axios = require('axios');
const shell = require('shelljs');
const app = express();
const config = require('./config');
app.use(express.json());

// 身份验证中间件
const authMiddleware = (req, res, next) => {
// const token = req.headers['x-api-key'];
// if (token !== process.env.API_KEY) {
// return res.status(403).json({ error: '未授权访问' });
// }
next();
};

// 部署接口
app.get('/api/doDeploy', authMiddleware, (req, res) => {
let project = req.query.project;
let env = req.query.env;
const dir = config[env].dir;
let cmd = `cd ${dir}/${project} && sh restart.sh ${project}`;
const child = shell.exec(cmd, { async: true, silent: false });
child.stdout.on('data', (data) => {
// 实时推送日志(需配合 WebSocket 或 SSE)
// console.log(`实时输出: ${data}`);
});

child.on('close', (code) => {
console.log(`执行结束: ${code}`);
});
res.json({ code: 0, msg: "执行中" });
})

// 部署接口
app.get('/api/deploy', authMiddleware, async (req, res) => {
let query = req.query;
console.log('query', query);
//从query字符串中获取project参数
let project = query.project;
let env = query.env;
console.log("project", project, ",env", env);
if (!project) {
return res.status(200).json({ code: 1, msg: 'project项目参数错误' });
}
if (!env) {
return res.status(200).json({ code: 1, msg: 'env项目参数错误' });
}
const dir = config[env].dir;
const ipList = config[env].ipList;
//发起http请求
try {
let promiseAll = [];
for (let ip of ipList) {
promiseAll.push(axios.get(`http://${ip}:7015/api/doDeploy?project=${project}&env=${env}`));
}
let result = await Promise.all(promiseAll);
return res.json({ code: 0, msg: `${project}部署中` });; // 将第三方 API 数据返回客户端
} catch (error) {
log(error);
return res.status(500).json({ error: '请求失败' });
}
});

app.listen(7015, () => console.log('服务运行中: http://localhost:7015'));

+ 20
- 0
config.js Visa fil

@@ -0,0 +1,20 @@

const kezhou = {
dir: "/data/front/git",
ipList: [
"172.16.0.66",
"172.16.0.67",
"172.16.0.68",
"172.16.0.69",
]
}
const live = {
dir: "/home/program/front/git",
ipList: [
"127.0.0.1",
]
}


exports.kezhou = kezhou;
exports.live = live;

+ 7
- 0
package.json Visa fil

@@ -0,0 +1,7 @@
{
"dependencies": {
"axios": "^1.9.0",
"express": "^5.1.0",
"shelljs": "^0.9.2"
}
}

+ 20
- 0
pm2.json Visa fil

@@ -0,0 +1,20 @@
{
"apps": [
{
"name": "publish-web",
"script": "app.js",
"cwd": "/home/program/front/git/publish_web",
"exec_mode": "cluster",
"instances": 1,
"max_memory_restart": "3G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {

},
"error_file": "/data/pm2/logs/publish-web-err.log",
"out_file": "/data/pm2/logs/publish-web-out.log"
}
]
}

Laddar…
Avbryt
Spara