diff --git a/.gitignore b/.gitignore index 936e5c5..9d16f0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /node_modules/ /package-lock.json +/zips/ diff --git a/package.json b/package.json index 4746766..ff2d117 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "author": "kubbo", "dependencies": { "express": "^4.17.3", + "fs-extra": "^10.0.1", "helmet": "^5.0.2", "mysql": "^2.18.1", "uuid": "^8.3.2" diff --git a/rest/autodeploy/confirmZip.js b/rest/autodeploy/confirmZip.js new file mode 100644 index 0000000..589b713 --- /dev/null +++ b/rest/autodeploy/confirmZip.js @@ -0,0 +1,18 @@ +const dbUtils = require("../../utils/dbUitls"); +const fse = require("fs-extra"); +module.exports = { + action: "/node/autodeploy/confirmZip", + method: "post", + execute: (request, response) => { + let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'` + dbUtils.query(sql).then(res => { + let info = res?.[0] + if (info?.id) { + response.send({code: 0}) + } else response.send({code: 1, err: "无法找到git信息"}) + }).catch(err => { + console.log(err) + response.send({code: 1, err: err.sqlMessage}) + }) + } +} diff --git a/rest/autodeploy/download.js b/rest/autodeploy/download.js new file mode 100644 index 0000000..4bc19c9 --- /dev/null +++ b/rest/autodeploy/download.js @@ -0,0 +1,30 @@ +const dbUtils = require("../../utils/dbUitls"); +const fse = require("fs-extra"); +module.exports = { + action: "/node/autodeploy/download", + method: "post", + execute: (request, response) => { + let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'` + dbUtils.query(sql).then(res => { + let info = res?.[0] + if (info?.id) { + response.send({code: 0}) + fse.emptyDir('../zips/dist', err => { + if (!err) { + execute(`cd ../zips&&git clone ${info.git} ./dist`) + .then(() => execute(`cd ../zips/dist&&git checkout ${info.branch}`)) + .then(() => execute(`cd ../zips/dist&&npm i&&npm run build`)) + .catch(err => { + console.log(err) + }) + } else { + console.log(err) + } + }) + } else response.send({code: 1, err: "无法找到git信息"}) + }).catch(err => { + console.log(err) + response.send({code: 1, err: err.sqlMessage}) + }) + } +} diff --git a/rest/autodeploy/getZip.js b/rest/autodeploy/getZip.js new file mode 100644 index 0000000..cfb0678 --- /dev/null +++ b/rest/autodeploy/getZip.js @@ -0,0 +1,39 @@ +const dbUtils = require("../../utils/dbUitls"); +const {exec} = require("child_process"); +const fse = require('fs-extra') +const execute = cmd => new Promise((resolve, reject) => { + exec(cmd, (err, stdout) => { + if (!err) { + console.log(stdout) + resolve() + } else reject(err) + }) +}) +module.exports = { + action: "/node/autodeploy/getZip", + method: "post", + execute: (request, response) => { + let id = request.query?.id, sql = `select * from node_autodeploy where id='${id}'` + dbUtils.query(sql).then(res => { + let info = res?.[0] + if (info?.id) { + response.send({code: 0}) + fse.emptyDir('../zips/' + info.id, err => { + if (!err) { + execute(`cd ../zips&&git clone ${info.git} ./${info.id}`) + .then(() => execute(`cd ../zips/${info.id}&&git checkout ${info.branch}`)) + .then(() => execute(`cd ../zips/${info.id}&&npm i&&npm run build`)) + .catch(err => { + console.log(err) + }) + } else { + console.log(err) + } + }) + } else response.send({code: 1, err: "无法找到git信息"}) + }).catch(err => { + console.log(err) + response.send({code: 1, err: err.sqlMessage}) + }) + } +}