/** * * @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 = '

非master分支推送!

'; logger.info(str); res.write(str); res.end(); } if (data && data.commits && data.commits.length > 0) { str = '

有效推送,正在拉取git更新···

'; logger.info(str); res.write('

有效推送,正在拉取git更新···

'); buildFunction(log4js, res, data) .then(() => { res.end(); }) .catch(() => { res.end(); }); }else{ str = '

本次提交无效!commits为空!

'; 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 = '

拉取git更新完成!开始编译···

'; logger.info(str); res.write(str); }else{ str = '

拉取git代码出错!

'; 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(); }