初始化项目
This commit is contained in:
commit
d876ae9948
15 files changed
+2922
No files matched your search
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user