111 lines
2.2 KiB
JavaScript
111 lines
2.2 KiB
JavaScript
/**
|
|
*
|
|
* @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();
|
|
} |