初始化项目
This commit is contained in:
commit
d876ae9948
15 files changed
+2922
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
/node_modules
|
||||||
|
/logs
|
||||||
|
.DS_Store
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
const express = require('express');
|
||||||
|
const path = require('path');
|
||||||
|
const bodyParser = require('body-parser');
|
||||||
|
const app = express();
|
||||||
|
const log4js = require('log4js');
|
||||||
|
|
||||||
|
const blog = require('./task/blog/blog');
|
||||||
|
const webpage = require('./task/webpage/webpage');
|
||||||
|
const glassplayer = require('./task/glassplayer/glassplayer');
|
||||||
|
|
||||||
|
log4js.configure('./logconfig.json');
|
||||||
|
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
app.use(require('body-parser').urlencoded({ extended: true }));
|
||||||
|
|
||||||
|
const PORT = 8090;
|
||||||
|
|
||||||
|
app.get('/', function (req, res) {
|
||||||
|
res.send('Hello World');
|
||||||
|
})
|
||||||
|
|
||||||
|
try{
|
||||||
|
blog.use(app,log4js);
|
||||||
|
} catch(err) {
|
||||||
|
logger.error(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
webpage.use(app,log4js);
|
||||||
|
} catch(err) {
|
||||||
|
logger.error(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
glassplayer.use(app,log4js);
|
||||||
|
} catch(err) {
|
||||||
|
logger.error(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
const server = app.listen(PORT, function () {
|
||||||
|
|
||||||
|
//let host = server.address().address
|
||||||
|
//let port = server.address().port
|
||||||
|
|
||||||
|
console.log("应用实例,访问地址为 http://localhost:" + PORT)
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"appenders": {
|
||||||
|
"console": {
|
||||||
|
"type": "console"
|
||||||
|
},
|
||||||
|
"trace": {
|
||||||
|
"type": "file",
|
||||||
|
"filename": "logs/access.log",
|
||||||
|
"maxLogSize ": 31457280
|
||||||
|
},
|
||||||
|
"http": {
|
||||||
|
"type": "logLevelFilter",
|
||||||
|
"appender": "trace",
|
||||||
|
"level": "trace",
|
||||||
|
"maxLevel": "trace"
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"type": "dateFile",
|
||||||
|
"filename": "logs/app-info.log",
|
||||||
|
"pattern": ".yyyy-MM-dd",
|
||||||
|
"layout": {
|
||||||
|
"type": "pattern",
|
||||||
|
"pattern": "[%d{ISO8601}][%5p %z %c] %m"
|
||||||
|
},
|
||||||
|
"compress": true
|
||||||
|
},
|
||||||
|
"maxInfo": {
|
||||||
|
"type": "logLevelFilter",
|
||||||
|
"appender": "info",
|
||||||
|
"level": "debug",
|
||||||
|
"maxLevel": "info"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"type": "dateFile",
|
||||||
|
"filename": "logs/app-error.log",
|
||||||
|
"pattern": ".yyyy-MM-dd",
|
||||||
|
"layout": {
|
||||||
|
"type": "pattern",
|
||||||
|
"pattern": "[%d{ISO8601}][%5p %z %c] %m"
|
||||||
|
},
|
||||||
|
"compress": true
|
||||||
|
},
|
||||||
|
"minError": {
|
||||||
|
"type": "logLevelFilter",
|
||||||
|
"appender": "error",
|
||||||
|
"level": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"categories": {
|
||||||
|
"default": {
|
||||||
|
"appenders": [
|
||||||
|
"console",
|
||||||
|
"http",
|
||||||
|
"maxInfo",
|
||||||
|
"minError"
|
||||||
|
],
|
||||||
|
"level": "all"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+2115
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "webhook",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "webhook service",
|
||||||
|
"main": "app.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"start": "node app.js"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"webhook"
|
||||||
|
],
|
||||||
|
"author": "tonydeng",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {},
|
||||||
|
"dependencies": {
|
||||||
|
"exec-cmd": "^2.0.1",
|
||||||
|
"express": "^4.16.3",
|
||||||
|
"fs-extra": "^6.0.1",
|
||||||
|
"log4js": "^2.5.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
|
||||||
|
const cpFile = require('cp-file');
|
||||||
|
const del = require('delete');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
//const srcPath = '/Users/dengtongyu/code/webpage/build/pages/test/';
|
||||||
|
//const targetPath = '/data/wwwroot/blog/';
|
||||||
|
const srcPath = '/Users/dengtongyu/code/webpage/build/pages/test/';
|
||||||
|
const targetPath = '/Users/dengtongyu/code/webpage/build/pages/ceshi/';
|
||||||
|
|
||||||
|
exports.use = function(app,logger) {
|
||||||
|
app.post('/blog', function (req, res) {
|
||||||
|
let data = req.body;
|
||||||
|
let str = '';
|
||||||
|
//console.log(data.commits, data.commits.length);
|
||||||
|
if(data && data.commits) {
|
||||||
|
for (let i = 0; i < data.commits.length; i++) {
|
||||||
|
let add = data.commits[i].added;
|
||||||
|
let rm = data.commits[i].removed;
|
||||||
|
let mdf = data.commits[i].modified;
|
||||||
|
|
||||||
|
if(add.length > 0) {
|
||||||
|
for (let index = 0; index < add.length; index++) {
|
||||||
|
//let target = targetPath + path.parse(add[index]).dir;
|
||||||
|
let target = targetPath + add[index];
|
||||||
|
let src = srcPath + add[index];
|
||||||
|
try{
|
||||||
|
cpFile(src, target).then(() => {
|
||||||
|
str = str + ('<p>增加:'+ target +'</p>');
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
logger.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
str = str + '<p>增加:无</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rm.length > 0) {
|
||||||
|
for (let index = 0; index < rm.length; index++) {
|
||||||
|
let target = targetPath + rm[index];
|
||||||
|
del([target], {force: true}, function(err, deleted) {
|
||||||
|
if(err) {
|
||||||
|
logger.error(err);
|
||||||
|
}else{
|
||||||
|
str = str + ('<p>删除:'+ deleted +'</p>');
|
||||||
|
}
|
||||||
|
console.log(deleted);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
str = str + '<p>删除:无</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(mdf.length > 0) {
|
||||||
|
for (let index = 0; index < mdf.length; index++) {
|
||||||
|
let target = targetPath + mdf[index];
|
||||||
|
let src = srcPath + mdf[index];
|
||||||
|
try{
|
||||||
|
cpFile(src, target).then(() => {
|
||||||
|
str = str + ('<p>修改:'+ target +'</p>');
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
logger.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
str = str + '<p>修改:无</p>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
str = '<p>post参数缺失!</p>'
|
||||||
|
}
|
||||||
|
res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
|
||||||
|
res.end(str);
|
||||||
|
logger.info(JSON.stringify(data));
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-03 17:11:02
|
||||||
|
* @version 0.0.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
const run = require('exec-cmd');
|
||||||
|
const path = require('path');
|
||||||
|
const blogUpdate = require('./updatefile');
|
||||||
|
|
||||||
|
const gitPath = '/var/local/githook/blog/';
|
||||||
|
|
||||||
|
exports.use = (app, log4js) => {
|
||||||
|
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
app.post('/blog', (req, res) => {
|
||||||
|
|
||||||
|
let data = req.body;
|
||||||
|
|
||||||
|
if(data.ref != 'refs/heads/master') return;
|
||||||
|
|
||||||
|
let updateCode = async () => {
|
||||||
|
let str = '';
|
||||||
|
if (data && data.commits && data.commits.length > 0) {
|
||||||
|
let cmd = await run('git pull origin master', {
|
||||||
|
cwd: gitPath
|
||||||
|
})
|
||||||
|
.then((arr) => {
|
||||||
|
let res = arr[0];
|
||||||
|
let code = arr[1];
|
||||||
|
let buffer = arr[2];
|
||||||
|
logger.info(res, code);
|
||||||
|
|
||||||
|
return arr; //return run(targetPath + ' git remote show', {stdio: 'inherit'})
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
});
|
||||||
|
if(cmd && cmd[1] == 0) {
|
||||||
|
let updateString = await blogUpdate.use(data, log4js);
|
||||||
|
str += updateString;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str += '<p>post数据缺失!</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCode().then((html) => {
|
||||||
|
res.writeHead(200, {
|
||||||
|
"Content-Type": "text/html;charset=utf-8"
|
||||||
|
});
|
||||||
|
res.end(html);
|
||||||
|
logger.info(JSON.stringify(data));
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-05 14:36:53
|
||||||
|
* @version 0.0.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
|
||||||
|
//const srcPath = '/Users/dengtongyu/code/webpage/build/pages/test/';
|
||||||
|
//const targetPath = '/Users/dengtongyu/code/webpage/build/pages/ceshi/';
|
||||||
|
const srcPath = '/var/local/githook/blog/';
|
||||||
|
const targetPath = '/data/wwwroot/blog/';
|
||||||
|
|
||||||
|
|
||||||
|
exports.use = async (data, log4js) => {
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
for (let i = 0; i < data.commits.length; i++) {
|
||||||
|
let add = data.commits[i].added;
|
||||||
|
let rm = data.commits[i].removed;
|
||||||
|
let mdf = data.commits[i].modified;
|
||||||
|
|
||||||
|
if (add.length > 0) {
|
||||||
|
for (let index = 0; index < add.length; index++) {
|
||||||
|
let target = targetPath + add[index];
|
||||||
|
let src = srcPath + add[index];
|
||||||
|
|
||||||
|
let addflie = await fs.copy(src, target)
|
||||||
|
.then(() => {
|
||||||
|
return '<p>增加:' + target + '</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
|
||||||
|
str += addflie;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str = str + '<p>增加:无</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rm.length > 0) {
|
||||||
|
for (let index = 0; index < rm.length; index++) {
|
||||||
|
let target = targetPath + rm[index];
|
||||||
|
|
||||||
|
let rmfile = await fs.remove(target)
|
||||||
|
.then(() => {
|
||||||
|
return '<p>删除:' + target + '</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
str += rmfile;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
str += '<p>删除:无</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mdf.length > 0) {
|
||||||
|
for (let index = 0; index < mdf.length; index++) {
|
||||||
|
let target = targetPath + mdf[index];
|
||||||
|
let src = srcPath + mdf[index];
|
||||||
|
|
||||||
|
let mdffile = await fs.copy(src, target)
|
||||||
|
.then(() => {
|
||||||
|
return '<p>修改:' + target + '</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
|
||||||
|
str += mdffile;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
str += '<p>修改:无</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-17 11:18:41
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const run = require('exec-cmd');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
let cmdPath = '';
|
||||||
|
|
||||||
|
exports.use = async (data, log4js, debug) => {
|
||||||
|
if(debug) {
|
||||||
|
cmdPath = '/Users/dengtongyu/www/glass-player';
|
||||||
|
}else{
|
||||||
|
cmdPath = '/var/local/githook/glass-player/';
|
||||||
|
}
|
||||||
|
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
let build = false;
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
for (let i = 0; i < data.commits.length; i++) {
|
||||||
|
let add = data.commits[i].added;
|
||||||
|
let rm = data.commits[i].removed;
|
||||||
|
let mdf = data.commits[i].modified;
|
||||||
|
|
||||||
|
if (add.length > 0) {
|
||||||
|
for (let index = 0; index < add.length; index++) {
|
||||||
|
|
||||||
|
build = checkPath(add[index]);
|
||||||
|
|
||||||
|
if(build) {
|
||||||
|
str = await buildPlayer(build, logger);
|
||||||
|
return {str:str, build:build};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mdf.length > 0) {
|
||||||
|
for (let index = 0; index < mdf.length; index++) {
|
||||||
|
|
||||||
|
build = checkPath(mdf[index]);
|
||||||
|
|
||||||
|
if(build) {
|
||||||
|
str = await buildPlayer(build, logger);
|
||||||
|
return {str:str, build:build};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rm.length > 0) {
|
||||||
|
for (let index = 0; index < rm.length; index++) {
|
||||||
|
|
||||||
|
build = checkPath(rm[index]);
|
||||||
|
|
||||||
|
if(build) {
|
||||||
|
str = await buildPlayer(build, logger);
|
||||||
|
return {str:str, build:build};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
str = '<p>本次提交没有src、public更新</p>';
|
||||||
|
return {str:str, build:build};
|
||||||
|
}
|
||||||
|
|
||||||
|
checkPath = (path) => {
|
||||||
|
let src = new RegExp('src/').test(path);
|
||||||
|
let pub = new RegExp('public/').test(path);
|
||||||
|
return (src || pub);
|
||||||
|
}
|
||||||
|
|
||||||
|
buildPlayer = async (build, logger) => {
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
let cmd = await run('npm run build', {
|
||||||
|
cwd: cmdPath
|
||||||
|
});
|
||||||
|
|
||||||
|
if(cmd && cmd.length && cmd.length > 0) {
|
||||||
|
let desc = cmd[0];
|
||||||
|
let code = cmd[1];
|
||||||
|
let buffer = cmd[2];
|
||||||
|
logger.info(desc, code);
|
||||||
|
str = '<p>glassplayer构建完成!</p>';
|
||||||
|
}else{
|
||||||
|
str = '<p>glassplayer构建失败!</p>';
|
||||||
|
logger.info(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-07-12 15:42:53
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const run = require('exec-cmd');
|
||||||
|
const path = require('path');
|
||||||
|
const build = require('./build');
|
||||||
|
const filesUpdate = require('./updatefile');
|
||||||
|
|
||||||
|
const debug = true;
|
||||||
|
|
||||||
|
let gitPath = '';
|
||||||
|
|
||||||
|
if(debug) {
|
||||||
|
gitPath = '/Users/dengtongyu/www/glass-player';
|
||||||
|
}else{
|
||||||
|
gitPath = '/var/local/githook/glass-player/';
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.use = (app, log4js) => {
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
app.post('/glassplayer', (req, res) => {
|
||||||
|
let data = req.body;
|
||||||
|
logger.info(JSON.stringify(data));
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
res.writeHead(200, {
|
||||||
|
"Content-Type": "text/html;charset=utf-8"
|
||||||
|
});
|
||||||
|
|
||||||
|
if(data.ref != 'refs/heads/master') {
|
||||||
|
str = '<p>非master分支推送!</p>';
|
||||||
|
logger.info(str);
|
||||||
|
res.write(str);
|
||||||
|
res.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (data && data.commits && data.commits.length > 0) {
|
||||||
|
str = '<p>有效推送,正在拉取git更新···</p>';
|
||||||
|
logger.info(str);
|
||||||
|
res.write('<p>有效推送,正在拉取git更新···</p>');
|
||||||
|
|
||||||
|
buildFunction(log4js, res, data)
|
||||||
|
.then(() => {
|
||||||
|
res.end();
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
res.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
str = '<p>本次提交无效!commits为空!</p>';
|
||||||
|
res.write(str);
|
||||||
|
res.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let buildFunction = async (log4js,res,data) => {
|
||||||
|
const logger = log4js.getLogger('buildFunction');
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
let cmd = await run('git pull origin master', {
|
||||||
|
cwd: gitPath
|
||||||
|
});
|
||||||
|
|
||||||
|
logger.info(cmd);
|
||||||
|
|
||||||
|
if(cmd && cmd.length && cmd.length > 0) {
|
||||||
|
let desc = cmd[0];
|
||||||
|
let code = cmd[1];
|
||||||
|
let buffer = cmd[2];
|
||||||
|
logger.info(desc, code);
|
||||||
|
str = '<p>拉取git更新完成!开始编译···</p>';
|
||||||
|
logger.info(str);
|
||||||
|
res.write(str);
|
||||||
|
}else{
|
||||||
|
str = '<p>拉取git代码出错!</p>';
|
||||||
|
logger.info(str);
|
||||||
|
res.write(str);
|
||||||
|
res.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let buildResult = null;
|
||||||
|
|
||||||
|
if(cmd && cmd[1] == 0) {
|
||||||
|
buildResult = await build.use(data, log4js, debug);
|
||||||
|
logger.info(buildResult);
|
||||||
|
str = buildResult.str;
|
||||||
|
logger.info(str);
|
||||||
|
res.write(str);
|
||||||
|
}
|
||||||
|
if(buildResult.build) {
|
||||||
|
updateString = await filesUpdate.use(buildResult.data, log4js, debug);
|
||||||
|
logger.info(updateString);
|
||||||
|
str = updateString;
|
||||||
|
//logger.info(str);
|
||||||
|
res.write(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
//res.end();
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-17 10:42:03
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
|
||||||
|
let srcPath = '';
|
||||||
|
let targetPath = '';
|
||||||
|
|
||||||
|
exports.use = async (data, log4js, debug) => {
|
||||||
|
if(debug) {
|
||||||
|
srcPath = '/Users/dengtongyu/www/glass-player/build/';
|
||||||
|
targetPath = '/Users/dengtongyu/www/build/';
|
||||||
|
}else{
|
||||||
|
srcPath = '/var/local/githook/glass-player/build/';
|
||||||
|
targetPath = '/data/wwwroot/glassplayer/';
|
||||||
|
}
|
||||||
|
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
let target = targetPath;
|
||||||
|
let src = srcPath;
|
||||||
|
|
||||||
|
let flie = await fs.copy(src, target)
|
||||||
|
.then(() => {
|
||||||
|
str = '<p>部署:glassplayer完成!</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
str = '<p>部署:glassplayer出错!</p>';
|
||||||
|
});
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-17 11:18:41
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const run = require('exec-cmd');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
//const cmdPath = '/Users/dengtongyu/code/webpage/';
|
||||||
|
const cmdPath = '/var/local/githook/webpage/';
|
||||||
|
const rootPath = 'src/pages';
|
||||||
|
|
||||||
|
exports.use = async (data, log4js) => {
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
let buildPath = {};
|
||||||
|
|
||||||
|
for (let i = 0; i < data.commits.length; i++) {
|
||||||
|
let add = data.commits[i].added;
|
||||||
|
let rm = data.commits[i].removed;
|
||||||
|
let mdf = data.commits[i].modified;
|
||||||
|
|
||||||
|
if (add.length > 0) {
|
||||||
|
for (let index = 0; index < add.length; index++) {
|
||||||
|
let name = path.relative(rootPath, add[index]);
|
||||||
|
logger.info(name);
|
||||||
|
let re = /^\./
|
||||||
|
let result = re.test(name);
|
||||||
|
logger.info(result);
|
||||||
|
if (!result) {
|
||||||
|
name = name.split('/')[0];
|
||||||
|
buildPath[name] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mdf.length > 0) {
|
||||||
|
for (let index = 0; index < mdf.length; index++) {
|
||||||
|
let name = path.relative(rootPath, mdf[index]);
|
||||||
|
logger.info(name);
|
||||||
|
let re = /^\./
|
||||||
|
let result = re.test(name);
|
||||||
|
logger.info(result);
|
||||||
|
if (!result) {
|
||||||
|
name = name.split('/')[0];
|
||||||
|
buildPath[name] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
if (JSON.stringify(buildPath) == '{}') {
|
||||||
|
str = '<p>本次提交没有pages更新</p>'
|
||||||
|
} else {
|
||||||
|
for (let key in buildPath) {
|
||||||
|
let cmd = await run('node app pack -n ' + key, {
|
||||||
|
cwd: cmdPath
|
||||||
|
})
|
||||||
|
.then((arr) => {
|
||||||
|
let res = arr[0];
|
||||||
|
let code = arr[1];
|
||||||
|
let buffer = arr[2];
|
||||||
|
logger.info(res, code);
|
||||||
|
|
||||||
|
str += '<p>' + key + '构建完成!</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
str += '<p>' + key + '构建失败!</p>';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {str:str,data:buildPath};
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-17 10:42:03
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
|
||||||
|
const srcPath = '/var/local/githook/webpage/build/pages/';
|
||||||
|
const targetPath = '/data/wwwroot/node/pages/';
|
||||||
|
|
||||||
|
|
||||||
|
exports.use = async (data, log4js) => {
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
let str = '';
|
||||||
|
|
||||||
|
for (let key in data) {
|
||||||
|
let target = targetPath + key;
|
||||||
|
let src = srcPath + key;
|
||||||
|
let flie = await fs.copy(src, target)
|
||||||
|
.then(() => {
|
||||||
|
str += '<p>部署:' + key + '完成!</p>';
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
str += '<p>部署:' + key + '出错!</p>';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* @authors Tony.Deng (dengtongyu123@163.com)
|
||||||
|
* @date 2018-05-17 10:07:16
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
const run = require('exec-cmd');
|
||||||
|
const path = require('path');
|
||||||
|
const build = require('./build');
|
||||||
|
const filesUpdate = require('./updatefile');
|
||||||
|
|
||||||
|
//const gitPath = '/Users/dengtongyu/code/webpage/';
|
||||||
|
const gitPath = '/var/local/githook/webpage/';
|
||||||
|
|
||||||
|
exports.use = (app, log4js) => {
|
||||||
|
const logger = log4js.getLogger(path.parse(__filename).name);
|
||||||
|
|
||||||
|
app.post('/webpage', (req, res) => {
|
||||||
|
let data = req.body;
|
||||||
|
|
||||||
|
if(data.ref != 'refs/heads/master') return;
|
||||||
|
|
||||||
|
let updateCode = async () => {
|
||||||
|
let str = '';
|
||||||
|
if (data && data.commits && data.commits.length > 0) {
|
||||||
|
let cmd = await run('git pull origin master', {
|
||||||
|
cwd: gitPath
|
||||||
|
})
|
||||||
|
.then((arr) => {
|
||||||
|
let res = arr[0];
|
||||||
|
let code = arr[1];
|
||||||
|
let buffer = arr[2];
|
||||||
|
logger.info(res, code);
|
||||||
|
|
||||||
|
return arr;
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
logger.error(err);
|
||||||
|
});
|
||||||
|
|
||||||
|
let buildObj = null;
|
||||||
|
|
||||||
|
if(cmd && cmd[1] == 0) {
|
||||||
|
buildObj = await build.use(data, log4js);
|
||||||
|
logger.info(buildObj);
|
||||||
|
str += buildObj.str;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(JSON.stringify(buildObj.data) != '{}') {
|
||||||
|
updateString = await filesUpdate.use(buildObj.data, log4js);
|
||||||
|
str += updateString;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str += '<p>post数据缺失!</p>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateCode().then((html) => {
|
||||||
|
res.writeHead(200, {
|
||||||
|
"Content-Type": "text/html;charset=utf-8"
|
||||||
|
});
|
||||||
|
res.end(html);
|
||||||
|
logger.info(JSON.stringify(data));
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in new issue
Block a user